Як можна запланувати нічне перезавантаження?


81

У мене виникають періодичні проблеми із запуском певної програми, XBMC. Якщо я регулярно користуюся XBMC, у мене, мабуть, не виникає проблем, але якщо я залишаю його без нагляду більше 12 годин, мені потрібно перезавантажити, щоб він знову працював.

Я знаю, що заплановане перезавантаження НЕ є відповіддю, але, поки я не можу розібратися в проблемі, мені потрібно запланувати перезавантаження кожного ранку, щоб моя дружина могла використовувати його, якщо я не вдома, і він не викинеться у вікно :)

Хто-небудь, хто приймає?

Відповіді:


133

Я б використовував cron (його вже слід встановити):

Edit crontab:

sudo crontab -e

Перший раз, можливо, вам доведеться вибрати бажаний редактор (наприклад, нано)

Вставте такий рядок

0 4   *   *   *    /sbin/shutdown -r +5

на дні. Пояснення:

m      h    dom        mon   dow       command
minute hour dayOfMonth Month dayOfWeek commandToRun

тому лінія

  0 4   *   *   *    /sbin/shutdown -r +5

перезавантажуватиме вашу систему щодня о 4:05 ранку. (4:00 + 5 хвилин)

Ctrl+ X, Y, EnterПовинні вивести вас з кронтаб (при використанні нано)

Примітка: можливо, вам доведеться запускати crontab -eяк root, тому що для вимкнення потрібен root. crontab -eвідкриває файл у / tmp замість фактичного crontab, щоб він міг перевірити ваш новий crontab на наявність помилок. Якщо помилок не буде, то фактичний код крона буде оновлений.


1
Дякуємо за інформацію. Єдине, що мені довелося зробити, - це змінити команду на / sbin / shutdown, щоб змусити мене працювати.

1
це не працювало для мене. використання обох crontab -eі sudo crontab -eзберігає файл у тимчасове місце, коли ви йдете до виходу (наприклад, /tmp/crontab.Y88XQl/crontab) і завдання не виконується. Мене змусили редагувати / etc / crontab безпосередньо
wal

@wal "crontab -e відкриває файл у / tmp замість фактичного crontab, щоб він міг перевірити ваш новий crontab на помилки та не дозволить вам перезаписати фактичний crontab на ці помилки. Якщо помилок немає, то ваш фактичний crontab буде оновлюватись. " unix.stackexchange.com/questions/197504/…
Кріст,

14

Додавання цього параметра /etc/cron.daily/zz-rebootмає працювати:

#!/bin/sh
shutdown -r now

І sudo chmod a+x /etc/cron.daily/zz-reboot. Префікс "zz" змусить його остаточно закінчуватися з усіх інших сценаріїв у цьому каталозі. Перевірте, /etc/crontabякий час доби насправді відбудеться:

grep daily /etc/crontab | awk '{print $2 ":" $1}'

Якщо це не вдасться, то "звичайний" запис крона може працювати і через sudo crontab -e

MINUTE HOUR * * * shutdown -r now

І нарешті, якщо ви хочете зробити одноразові перезавантаження, ви можете скористатися at:

echo "shutdown -r now" | sudo at 04:30

наскільки я знаю, це перезавантажить вашу систему в той самий час, коли ви створювали цей файл щодня, будь ласка, виправте мене, якщо я помиляюся
sBlatt

1
Не зовсім: він перезавантажується раз на день у будь-який час, коли працює cron.daily, що трохи непередбачувано. Якщо ви не anacronвстановили, це місцевий час о 06:25, що може бути нормальним (або може бути жахливим, якщо ви ранній стояк). Якщо ви зробите це, на мою думку, це за замовчуванням, це могло б пройти через 10 хвилин після того, як машина вмикається вперше щодня, що буде неприємно. У будь-якому випадку, cron.dailyце не дуже підходить для цього.
poolie

cron.daily працювати щовечора о 6:25 у моїй системі. Зазвичай встановлено випадкову хвилину між 06:00 та 06:59. Дивіться свій / etc / crontab час у вашій системі
elzapp

1
Найбільша проблема використання cron.daily для цього полягає в тому, що це може заважати іншим роботам в cron.daily.
elzapp

1

Вам слід створити сценарій, використовуючи вказівки, які дає Кіс Кук ...

Ви можете просто скопіювати та вставити інформацію нижче в будь-який текстовий редактор та створити zz-rebootфайл у запропонованому каталозі.

Після цього просто запам’ятайте правою кнопкою миші на файл і призначте йому дозвіл на виконання. Якщо ви хочете користуватися терміналом, просто:

sudo chmod +x /etc/cron.daily/zz-reboot

Щоб краще зрозуміти , що ви робите , пам'ятаєте , що в /etcпапці взагалі знайти файли конфігурації і там ви можете знайти cron.hourly, cron.dailyі інші папки хрон. Cron піклується про виконання програм та сценаріїв у визначений час.

Якщо ви хочете бути чіткими щодо часу перезавантаження, просто цифру

sudo crontab -e

тож ви можете редагувати crontabкореневого користувача.

Якщо вам зручніше робити це графічно, ви можете встановити з gnome-графік програмного центру. Якщо ви хочете змінити gnome-scheduleдля користувача root, переконайтеся, що ви запускаєте його з терміналу:

gksudo gnome-schedule

Весело граючи! :)

ps: чудова точка sBlatt! Мені було цікаво, чи є який-небудь спосіб примусити cron.dailyчас виконання вручну.


У / etc / crontab є запис для налаштування часу, але afaik, якщо комп'ютер у цей час не працює, він виконає через кілька хвилин після запуску комп'ютера
sBlatt

1

Я працюю з кронштейнами близько місяця на своїй роботі і планую потужність та перезавантажую. Це дуже просто. Я знаю, що це запитували близько 5 років тому, але якщо у кого-небудь все-таки виникають проблеми, ви можете скористатися цим методом і вам буде встановлено.

відкрити термінал (ctrl + T)

sudo nano /etc/crontab

прокрутіть до кінця і введіть команду нижче

00 6 * * * root reboot 

це встановлено для перезавантаження в 6 ранку щодня, і натисніть клавішу Enter

Якщо ви хочете запланувати потужність живлення на 23:00 щодня, ви можете ввійти

00 23 * * * root poweroff

Мені все-таки потрібно розібратися, як змусити машину використовувати cronjob, коли вона зникла. Я відредагую цю відповідь, як тільки зрозумію.

PS це моя перша в історії відповідь на будь-які форми; сподіваюся, що це комусь допоможе !! : D


3
Є відповідь з тим самим змістом від 5 років тому з більш детальною інформацією та автоматичною перевіркою синтаксису (через crontab -e).
Девід Фоерстер

1
Не забудьте перезапустити cron:sudo /etc/init.d/cron restart
brcebn
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.