Используя терминал или файл bash, как я могу настроить Ubuntu на перезагрузку каждый день в (скажем, например) 3 часа ночи?
Другими словами, я хочу запланировать автоматическую перезагрузку через терминал.
Я не смог найти что-либо связанное с этим в Google или AskUbuntu, и я довольно новичок в Ubuntu в целом (только что получил мой новый Raspberry Pi).
Отредактируйте записи в 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 пользователя root, предлагающий полный путь для команды reboot
, используя sudo crontab -e
:
0 3 * * * /sbin/reboot
Обратите внимание, что помещение Вашего пароля в виде открытого текста в текстовом файле не является хорошей идеей, поэтому лучше иметь этот прогон задания как корень с самого начала. Обычно, вместо того, чтобы редактировать 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
и выполненный команда в 2:00 и Вы дадите пользователям щедрый 1 час, предупреждающий).
Это основано на моем прошлом опыте; в какой-то момент Вы будете зарегистрированы, работая, когда crontab запись будет работать, и если она просто перезагружает, не предупреждая, что Вы будете очень грустной пандой.
Почему вы хотите - или нужно для этого? Хотя сделать это довольно просто, почти наверняка есть лучшее решение для Linux, которое не требует перезагрузки. В отличие от Windows, ОС на базе Linux не требуют перезагрузок практически для всего, кроме обновления ядра.
Если вы объясните, чего вы пытаетесь достичь, мы, вероятно, поможем вам лучше.