Root crontab не працює


10

Чомусь мій кореневий кронтаб, здається, не працює.

Спроба перезавантажити пристрій щовечора опівночі.

Корінь має бути наступним:

crontab -e

Потім додайте:

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

Коли я тестую, використовуючи деякі значення, близькі до поточного часу, нічого не відбувається. Я встановив NTP і переконався, що часовий пояс правильний. Я також уточнюю, використовуючи цілодобовий годинник. Наприклад, щоб перевірити цей рядок зараз (17:35), я намагаюся ввести наступне:

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

Я перевірив час з датою -R. Час запуску crontab приходить і йде, і система не перезавантажується. Що я тут пропускаю?


Просто щоб переконатися, ви закриваєте crontab після редагування, правда? Також, як ви «запустили як root»? Який вихід sudo crontab -l | grep -v '#'?
тердон

Чому це тег debian ? Якщо мова йде про Debian, а не про Ubuntu, будь ласка, запитайте про Unix & Linux .
muru

Тому що я вважаю, що debian є основою Ubuntu.
Атоміклан

Відповіді:


11

У мене є три пропозиції щодо вас.

  1. Викликати кронтаб с crontab -e -u root

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

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

Ось дві корисні веб-сторінки для роботи з кронами:

CRON Тестер

Генератор CRON

Ви також можете обробляти кронштейни акуратно за допомогою webmin .

Крім цього, у вас є принаймні два способи перезавантаження комп'ютера опівночі.

Перший - запустити команду вимкнення як сценарій автоматично при вході в систему, але з визначеним часом як параметром замість "зараз":

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.

Я перевірив це, і він працював на мене. Перезапустив мою систему о 20:23

Щасти!


-3

36 17 * * * тощо.

36 17 - це не спосіб визначити потрібний час у вашому кроні.

перевірте через команду date, щоб побачити, чи працює ваша система в американський час або в Європі

використовуйте 17 36, якщо час євро, а якщо ваша система використовує 24 години, або 5 36, якщо ваша система використовує час США та 12 год


Неправда! Cron не використовує 12-годинний формат часу, а формат завжди мм hh DD MM WD.
Ахті Кому

Будь ласка, прочитайте весь пост наступного разу.
Атоміклан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.