Можно ли остановить команду выключения?


23

Предполагая, что вы только что ввели команду shutdown -h now(или что-то эквивалентное), реально ли что-то, что вы можете сделать (если вы достаточно быстры), чтобы предотвратить выключение машины?


Когда вы вызываете shutdown -h now, я полагаю, что вы сразу же теряете доступ к командной строке, halt -pтак что вы ничего не можете сделать.
Кен

@Ken: в Ubuntu и Centos, подключенных через putty, командная строка остается доступной в течение нескольких секунд.

Зачем говорить «сейчас», если вы не имеете в виду «прямо сейчас»?
Фред Нурк

Ответы:


22

Вы можете запустить, shutdown -cчтобы отменить уже запущенное завершение работы.


1
Сначала не верил, но да. Более конкретноctrl+c
Кен,

2
@Ken: shutdown -c и [Ctrl] + [c] совершенно разные. shutdown -c - это команда, которая отменяет ранее запланированное завершение работы (в этом смысле запланировано даже «сейчас» - но будет ли отмена отменять перезагрузку, в этом случае - гонка). [Ctrl] + [c] заставит ваш терминал генерировать SIGINT (сигнал прерывания) для того процесса, который в данный момент подключен к нему. Это может работать при работающей команде выключения, но это довольно случайно для вашего вопроса.
Джим Деннис

1
@ Джим Деннис: я знаю разницу между ctrc+cи shutdown -c. Но учитывая скорость -now опциона, а не его запланированного родного брата, ctrl+cбудет самый быстрый путь к этому. Я не верил, что вы можете остановить имманентное отключение, еще более удивлен, что вы можете прервать его, но, очевидно, вы можете, но это гонка, как вы заявили.
Кен

13

Если вы достаточно быстры, вы можете запустить init 2(или любой другой уровень запуска), и это, вероятно, остановит выключение. Все, что связано с уничтожением команды выключения, завершится ошибкой, так как команда выполняется слишком быстро

Я попробовал это с помощью сценария ниже, и даже это не достаточно быстро, чтобы остановить выключение

#!/bin/bash
shutdown -h now
shutdown -c "Aborting Shutdown"

Broadcast message from iain@iain-ubuntu
        (/dev/pts/0) at 16:50 ...

The system is going down for halt NOW!
shutdown: Cannot find pid of running shutdown

Где как в интерактивном режиме

shutdown -h now
init 2 

система остается в рабочем состоянии.


1

Со страницы руководства FreeBSD:

Запланированное отключение можно отменить, отключив процесс завершения (достаточно SIGTERM).

Так killall shutdownработает на BSD, когда есть запланированное отключение (например shudown -h +5).

Я не думаю, что возможно отменить немедленное завершение работы ( shutdown -h now) в реальном сценарии.


0

Предположим, вы отправили сообщение о перезагрузке или завершении работы на все терминалы с целью обслуживания, что «сервер собирается перезагрузиться или завершить работу с целью обслуживания в течение 10 минут»

Этот вид команды может отменить.

просто нажмите Ctrl+C

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.