Percebi que, quando emito um reboot
comando, minha conexão SSH é imediatamente fechada no CentOS 7. Isso não significa que o servidor foi reiniciado, pois ainda posso fazer o ping.
Parece que o systemd está matando o sshd muito cedo. Às vezes, um serviço fica parado ao desligar ou fica lento, e não consigo mais fazer login para verificar o que está errado, mesmo que o servidor esteja funcionando.
Existe uma maneira de dizer ao systemd para matar apenas o sshd depois que todos os outros serviços estiverem inativos?
Respostas:
Mesmo se você pudesse garantir que o SSH seja o último serviço a ser desligado, seria inútil, porque você perderá a conexão assim que os serviços de rede forem interrompidos.
Uma máquina Linux inicializada inicia todos os serviços em uma ordem predeterminada: primeiro os serviços mais vitais, o syslog, o firewall, depois a rede e, eventualmente, os aplicativos que requerem acesso à rede (servidor web, servidor SSH etc.). Ao desligar, esses serviços são interrompidos na ordem inversa. Então você perderá a conexão SSH quase imediatamente.
O fato de o SSH já estar inativo enquanto você ainda pode executar ping na máquina remota é normal.
fonte
Isso é um pouco complicado, mas que tal adicionar algo como:
para a seção "[Serviço]" de
/usr/lib/systemd/system/sshd.service
? Isso não garantiria a ordem dos desligamentos, mas se você pudesse tolerar um tempo de desligamento mais longo, poderia permitir que você mantivesse seu shell ativo por tempo suficiente para verificar se tudo terminava bem ou para dar uma olhada rápida. Não tenho certeza se isso é útil no caso geral, pois provavelmente é tarde demais para abortar um desligamento problemático nesse estágio, mas pode ser útil em uma situação em que você tenha um problema recorrente durante o desligamento que está tentando depurar.fonte
Não sei ao certo o que você procura aqui, mas a primeira coisa em que se pensa é renice o processo.
Portanto, no seu caso, você pode renomear o processo pai sshd:
fonte