Как можно выключить компьютер, если не удается отключить монтирование / службу и т. Д.?

273
J Collins

Иногда требуется полная перезагрузка, когда компьютер переходит в плохое состояние в любой операционной системе. В Linux говорят, что если диск не может быть отключен, даже принудительно, как команда выключения может это сделать? К чему имеет доступ отключение для принудительного отключения и т. Д., Которое недоступно с терминала?

0
О какой ОС мы говорим? Что произойдет автоматически, зависит от ОС. Что требует вмешательства пользователя, зависит от операционной системы. Ramhound 6 лет назад 0
На данный момент Linux, но меня интересуют оба ответа. Проблема в том, что я не знаю, как ОС может принудительно завершить процесс в качестве первого ответа, «слишком плохого» случая, чтобы завершить работу, но ни один пользователь, запрошенный на уничтожение, не может его убить. В Windows и Linux случается так, что дескриптор файла может блокировать вещи, и единственным решением является перезапуск. J Collins 6 лет назад 0
В большинстве случаев команды только пытаются что-то сделать, после этого периода времени может произойти конкретное или неизвестное поведение. Ramhound 6 лет назад 0
имейте в виду, что «точка монтирования» - это структура памяти в структуре памяти ядра, которая контролируется программным обеспечением ядра и пользовательского пространства. независимо от того, что думает об этом остальная часть программного обеспечения, ядро ​​всегда может разрушить эту структуру памяти. в большинстве случаев он просто не защищал целостность файловой системы от плохих событий, вызванных плохим программным обеспечением или плохими пользователями. Это не похоже на процесс, существующий за пределами того, что ядро ​​хочет, чтобы оно существовало. все это только государственное управление. Frank Thomas 6 лет назад 0

1 ответ на вопрос

2
Mokubai

Завершение работы приведет к тому, что система попытается корректно закрыть все загруженные приложения или службы. Заявки будут уведомлены о том, что это происходит, и получат короткий льготный период, чтобы «убежать».

Следующая часть процесса выключения приведет к тому, что операционная система скажет драйверам файловой системы сбросить свои сохраненные данные на устройство хранения. Это должно привести к тому, что драйвер файловой системы очистит файловую систему перед завершением работы.

Затем он также сообщит диску о том, что файловая система включена, чтобы сбросить все аппаратные кэши, которые у них есть, на диск.

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

Таким образом, вопрос в конечном «слишком плохом» сценарии, возможно ли это сделать в случае «процесс за процессом», «обслуживание за обслуживанием» и т. Д.? J Collins 6 лет назад 0
Ну, вы можете вручную пройти через каждый процесс в списке и попросить его прекратить, но это не поможет процессу, который завершился с ошибкой или был плохо написан и оставил потерянную блокировку для чего-либо. В этом случае шансы, что все будет исправлено и перезагрузка, вероятно, лучшее, что вы можете сделать. Mokubai 6 лет назад 0
@JCollins - принудительное завершение процесса очищает дескрипторы файлов, которые могли открыться. Так что это зависит от процессов. Ramhound 6 лет назад 0
IIRC все процессы уничтожаются после выхода из `init`. Однако файлы могут оставаться заблокированными из-за странных обстоятельств и / или ошибок ядра. Daniel B 6 лет назад 0
Игнорируя ошибки в ядре, я видел случаи, когда, например, процессы `smb` не заканчивались хорошо, и` init` (или `systemd` в моем CentOS) становился владельцем процесса, показанным в` pstree`. Когда все варианты `kill` терпят неудачу, какие опции остаются до перезагрузки, отмечая, что невозможно убить родительский процесс. J Collins 6 лет назад 0

Похожие вопросы