Як налаштувати Ubuntu на перезавантаження кожного дня у визначений час?


11

Як за допомогою терміналу або файлу bash я можу налаштувати Ubuntu на перезавантаження кожного дня в (скажімо, наприклад, 3:00)?

Іншими словами, я хочу запланувати автоматичне перезавантаження через термінал.

Я не зміг знайти нічого, пов’язаного з цим, в Google або AskUbuntu, і я взагалі досить новачок у Ubuntu (тільки що отримав свою нову Raspberry Pi).

Відповіді:


13

Відредагуйте записи crontab за допомогою crontab -eкоманди (за замовчуванням це редагуватиме поточну crontab користувачів, які ввійшли) та додайте наступний рядок:

0 3 * * * echo $PASSWD | sudo -S reboot
#change $PASSWD with your password

Збережіть файл і перевірте нову запис crontab crontab -l.

Якщо ви хочете використовувати лише:

0 3 * * * sudo reboot

як crontab, це не працює нормально, і ви повинні перевірити цю публікацію, щоб побачити, як можна змусити її працювати.

Або просто додати crontab до файлу crontab кореневого користувача, що пропонує повний шлях для rebootкоманди, використовуючи sudo crontab -e:

0 3 * * * /sbin/reboot

Не могли б ви поставити це в crontab кореня і не надто хвилюватися з приводуecho $PASSWD
Dan

Я цього не знав. Це клоп клона чи це нормально? Я маю на увазі, якщо ви редагуєте crontab як root, то завдання буде виконано лише в тому випадку, якщо ви ввійшли як root? Я думаю, що це неправильно. (або має бути).
NickTux

@ RaduRădeanu Це неправда. Root cronjobs працюватиме без реєстрації як root.
OrangeTux

@OrangeTux Ви маєте рацію, вибачте, я це сказав, тому що я протестував, щоб не дати повний шлях для rebootкоманди. Інакше не вийде. Дивіться мої нові зміни.
Radu Rădeanu

@NikTh Я помилявся, дивіться вище коментар .
Radu Rădeanu

1

Зауважте, що введення пароля з чітким текстом у текстовий файл - це не дуже гарна ідея, тому краще, щоб ця робота запускалася як корінь з початку роботи. Зазвичай, замість того, щоб редагувати crontab кореня за допомогою crontabкоманди, яка залишає записи /var/spool/cron/crontabs, дещо криптичне місце, я вважаю за краще вводити їх чітко в /etc/cron.d. Записи в cron.d виконуються як записи системи crontab, трактуються як конфігураційні файли, щоб вони пережили перезавантаження системи, оновлення та оновлення, і ви можете чітко вказати працюючого користувача:

echo "0 3 * * * root /sbin/shutdown -h 5 'System will reboot in 5 minutes'" | sudo tee /etc/cron.d/reboot-at-3-am

Якщо вам не потрібен конкретний час, а скоріше, просто хочете, щоб система перезавантажувалася один раз на день, додайте виконуваний файл або сценарій, /etc/cron.dailyі він буде автоматично запускатися у визначений час (системний час 6:25 за замовчуванням):

echo "/sbin/shutdown -h 5 'System will reboot in 5 minutes'" | sudo tee /etc/cron.daily/reboot-me

Зауважте, що замість того, щоб просто перезавантажувати систему без попередження, я встановлюю 5-хвилинне попередження, тож якщо хтось увійшов, він має шанс зберегти свою роботу або навіть перервати вимкнення sudo shutdown -c, а не витягувати систему з-під них. Ви можете відповідним чином відрегулювати їх, якщо ви хочете попередити більш широке попередження (наприклад, скористайтеся shutdown -h 60командою та запускайте її о 02:00, і ви дасте користувачеві щедре 1-годинне попередження).

Це ґрунтується на моєму минулому досвіді; в якийсь момент ви будете входити в систему, коли буде запущено запис crontab, і якщо він перезавантажиться без попередження, ви будете дуже сумною пандою.


-1

Чому ти хочеш - чи потрібно це робити? Хоча це зробити досить просто, майже напевно є краще рішення з Linux, яке не передбачає перезавантаження. На відміну від Windows, ОС на базі Linux не потребує перезавантаження майже нічого, крім оновлення ядра.

Якщо ви поясните, чого ви намагаєтесь досягти, ми, ймовірно, можемо допомогти вам краще.


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