Мне просто любопытно: что может быть целью перезапуска каждые 30 минут?
Rafał Cieślak
Ответы:
30
Лучший способ сделать это будет зависеть от того, почему вы хотите, чтобы Ubuntu перезагружался каждые полчаса.
Поэтому я рекомендую отредактировать ваш вопрос, чтобы объяснить, почему вы хотите это сделать.
Перезагрузка каждые 30 минут и предупреждение пользователей перед каждой перезагрузкой:
Предполагая, что люди могут использовать машину локально или удаленно, лучше избегать перезапуска Ubuntu из-под них без предупреждения. Поэтому вместо того, чтобы планировать rebootкоманду, я рекомендую планировать shutdownкоманду, чтобы она предупреждала пользователя.
Чтобы запланировать отключение каждые полчаса с предупреждением за 5 минут до этого, добавьте это в /etc/crontab:
Вам на самом деле не нужно добавлять первую строку, которая является комментарием. Я включил это для ясности - кое-что как это уже там.
Это запланирует отключение системы для reboot ( -r) через пять минут после ( +5) выполнения команды. Он запускается каждые полчаса ( */30). Смотрите man cronи man 5 crontab.
Измените +5на что-то другое, чтобы изменить время, которое пользователи получают после предупреждения о перезагрузках.
0,30под минуту также будет работать, если вы предпочитаете это. (Точно так же, если бы это было каждые 20 минут, вы могли бы написать */20или 0,20,40.)
Убедитесь, что /sbinв PATHпеременной, указанной в верхней части /etc/crontab. В противном случае shutdown(под command) придется вызывать как /sbin/shutdown.
Команда всегда будет выполняться на получасовой отметке, если в это время машина работает и работает . Это приведет к объявлению отключений каждые полчаса и выполнению через 5 и 35 минут после часа.
Одним из преимуществ здесь является то, что администратор может отменить только что объявленное отключение с помощью sudo shutdown -c.
Если компьютер не работает в течение определенного времени, когда запланированная команда должна быть запущена, он не запустится. Если это не соответствует вашим потребностям, вам придется планировать перезагрузки по-другому. (Это не относится к использованию, shutdownно будет применяться в равной степени, если вы планируете reboot.) В этом случае, пожалуйста, измените свой вопрос, чтобы объяснить ваши конкретные потребности. (Я бы порекомендовал anacronдля этого, но ваши временные интервалы слишком короткие.)
Чтобы администраторам было проще предотвратить автоматическую перезагрузку:
Возможно, вы захотите настроить это так, чтобы администратору было легко приостановить все автоматически запланированные перезагрузки:
Это запланирует перезагрузки таким же образом - каждые полчаса с предупреждением о пяти минутах - за исключением того, что это не запланирует перезагрузку, если файл с именем noautorebootсуществует в /etc.
Этот контрольный файл может быть создан администратором с помощью:
sudo touch /etc/noautoreboot
Его можно удалить с помощью:
sudo rm /etc/noautoreboot
Обратите внимание, что имеет значение, существует ли файл , а не то, что он содержит.
Если перезагрузка запланирована и пользователи предупреждены, тогда файл создан, (немедленная перезагрузка) все равно произойдет.
Как это работает? Он использует оценку короткого замыкания или operator ( ||) в качестве сокращения для:
Если/etc/noautoreboot не существует, бегите shutdown -r +5.
Этот ответ объясняет , как короткое замыкание и и или операторы могут выполнять if- thenлогику. Для краткого, интуитивного и очень неформального объяснения вы можете прочитать команду следующим образом:
/etc/noautorebootсуществуют! Или беги shutdown -r +5.
Мне нравится делать это, говоря менеджеру сессии, что мы хотим перезагрузить компьютер. Это может быть сделано без прав root, и мы получаем хорошее окно, которое предупреждает нас о перезагрузке системы - даже если мы захотим, мы можем отменить перезагрузку.
Графический путь - предпочтительный метод
Установите gnome-scheduleиз Центра программного обеспечения Ubuntu. Если вы не хотите устанавливать что-либо дополнительное, сделайте это Terminal Terminal.
Откройте gnome-scheduleиз тире, создайте новую повторную задачу и установите следующие параметры:
Сохранить и выйти. Предполагая, что вы используете nano(по умолчанию), нажмите Ctrl + o и Ctrl + x .
Обратите внимание, что это не будет работать, если ваш DISPLAY на самом деле отличается от :0, и именно поэтому этот метод не является предпочтительным. Но, если честно, если вы перезагружаете компьютер каждые 30 минут, ваш DISPLAY, скорее всего, будет всегда :0.
Не используете Gnome или Unity?
Оба метода, описанные выше, зависят от некоторых компонентов гнома, найденных как на сеансах гнома, так и в Unity. Если вы хотите сделать это в других средах (таких как KDE Kubuntu, LXDE Kubuntu ...), лучше заменить команду на эту:
Это не будет запрашивать подтверждения и будет перезапущено немедленно, но будет работать во всех средах, если, конечно, вы не удалили ConsoleKit вручную.
Это не будет работать, так как rebootдолжно быть запущено как root, и это добавляет его в личный crontab пользователя, поэтому он запускается от имени этого пользователя без полномочий root. (То же самое с sudo rebootтоже не будет работать, потому sudoчто попытается запросить пароль и потерпит неудачу.) /etc/crontabВместо этого следует использовать для этого (обратите внимание, что его синтаксис немного отличается).
Элия Каган
1
Вы можете выдать, sudo crontab -eа затем создать запись cron.
ТАСС
-3
Используйте cronдля планирования работы каждые 30 минут. Направьте эту работу на сценарий оболочки, который просто имеет
reboot
в этом.
Поскольку cronзапускается с правами root, вам не нужно делать ничего особенного с точки зрения прав доступа.
Обновить
Да, на самом деле я никогда ни в одной из своих систем не разрешал использовать пользовательские crontabs (есть более эффективные способы предоставления пользователям возможности выполнять запланированные задачи на уровне пользователя). Cron с самого начала создавался исключительно для автоматизации системы, а не для планирования пользователями обычных задач. задания. Такие вещи, как ротация бревен (что все еще происходит сегодня)
Перезагрузка ДОЛЖНА быть запущена от имени пользователя root, чтобы работать правильно, альтернатива - установить ее «липкий бит», чтобы при запуске от имени обычного пользователя она фактически выполнялась от имени пользователя root и работала как положено, но при этом вы открываете свой сервер до разрешения обычного пользователи могут перезагрузить его по своему желанию.
Вы могли бы даже автоматизировать вызов в SUDO, но мне нужно разобраться с этим, не уверен, сможете ли вы автоматизировать необходимость пароля с помощью SUDO (я не часто его использую, я предпочитаю просто перейти прямо в корень оболочка с помощью SU)
Если вы установите его в crontab всей системы, тогда все будет выполнено с правами root, поэтому мое утверждение верно (я просто не упомянул, что следует использовать общесистемную версию)
Что касается вашего вопроса "Зачем оборачивать это в сценарий?" а почему бы не? Если OP помещает его в сценарий оболочки, то в какой-то момент в будущем необходимо добавить к нему, он просто добавляет в сценарий, вместо того, чтобы открывать crontab, найти задание, удалить его, заменить его сценарием оболочки, затем напишите скрипт со старым + новым в.
Более 20 лет в качестве системного администратора / разработчика, работающего с системами еще в Ultrix / Solaris и даже в VAX, научил меня одному главному.
Если вы можете сделать это легче в начале, тогда это будет легко для жизни.
Я действительно не понимаю такого «минималистичного» подхода, который есть у многих современных системных администраторов, когда делать как можно меньше - ключ к успеху. Большинство серверов в наши дни легко в 20 раз + более мощные, чем все, что я когда-либо начинал, и такой сценарий (перенос в сценарии оболочки) был тогда рекомендуемой практикой, поэтому на самом деле нет никаких оснований не делать этого сейчас.
Если вы действительно не хотите использовать хардкорный Unix / Linux, в этом случае пометьте все это в записи cron и направьте все вместе так, как это должно быть сделано :-)
Тем не менее, я делаю отступление, а также понимаю, что многие ребята в эти дни вбрасываются в глубокий конец и говорят, чтобы заставить вещи работать, поэтому у них не хватает времени (и, как правило, склонности), чтобы сесть и узнать о новых методах (или старый в этом случае) или даже хотите поиграть с этим материалом вне работы.
Лично у меня есть один сервер из тех, которые я запускаю, который предназначен исключительно для меня, чтобы я мог на нем поиграть, поэтому я могу тестировать подобные вещи ... который лучше А или В, так что не случайно я советую по любому из это.
Ответы:
Лучший способ сделать это будет зависеть от того, почему вы хотите, чтобы Ubuntu перезагружался каждые полчаса.
Поэтому я рекомендую отредактировать ваш вопрос, чтобы объяснить, почему вы хотите это сделать.
Перезагрузка каждые 30 минут и предупреждение пользователей перед каждой перезагрузкой:
Предполагая, что люди могут использовать машину локально или удаленно, лучше избегать перезапуска Ubuntu из-под них без предупреждения. Поэтому вместо того, чтобы планировать
reboot
команду, я рекомендую планироватьshutdown
команду, чтобы она предупреждала пользователя.Чтобы запланировать отключение каждые полчаса с предупреждением за 5 минут до этого, добавьте это в
/etc/crontab
:Вам на самом деле не нужно добавлять первую строку, которая является комментарием. Я включил это для ясности - кое-что как это уже там.
-r
) через пять минут после (+5
) выполнения команды. Он запускается каждые полчаса (*/30
). Смотритеman cron
иman 5 crontab
.+5
на что-то другое, чтобы изменить время, которое пользователи получают после предупреждения о перезагрузках.0,30
под минуту также будет работать, если вы предпочитаете это. (Точно так же, если бы это было каждые 20 минут, вы могли бы написать*/20
или0,20,40
.)/sbin
вPATH
переменной, указанной в верхней части/etc/crontab
. В противном случаеshutdown
(подcommand
) придется вызывать как/sbin/shutdown
.Команда всегда будет выполняться на получасовой отметке, если в это время машина работает и работает . Это приведет к объявлению отключений каждые полчаса и выполнению через 5 и 35 минут после часа.
sudo shutdown -c
.shutdown
но будет применяться в равной степени, если вы планируетеreboot
.) В этом случае, пожалуйста, измените свой вопрос, чтобы объяснить ваши конкретные потребности. (Я бы порекомендовалanacron
для этого, но ваши временные интервалы слишком короткие.)Чтобы администраторам было проще предотвратить автоматическую перезагрузку:
Возможно, вы захотите настроить это так, чтобы администратору было легко приостановить все автоматически запланированные перезагрузки:
Это запланирует перезагрузки таким же образом - каждые полчаса с предупреждением о пяти минутах - за исключением того, что это не запланирует перезагрузку, если файл с именем
noautoreboot
существует в/etc
.Этот контрольный файл может быть создан администратором с помощью:
Его можно удалить с помощью:
Обратите внимание, что имеет значение, существует ли файл , а не то, что он содержит.
Если перезагрузка запланирована и пользователи предупреждены, тогда файл создан, (немедленная перезагрузка) все равно произойдет.
Как это работает? Он использует оценку короткого замыкания или operator (
||
) в качестве сокращения для:Этот ответ объясняет , как короткое замыкание и и или операторы могут выполнять
if
-then
логику. Для краткого, интуитивного и очень неформального объяснения вы можете прочитать команду следующим образом:Посмотрите,
man [
как выполняется сам тест.источник
Мне нравится делать это, говоря менеджеру сессии, что мы хотим перезагрузить компьютер. Это может быть сделано без прав root, и мы получаем хорошее окно, которое предупреждает нас о перезагрузке системы - даже если мы захотим, мы можем отменить перезагрузку.
Графический путь - предпочтительный метод
Установите
gnome-schedule
из Центра программного обеспечения Ubuntu. Если вы не хотите устанавливать что-либо дополнительное, сделайте это Terminal Terminal.Откройте
gnome-schedule
из тире, создайте новую повторную задачу и установите следующие параметры:dbus-send --print-reply --dest="org.gnome.SessionManager" /org/gnome/SessionManager org.gnome.SessionManager.Reboot
Оставьте другие параметры в их значениях по умолчанию. Нажмите на Добавить .
The Terminal Way - Нет необходимости в дополнительном программном обеспечении
Запустите из терминала:
Добавьте эту строку:
Сохранить и выйти. Предполагая, что вы используете
nano
(по умолчанию), нажмите Ctrl + o и Ctrl + x .Обратите внимание, что это не будет работать, если ваш DISPLAY на самом деле отличается от
:0
, и именно поэтому этот метод не является предпочтительным. Но, если честно, если вы перезагружаете компьютер каждые 30 минут, ваш DISPLAY, скорее всего, будет всегда:0
.Не используете Gnome или Unity?
Оба метода, описанные выше, зависят от некоторых компонентов гнома, найденных как на сеансах гнома, так и в Unity. Если вы хотите сделать это в других средах (таких как KDE Kubuntu, LXDE Kubuntu ...), лучше заменить команду на эту:
Это не будет запрашивать подтверждения и будет перезапущено немедленно, но будет работать во всех средах, если, конечно, вы не удалили ConsoleKit вручную.
источник
Запустите
sudo crontab -e
из командной строки и добавьте эту строку в файл:0,30 * * * * reboot
Это говорит системе запускать команду
reboot
каждые 30 минут как пользователь root. Обзор синтаксиса времени см. Здесь: http://linuxmoz.com/crontab-syntax-tutorial/источник
reboot
должно быть запущено какroot
, и это добавляет его в личный crontab пользователя, поэтому он запускается от имени этого пользователя без полномочий root. (То же самое сsudo reboot
тоже не будет работать, потомуsudo
что попытается запросить пароль и потерпит неудачу.)/etc/crontab
Вместо этого следует использовать для этого (обратите внимание, что его синтаксис немного отличается).sudo crontab -e
а затем создать запись cron.Используйте
cron
для планирования работы каждые 30 минут. Направьте эту работу на сценарий оболочки, который просто имеетв этом.
Поскольку
cron
запускается с правами root, вам не нужно делать ничего особенного с точки зрения прав доступа.Обновить
Да, на самом деле я никогда ни в одной из своих систем не разрешал использовать пользовательские crontabs (есть более эффективные способы предоставления пользователям возможности выполнять запланированные задачи на уровне пользователя). Cron с самого начала создавался исключительно для автоматизации системы, а не для планирования пользователями обычных задач. задания. Такие вещи, как ротация бревен (что все еще происходит сегодня)
Перезагрузка ДОЛЖНА быть запущена от имени пользователя root, чтобы работать правильно, альтернатива - установить ее «липкий бит», чтобы при запуске от имени обычного пользователя она фактически выполнялась от имени пользователя root и работала как положено, но при этом вы открываете свой сервер до разрешения обычного пользователи могут перезагрузить его по своему желанию.
Вы могли бы даже автоматизировать вызов в SUDO, но мне нужно разобраться с этим, не уверен, сможете ли вы автоматизировать необходимость пароля с помощью SUDO (я не часто его использую, я предпочитаю просто перейти прямо в корень оболочка с помощью SU)
Если вы установите его в crontab всей системы, тогда все будет выполнено с правами root, поэтому мое утверждение верно (я просто не упомянул, что следует использовать общесистемную версию)
Что касается вашего вопроса "Зачем оборачивать это в сценарий?" а почему бы не? Если OP помещает его в сценарий оболочки, то в какой-то момент в будущем необходимо добавить к нему, он просто добавляет в сценарий, вместо того, чтобы открывать crontab, найти задание, удалить его, заменить его сценарием оболочки, затем напишите скрипт со старым + новым в.
Более 20 лет в качестве системного администратора / разработчика, работающего с системами еще в Ultrix / Solaris и даже в VAX, научил меня одному главному.
Если вы можете сделать это легче в начале, тогда это будет легко для жизни.
Я действительно не понимаю такого «минималистичного» подхода, который есть у многих современных системных администраторов, когда делать как можно меньше - ключ к успеху. Большинство серверов в наши дни легко в 20 раз + более мощные, чем все, что я когда-либо начинал, и такой сценарий (перенос в сценарии оболочки) был тогда рекомендуемой практикой, поэтому на самом деле нет никаких оснований не делать этого сейчас.
Если вы действительно не хотите использовать хардкорный Unix / Linux, в этом случае пометьте все это в записи cron и направьте все вместе так, как это должно быть сделано :-)
Тем не менее, я делаю отступление, а также понимаю, что многие ребята в эти дни вбрасываются в глубокий конец и говорят, чтобы заставить вещи работать, поэтому у них не хватает времени (и, как правило, склонности), чтобы сесть и узнать о новых методах (или старый в этом случае) или даже хотите поиграть с этим материалом вне работы.
Лично у меня есть один сервер из тех, которые я запускаю, который предназначен исключительно для меня, чтобы я мог на нем поиграть, поэтому я могу тестировать подобные вещи ... который лучше А или В, так что не случайно я советую по любому из это.
источник