Попробуйте переименовать это как-нибудь еще и посмотрите.
Мартино
10
@MukulKumar Кто-то, кто хочет узнать эффект, и знает, что они могут очень легко полностью изменить его?
Джон Бентли
8
@theGreenCabbage: Вам нужно оформить shutdown -s -t 0- на обычном языке shutdownотображается только справка.
LawrenceC
9
Отключение компьютера должно отключить его независимо от имени любого файла.
Дэвид Старки
7
@DavidStarkey: «Выключить» и «выключить» это не одно и то же.
Легкость гонок с Моникой
Ответы:
31
Ваш вопрос, конечно же, исходит из вашего ответа на https://codegolf.stackexchange.com/a/24011/18907 , в частности, из kinokijufкомментариев, сделанных при первоначальной редакции вашего ответа.
Как kinokijufсказано, Windows не является Unix. На Unices и Linux shutdownдействительно участвует в процессе полного выключения. Это программа, которая отправляет регулярные предупреждающие сообщения зарегистрированным пользователям и записывает /run/nologinфайл, чтобы предотвратить дальнейший вход в систему незадолго до запланированного времени завершения работы.
В Windows NT это не так.
Действие «Завершение работы» над «кнопкой питания» в меню «Пуск» проводника Windows, пункт меню «Завершение работы» в диспетчере задач, REBOOT /Sв TCC или «Взять команду», а также в других прикладных программах, которые позволяют выключить систему, все инициируют завершение работы. путем прямого вызова одного из двух вызовов Win32 API: InitiateSystemShutdownEx()или ExitWindowsEx(). Они не делают вещи косвенно, запустив shutdownпрограмму. (На самом деле для этого требуется больше кода, чем просто вызов API Win32.) shutdownПрограмма, когда выполняется локальное завершение, также вызывает те же вызовы Win32 API.
Это на самом деле winlogon, csrssи smssэто программы, которые закрывают Windows NT. В частности, именно он winlogonвыполняет основную работу по обработке отложенных запросов на отключение.
Вы действительно разумный ответчик! Мне понравилось, как ты проследил реальную ситуацию через мой профиль.
Мукул Кумар
Обратите внимание, что в системах Linux shutdownкоманда вообще не участвует в процессе полного выключения; в то время как он может отправлять предупреждающие сообщения или касаться / запускать / nologin, все, что он делает в отношении фактического выключения, - это отправляет соответствующую команду systemd, init и т. д. и завершает работу. Процесс init или его современная замена systemd фактически выполняет работу по выключению системы.
Майкл Хэмптон
Нет, М. Хэмптон, отправка сообщений и прекращение входа в систему - это полноценная часть процедуры полного отключения. Не думайте, что он волшебным образом исчез с Linux. Справочные страницы для двух Linux shutdownнаходятся прямо перед вами. Думать, что это так же неправильно, как бессмыслица во введении к Linux в TLDP, где говорится, что «UNIX не предназначен для выключения». UNIX действительно был сделан для закрытия, и за последние 40 лет было довольно много книг для профессионалов UNIX, которые охватывают всю процедуру, с предупреждениями для пользователей как шаг # 1.
JdeBP
Есть даже книги для профессионалов Linux. Я бы подключил учебное пособие Рида Смита по LPIC , которое есть shutdownна странице 22, но его нет в моей библиотеке. Извините, М. Смит. (-: Моя библиотека имеет такие же характеристики, как Coffin SVR5 Reference (шаг предупреждений пользователей, описанный на страницах 355 и 683), Руководство системного администратора SCO UNIX (предупреждения пользователям как первый шаг завершения работы на страницах 52–53) и даже Fielder's / Администрирование системы Hunter UNIX (вся глава 6 посвящена отключению, с предупреждением пользователей в начале главы). Можно найти еще много книг для профессионалов, посвященных этой
теме
55
Нет.
Explorer не вызывает эту команду, когда вы закрываете меню «Пуск».
Завершение работы системы возможно с помощью вызова Win32 API (ответ @ JdeBP содержит подробную информацию об этом, если интересно). Команда - это просто удобный способ сделать это из сценария, запланированного задания или диалога «Выполнить».
На самом деле, shutdown.exeдаже не делает изящное отключение.
kinokijuf
Осторожнее с этим ответом! Explorer не вызывает эту команду, но другие процессы, которые закрывают или перезагружают окна, делают это: и это не просто «удобный способ сделать это», если сценарий или запланированная задача является установщиком или запланированной задачей обслуживания от вашего системного администратора.
Найджел Хеффернан
1
Это не делает это «необходимым», Нил. См. Контекст вопроса (которого нет в вопросе, но он есть в моем ответе и что там указано) для опровержения, которое задавал спрашивающий, и утверждения об shutdownэтом, сделанного спрашивающим первоначально. (Эти части) установщиков часто пишутся на скомпилированных языках, которые, кстати, просто вызывают Win32 API.
JdeBP
8
Как пояснил ultrasawblade (upvote), выключение системы - это вызов Win32 API для: ExitWindowsEx
В ссылке также есть пример того, как осуществить отключение из C. Кроме того, вы можете сделать это из C # с помощью P / Invoke (Platform Invoke). У pinvoke.net есть набор подписей, доступных для использования: http://www.pinvoke.net/default.aspx/user32/exitwindowsex.html
shutdown -s -t 0
- на обычном языкеshutdown
отображается только справка.Ответы:
Ваш вопрос, конечно же, исходит из вашего ответа на https://codegolf.stackexchange.com/a/24011/18907 , в частности, из
kinokijuf
комментариев, сделанных при первоначальной редакции вашего ответа.Как
kinokijuf
сказано, Windows не является Unix. На Unices и Linuxshutdown
действительно участвует в процессе полного выключения. Это программа, которая отправляет регулярные предупреждающие сообщения зарегистрированным пользователям и записывает/run/nologin
файл, чтобы предотвратить дальнейший вход в систему незадолго до запланированного времени завершения работы.В Windows NT это не так.
Действие «Завершение работы» над «кнопкой питания» в меню «Пуск» проводника Windows, пункт меню «Завершение работы» в диспетчере задач,
REBOOT /S
в TCC или «Взять команду», а также в других прикладных программах, которые позволяют выключить систему, все инициируют завершение работы. путем прямого вызова одного из двух вызовов Win32 API:InitiateSystemShutdownEx()
илиExitWindowsEx()
. Они не делают вещи косвенно, запустивshutdown
программу. (На самом деле для этого требуется больше кода, чем просто вызов API Win32.)shutdown
Программа, когда выполняется локальное завершение, также вызывает те же вызовы Win32 API.Это на самом деле
winlogon
,csrss
иsmss
это программы, которые закрывают Windows NT. В частности, именно онwinlogon
выполняет основную работу по обработке отложенных запросов на отключение.дальнейшее чтение
shutdown
, Руководства по FreeBSD 9.2 . 2013-03-19.shutdown
,systemd
справочные страницы . 2013. Freedesktop.org.shutdown
,upstart
справочные страницы . 2009. Canonical Ltd.InitiateSystemShutdownEx
, MSDN. Корпорация Майкрософт.ExitWindowsEx
, MSDN. Корпорация Майкрософт.REBOOT
, Возьмите Command / TCC Help. JP Software.источник
shutdown
команда вообще не участвует в процессе полного выключения; в то время как он может отправлять предупреждающие сообщения или касаться / запускать / nologin, все, что он делает в отношении фактического выключения, - это отправляет соответствующую команду systemd, init и т. д. и завершает работу. Процесс init или его современная замена systemd фактически выполняет работу по выключению системы.shutdown
находятся прямо перед вами. Думать, что это так же неправильно, как бессмыслица во введении к Linux в TLDP, где говорится, что «UNIX не предназначен для выключения». UNIX действительно был сделан для закрытия, и за последние 40 лет было довольно много книг для профессионалов UNIX, которые охватывают всю процедуру, с предупреждениями для пользователей как шаг # 1.shutdown
на странице 22, но его нет в моей библиотеке. Извините, М. Смит. (-: Моя библиотека имеет такие же характеристики, как Coffin SVR5 Reference (шаг предупреждений пользователей, описанный на страницах 355 и 683), Руководство системного администратора SCO UNIX (предупреждения пользователям как первый шаг завершения работы на страницах 52–53) и даже Fielder's / Администрирование системы Hunter UNIX (вся глава 6 посвящена отключению, с предупреждением пользователей в начале главы). Можно найти еще много книг для профессионалов, посвященных этойНет.
Explorer не вызывает эту команду, когда вы закрываете меню «Пуск».
Завершение работы системы возможно с помощью вызова Win32 API (ответ @ JdeBP содержит подробную информацию об этом, если интересно). Команда - это просто удобный способ сделать это из сценария, запланированного задания или диалога «Выполнить».
источник
shutdown.exe
даже не делает изящное отключение.shutdown
этом, сделанного спрашивающим первоначально. (Эти части) установщиков часто пишутся на скомпилированных языках, которые, кстати, просто вызывают Win32 API.Как пояснил ultrasawblade (upvote), выключение системы - это вызов Win32 API для: ExitWindowsEx
В ссылке также есть пример того, как осуществить отключение из C. Кроме того, вы можете сделать это из C # с помощью P / Invoke (Platform Invoke). У pinvoke.net есть набор подписей, доступных для использования: http://www.pinvoke.net/default.aspx/user32/exitwindowsex.html
источник
Это не обязательно.
shutdown.exe
это просто утилита для выключения локального или удаленного компьютера. Похоже ,shutdown.exe
ИСПОЛЬЗУЕТ Native API «SNtShutdownsystem
. Пока Windows используетExitWindowsEx
( как уже упоминалось ).источник