Root crontab не работает

10

По какой-то причине мой корневой crontab не работает.

Попытка перезагрузить устройство каждую ночь в полночь.

В качестве root должно быть указано следующее:

crontab -e

Затем добавьте:

0 0 * * * /sbin/shutdown -r now

Когда я тестирую, используя некоторые значения, закрывающие текущее время, ничего не происходит. Я установил NTP и убедился, что часовой пояс правильный. Я также уточняю использование 24-часовых часов. Например, чтобы проверить эту строку прямо сейчас (5:35 PM), я пытаюсь ввести следующее:

36 17 * * * /sbin/shutdown -r now

Я проверил время с датой -R. Время для запуска crontab приходит и уходит, и система не перезагружается. Что мне здесь не хватает?

Atomiklan
источник
Просто чтобы убедиться, что вы закрываете crontab после редактирования, верно? Кроме того, как вы "работали от имени root"? Какой выход sudo crontab -l | grep -v '#'?
тердон
Почему этот тег отмечен как Debian ? Если речь идет о Debian, а не Ubuntu, пожалуйста, спросите об Unix и Linux .
Муру
Потому что Debian лежит в основе Ubuntu, я верю.
Атомиклан

Ответы:

11

У меня есть три решения для вас.

  1. Вызвать crontab с помощью crontab -e -u root

  2. Убедитесь, что у вас есть пустая строка в конце файла cronjob, что означает, что каждая строка заканчивается новой строкой.

  3. Возможно, вам придется перенаправить вывод в devnull: shutdown -r now > /dev/null

Вот две полезные веб-страницы для cronjobs:

CRON Tester

CRON Generator

Вы также можете аккуратно обрабатывать cronjobs с помощью webmin .

Кроме этого, у вас есть как минимум еще два способа перезагрузить компьютер в полночь.

Один из них - запускать команду shutdown автоматически в качестве сценария при входе в систему, но с определенным временем в качестве параметра вместо «сейчас»:

shutdown -r 00:00

Тем не менее, это приведет к широковещательному сообщению о предстоящем отключении при каждом входе в систему (это может быть совсем не плохо). Что ж, вы также можете сделать это во время загрузки, добавив скрипт в init.d, по-прежнему получая сообщение.

Другое - использовать atкоманду:

at 0am

Введите команду shutdown -r nowи сохраните ее с помощью ctrl + d или выполните скрипт для команды и выполните:

at -f restart_script.sh 0am

Надеюсь, это поможет вам получить желаемый результат.

Ахти Кому
источник
Решение состояло в том, чтобы вывести в dev null. Интересно, почему?
Атомиклан
Это связано с тем, что задание cron имеет собственную среду, в которой нет такой стандартной системы ввода / вывода, которую вы ожидаете, и процесс завершается неудачно, поскольку он пытается передать сообщения в отсутствующий канал вывода. Задание Cron на самом деле сильно отличается от запуска какой-либо команды в терминале, как любой пользователь. Рад слышать, что у вас все получилось.
Ахти Кому
0

Задания System Cron перечислены в файле / etc / crontab. Поэтому редактирование этого файла напрямую поможет вам выполнить команду перезагрузки от имени пользователя root.

следовательно,

$ sudo vi /etc/crontab

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
  23 20 *  *  *  root  shutdown  -r  now

убедитесь, что вы проверили файл журнала Cron после редактирования crontab, так как он сообщит вам, был ли установлен cron успешно.

Я проверил это, и это сработало для меня. Перезагрузил мою систему в 8:23 вечера

Удачи!

rulebreaker4
источник
-3

36 17 * * * и т. Д.

36 17 не способ указать точное время в вашем хрон.

проверьте с помощью команды date, чтобы увидеть, работает ли ваша система по американскому или европейскому времени

используйте 17 36, если европейское время и ваша система использует время 24 ч или 5 36, если ваша система использует время США и 12 ч.

тото
источник
Не правда! Cron не использует 12-часовой формат времени, и формат всегда мм мм чч ДД ММ ШД.
Ахти Кому
Пожалуйста, прочитайте весь пост в следующий раз.
Атомиклан