Próbowałem skonfigurować zadanie root cron do uruchamiania skryptu Bash jako root, aby uruchamiał się z minutą 7,37, co godzinę, każdego dnia miesiąca, każdego miesiąca. Ten skrypt znajduje się w /usr/bin
nazwie i nazywa tunlrupdate.sh
. Aktualizuje DNS Tunlr.
$ ls -l /usr/bin/tunlrupdate.sh
-rwxr-xr-x 1 root root 2133 Sep 24 15:42 /usr/bin/tunlrupdate.sh
Ten skrypt Bash jest dostępny tutaj .
Po wywołaniu skrypt zapisuje, co dzieje się w logu znajdującym się w /var/log/tunlr.log
Aby dodać to zadanie root crona, użyłem standardu dla crontab roota
sudo crontab -e
I wstawiłem te 2 linie na końcu. Oczekuję, że cron uruchomi skrypt jako root.
# check for updated Tunlr DNS every 30 minutes at the hour + 7 mn and hour + 37 mn
07,37 * * * * root /usr/bin/tunlrupdate.sh
Późniejsze polecenie sudo crontab -l
potwierdziło, że zadanie cron zostało wstawione.
Zrestartowałem Ubuntu i sprawdzałem w pliku dziennika, czy zadanie cron zostało poprawnie uruchomione. Jednak w pliku dziennika nie ma nic, /var/log/tunlr.log
co oznacza, że zadanie nigdy nie zostało pomyślnie uruchomione.
Sprawdziłem, czy uruchamiam skrypt z wiersza poleceń
sudo /usr/bin/tunlrupdate.sh
następnie plik dziennika jest odpowiednio aktualizowany.
Dlaczego to zadanie cron nie działa zgodnie z planem w moim systemie?
AKTUALIZACJA 1: Wszystkie dotychczas zaproponowane rozwiązania nie działają. Dziękuję Olli za interfejs CLI do wyświetlenia dziennika systemu sudo grep CRON /var/log/syslog
. Jednak dostałem błąd CRON
CRON[13092]: (root) CMD ( [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ]
&& find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php
/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete)
z sugerowaną ŚCIEŻKĄ = wstawienie i użycie ścieżki bezwzględnej z katalogu głównego dla funkcji w skrypcie lub bez sugerowanych rozwiązań tutaj. Nadal pojawia się ten błąd.
Po kilku poszukiwaniach wskazałem błąd w pliku, /usr/lib/php5/maxlifetime
jak wyjaśniono tutaj :Change #!/bin/sh -e --> #!/bin/sh -x
Następnie wyświetlam dziennik błędów CRON w moim systemie
sudo grep CRON /var/log/syslog
Feb 11 18:07:01 Marius-PC CRON[14067]: (root) CMD (root /usr/bin/tunlrupdate.sh)
Feb 11 18:07:01 Marius-PC CRON[14066]: (root) MAIL (mailed 1 byte of output; but got
status 0x00ff, #012)
Nadal nie uruchamiam skryptu bash. Tym razem w dzienniku nie ma błędu. Aby uzyskać pewność, że nie była to treść skryptu, zredukowałem skrypt do następujących 3 wierszy:
#!/bin/bash
LOGFILE=/var/log/tunlr.log
echo $LOGFILE >> $LOGFILE
Nadal nie dostaję pracy crona. W pliku dziennika nic nie jest zapisane. Więc może nawet pusty skrypt nie będzie działał w cronie? Nie rozumiem Wiem, że próbuję skryptu zredukowanego do tych 2 wierszy:
#!/bin/bash
exit 0
I wciąż ten sam dziennik błędów. Skrypt crona nie przechodzi ...