Предположим, оконный сервер с
Природа этого программного обеспечения очень важна. Операции занимают до нескольких минут и не должны прерываться.
Какова стратегия выключения / перезапуска этого сервера?
В идеале (интерактивные) консольные приложения не должны запускаться на сервере. Вещи, требующие интерактивных сеансов входа в систему, не должны выполняться на сервере.
Службы Windows должны быть запрограммированы на обрабатывать события выключения. Это чрезвычайно распространенная практика разработки. Windows отправляет уведомление всем службам Windows, когда ОС готовится к завершению работы, в частности, чтобы дать службам достаточно времени, чтобы они также могли завершить работу без ошибок. Если ваша служба этого не делает, значит, она, к сожалению, написана любителями, и в идеале вам следует искать другой продукт, который был разработан для работы в качестве службы Windows.
В идеальном мире вы должен иметь возможность перезапустить Windows Server в любой момент, и все службы, работающие на этом сервере, будут отключены и перезапущены без ошибок, без присмотра и без головы. Любой сбой обычно происходит из-за некомпетентности разработчика приложения должным образом обрабатывать события завершения работы ОС или различных смягчающих обстоятельств, которые могут помешать нормальной работе службы, например, спонтанное отключение LUN из-за отказа оборудования или чего-то еще.
Если вам нужно написать сценарий, чтобы сообщить системному администратору, как перезапустить сервер, то вы уже испортили передовой опыт.
- Должна ли каждая работающая служба / приложение самостоятельно обрабатывать завершение работы?
Да.
- Должен ли администратор следовать инструкциям по выключению сервера?
Это то, что вам, возможно, придется сделать, если на вашем сервере работают плохо написанные или настроенные приложения. Вы можете запрограммировать действия администратора так, чтобы выключение можно было, по крайней мере, автоматизировать. (Например, сценарий выключения.)
- Следует ли другому программному обеспечению выйти из каждой службы / приложения, а затем выключить сервер?
Это могло, это может теоретически Это было бы возможно с помощью умной разработки, но это было бы создание машины Руба Голдберга в ответ на проблему, которой вообще не должно было бы существовать, если бы вы просто запускали серверные приложения на своем сервере вместо клиентских приложений.
Да. Каждое приложение / служба должно обрабатывать отключение самостоятельно. В конце концов, только данная программа знает, что она делает и как ее корректно завершить. Сказав, что могут быть некоторые надоедливые службы, которые не выполняют выключение должным образом. В этой ситуации администратор должен сделать это вручную. То есть на критически важном сервере. Лично я предпочел бы, чтобы сервер вообще не выключался, чем делал это автоматически с потерей данных. Ваш пробег может быть очень большим.