Как настроить Ubuntu для перезагрузки каждый день в определенный момент времени?

10

Используя терминал или файл bash, как я могу настроить Ubuntu на перезагрузку каждый день (скажем, например) 3 AM?

Другими словами, я хочу запланировать автоматическую перезагрузку через терминал.

Мне не удалось найти что-либо, связанное с этим в Google или AskUbuntu, и я довольно новичок в Ubuntu в целом (просто получил новую малину Pi).

    
задан Mathias Lykkegaard Lorenzen 31.07.2013 в 14:51
источник

3 ответа

12

Отредактируйте записи 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
    
ответ дан Radu Rădeanu 31.07.2013 в 15:01
источник
1

Обратите внимание, что размещение вашего текстового пароля в текстовом файле не является хорошей идеей, поэтому лучше всего, чтобы это задание выполнялось как root из get-go. Обычно, вместо того, чтобы редактировать crontab root с помощью команды 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 AM по умолчанию):

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 AM, и вы дадите пользователям щедрое 1-часовое предупреждение).

Это основано на моем прошлом опыте; в какой-то момент вы будете заходить в систему, работая при запуске записи crontab, и если она просто перезагрузится без предупреждения, вы будете очень грустной пандой.

    
ответ дан roadmr 06.08.2013 в 20:41
0

Зачем вам нужен - или нужен для этого? Хотя это довольно просто сделать, в Linux почти наверняка есть лучшее решение, которое не требует перезагрузки. В отличие от Windows, ОС на базе Linux не требует перезагрузки почти для всех, кроме обновлений ядра.

Если вы объясните, что вы пытаетесь достичь, мы, вероятно, можем вам помочь.

    
ответ дан Jack Knight 06.08.2013 в 18:20