Я попытался настроить задание root cron для запуска скрипта Bash от имени root, чтобы он выполнялся с минутой 7, 37, каждый час, каждый день месяца, каждый месяц. Этот скрипт находится в /usr/bin
и назван tunlrupdate.sh
. Обновляет DNS Tunlr.
$ ls -l /usr/bin/tunlrupdate.sh
-rwxr-xr-x 1 root root 2133 Sep 24 15:42 /usr/bin/tunlrupdate.sh
Этот скрипт Bash доступен здесь .
При запуске сценарий пишет, что происходит в журнале, расположенном в /var/log/tunlr.log
Чтобы добавить это задание root cron, я использовал стандарт crontab для root
sudo crontab -e
И вставил эти 2 строки в конце. Я ожидаю, что cron запустит скрипт от имени пользователя 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
Более поздняя команда sudo crontab -l
подтвердила, что задание cron было вставлено.
Я перезагрузил Ubuntu и проверял в файле журнала, правильно ли запущено задание cron. Однако в лог-файле ничего нет, что /var/log/tunlr.log
означает, что задание никогда не запускалось успешно.
Я проверял, что если я запускаю скрипт из командной строки
sudo /usr/bin/tunlrupdate.sh
тогда файл журнала обновляется соответственно.
Почему эта работа cron не выполняется, как запланировано, в моей системе?
ОБНОВЛЕНИЕ 1: Все предложенные решения пока не работают. Я благодарю Олли за CLI, чтобы перечислить системный журнал sudo grep CRON /var/log/syslog
. Однако я получил ошибку 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)
с предложенным PATH = вставка и использование абсолютного пути от корня для функций в сценарии или без предлагаемых здесь решений. Я все еще получаю эту ошибку.
После некоторого поиска я обнаружил ошибку в файле, /usr/lib/php5/maxlifetime
как описано здесь :Change #!/bin/sh -e --> #!/bin/sh -x
Затем перечисление журнала ошибок CRON в моей системе
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)
Я до сих пор не могу выполнить скрипт bash. На этот раз ошибка не отображается в журнале. Чтобы получить уверенность, что это не было содержанием сценария, я сократил сценарий до следующих 3 строк:
#!/bin/bash
LOGFILE=/var/log/tunlr.log
echo $LOGFILE >> $LOGFILE
Я до сих пор не справляюсь с работой cron. Ничего не написано в файле журнала. Так может даже пустой скрипт не запустится в cron? Я не понимаю Я знаю, пытаясь сценарий сводится к этим 2 строкам:
#!/bin/bash
exit 0
И все тот же журнал ошибок. Сценарий cron не проходит ...