Как я могу запланировать ночную перезагрузку?

81

У меня периодически возникают проблемы с запуском определенного приложения, XBMC. Если я регулярно использую XBMC, у меня, похоже, не возникает никаких проблем, но если я оставляю его без присмотра более чем на 12 часов, мне нужно перезагрузить компьютер, чтобы он снова заработал.

Я знаю, что запланированная перезагрузка - это НЕ ответ, но пока я не могу выяснить проблему, мне нужно планировать перезагрузку каждое утро, чтобы моя жена могла использовать ее, если меня нет, и ее не выбросили из окна :)

Любой берущий?

Braiam
источник

Ответы:

134

Я бы использовал 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 часа утра + 5 минут)

Ctrl+ X, Y, EnterДолжны вывести вас из кронтаба (при использовании нано)

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

sBlatt
источник
1
Спасибо за информацию. Единственное, что мне нужно было сделать, это изменить команду на / sbin / shutdown, чтобы она работала на меня.
1
это не сработало для меня. используя оба crontab -eи sudo crontab -eсохраняет файл во временное местоположение, когда вы выходите (например, /tmp/crontab.Y88XQl/crontab), и задача не запускается. я был вынужден изменить / и т.д. / кронтаб непосредственно
вали
@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}'

Если это не сработает, то «обычная» запись cron тоже может работать, через 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не подходит для этого.
пул
cron.daily работает каждую ночь в 6:25 в моей системе. Обычно устанавливается случайная минута между 06:00 и 06:59. Посмотрите в вашем / etc / crontab время вашей системы
elzapp
1
Самая большая проблема с использованием cron.daily для этого состоит в том, что он может мешать другим работам в cron.daily.
elzapp
1

Вы должны создать сценарий, используя указания, данные Kees Cook ...

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

После этого просто не забудьте щелкнуть правой кнопкой мыши по файлу и назначить ему разрешение на выполнение. Если вы хотите использовать терминал просто:

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

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

Если вы хотите быть строгим в отношении времени перезагрузки, просто цифры

sudo crontab -e

так что вы можете редактировать crontabдля пользователя root.

Если вы чувствуете себя лучше, делая это графически, вы можете установить из Software Center gnome-schedule. Если вы хотите изменить gnome-scheduleпользователя root, убедитесь, что вы запускаете его из терминала:

gksudo gnome-schedule

Весело играть вокруг! :)

PS: отличная точка зрения sBlatt! Мне было интересно, есть ли способ заставить cron.dailyвремя выполнения вручную.

Pitto
источник
В / etc / crontab есть запись для настройки времени, но на самом деле, если компьютер в это время не работает, он запустится через несколько минут после запуска компьютера
sBlatt
1

Я работаю с cronjobs около месяца на своей работе, планирую отключение питания и перезагрузку. Это очень просто Я знаю, что об этом спрашивали около 5 лет назад, но если у кого-то все еще есть проблемы, вы можете использовать этот метод, и вы будете настроены.

открыть терминал (Ctrl + T)

sudo nano /etc/crontab

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

00 6 * * * root reboot 

Это установлено для перезагрузки в 6 утра каждый день, и нажмите Enter

Если вы хотите запланировать отключение питания на 11 вечера каждый день, вы можете ввести

00 23 * * * root poweroff

Мне все еще нужно выяснить, как привести в действие машину, используя cronjob, когда она выключена. Я отредактирую этот ответ, как только выясню.

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

techfashionista
источник
3
Есть ответ с тем же содержанием от 5 лет назад с более подробной информацией и автоматической проверкой синтаксиса (через crontab -e).
Дэвид Фёрстер
1
Не забудьте перезапустить cron:sudo /etc/init.d/cron restart
brcebn