
Информация
У меня есть следующий файл crontab для пользователя root в Debian 10.
root@debian:~# crontab -l
# crontab comments curtailed for serverfault
#
# m h dom mon dow command
30 3 * * * shutdown -r now
Если я запущусь uptime
и who -b
получу результаты последнего раза, когда я делал ручную перезагрузку (вчера около 6 вечера).
root@debian:~# uptime
11:03:19 up 16:29, 1 user, load average: 0.00, 0.01, 0.00
root@debian:~# who -b
system boot 2020-12-26 18:34
Я создал файл crontab вчера около 7 вечера, так что он определенно был готов до наступления целевого времени.
Вопрос
Есть ли причина, по которой это могло не сработать? Можно ли это как-то отладить?
решение1
Проверьте журнал, чтобы увидеть, было ли выполнено задание cron в указанное время.
В Debian cron вошел в систему /var/log/syslog
, проверьте, есть ли сообщения об ошибках, если задание cron было активировано.
Если да, grep cron /var/log/syslog
то было ли что-нибудь зарегистрировано в то время, когда cron должен был выполнить перезагрузку?
Также проверьте, запущена ли служба cron, если да, systemctl status cron.service
то сообщает ли она, что служба активна и включена. Служба cron должна быть запущена для запуска заданий cron.
Проблема также может быть в том, что cron не может найти команду выключения, попробуйте использовать ее /usr/sbin/shutdown -r now
в cron.
Для Debian 12 и новее
Традиционные файлы журналовбыли замененыsystemd-journald
в Debian 12, поэтому вы больше не можете искать в /var/log/syslog
строке using tools . Это также влияет на другие дистрибутивы GNU/Linux. Но вы можете использовать вместо этого и также фильтровать логи прямо там:grep
journalctl
journalctl -u cron