Планирование перезагрузки на удаленно расположенном сервере Ubuntu

17

Я работаю на сервере Ubuntu, расположенном в месте, куда я обычно не хожу. Я использую SSH через OpenVPN для доступа к нему. Машина имеет несколько проводных интерфейсов, множество статических маршрутов и несколько шлюзов по умолчанию для WAN. Я часто меняю адреса интерфейсов и маршруты. В большинстве случаев я делаю изменения временно - перезагрузка сбрасывает эксперименты, которые я провел. В некоторых случаях некоторые из этих модификаций работали неправильно, и машина отключалась. В таких случаях мне приходилось вызывать кого-то в том месте, где расположен сервер, чтобы отправить машину в перезагрузку.

Теперь я хотел бы запланировать перезагрузку - скажем, через 2 часа машина должна войти в цикл перезагрузки. И в эти два часа я могу проводить любые временные эксперименты, какие захочу. Если все временные изменения пройдут успешно, я смогу предотвратить перезагрузку через два часа. Итак, что я хочу, это:

  1. Как сказать серверу перезагрузиться после определенного времени?
  2. Если я решу, что машина не должна перезагружаться, я смогу отменить ее.
nixnotwin
источник

Ответы:

14

На терминале, shutdown -r 10 Waiting 10 minutes before the restart&который будет перезагружать сервер через 10 минут, отправьте сообщение, объясняющее, что нажатие клавиш «Ctrl + C» прервет запрос на перезагрузку.

На терминале того типа shutdown -r 18:00 Rebooting at 18:00 hours&, который заставит сервер перезагрузиться в 18:00, будет транслироваться сообщение, объясняющее это и может быть прервано с помощью control + c.

Вы также можете прервать любой запрос на выключение / перезагрузку на своем «рабочем» терминале с помощью shutdown -a.

Бруно Перейра
источник
2
Это немного проблематично, поскольку он интерактивен и блокирует оболочку, на которой вы работаете. Я не уверен, будет ли это работать предсказуемо по SSH, если сессия прекратится.
Ален О'Ди
Я не мог найти какую-либо комбинацию, nohupи sudoэто сделало бы эту работу, если запускать из обычного сеанса SSH, как обычный пользователь группы администраторов.
HDave
Может ли это быть выполнено в сочетании с Screen, чтобы позволить команде быть примененной и сеанс ssh отброшен?
Энди Дэвис
30

Вы также можете использовать, atчтобы запланировать перезагрузки. Например, sudo at 22:00чтобы запустить команду в 22:00 от имени пользователя root. Затем введите команду, которую хотите запустить: /sbin/shutdown -r nowи завершите с ctrl-d. Если вы решили не запускать эту команду, запустите, sudo atrm 1чтобы удалить первый в atочереди. При этом sudo atqвы можете увидеть очередь.

kimda
источник
Это решение идеально!
Sukima
5
Это должно быть помечено как правильный ответ! atСемейство команд то , что каждый сервер админ должен знать.
HDave
2
если вы новичок at, сначала выполните sudo at 22:00. Это берет вас в своего рода оболочку. Затем вы вводите команду и ctrl-dвыходите. См. Также mixeduperic.com/ubuntu/…
Тим Ричардсон