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


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.