Qual é a diferença entre o desligamento 18:00 e as 18:00 shutdown?

30

at 18:00 shutdown now e shutdown 18:00 , eles estão iniciando o mesmo serviço? Eles funcionam da mesma maneira?

    
por yang 28.08.2018 / 16:28

2 respostas

47

at 18:00 shutdown now cria uma tarefa "at", que é executada na hora especificada pelo daemon at ou talvez pelo daemon cron , dependendo do sistema.

shutdown 18:00 inicia um processo no seu shell que aguarda até a hora especificada e, em seguida, executa o desligamento. Este comando pode ser terminado se, e. sua sessão de shell é terminada.

O resultado líquido na maioria dos casos será o mesmo: o sistema é encerrado às 18:00.

Uma diferença é que, se você usar at , o trabalho será armazenado e se o sistema for desligado por algum outro meio antes das 18:00, após a inicialização novamente, o trabalho ainda estará aguardando para ser executado; se a hora já tiver passado, o desligamento será executado imediatamente, o que pode ser bastante inesperado.

Outra diferença é que shutdown 18:00 criará um arquivo /run/nologin 5 minutos antes do horário agendado para evitar que as pessoas façam login após esse momento. Também mensagens de broadcast serão enviadas para avisar os usuários logados que o sistema está prestes a ser desligado.

Você precisa considerar essas diferenças para decidir qual usar.

    
por 28.08.2018 / 16:36
22

E agora, a resposta do sistema.

Se você tem o CentOS 7, você tem um sistema operacional systemd e a resposta é diferente.

at 18:00 shutdown now ainda é agendado por meio do subsistema at , mas o comando shutdown , bem como o que você chama diretamente com shutdown 18:00 , é diferente. Na verdade, é o programa systemctl do systemd. systemctl faz as coisas de maneira diferente.

Em primeiro lugar, systemctl envia a solicitação de encerramento programada para ser processada por um daemon, praticamente como no caso at . No entanto, este é um dado do sistema, especificamente logind (o systemd-shutdownd daemon foi removido do systemd em maio de 2015, cuja alteração foi percolada até versões menores do CentOS 7), não o subsistema at . systemctl fala um protocolo interno para um corretor Desktop Bus (que abrange todo o sistema), que por sua vez se comunica com logind .

Assim, como no caso at , não há processo shutdown parado, fazendo a contagem regressiva e gerando as mensagens wall . Assim, pode-se sair e isso não afetará o cronograma, e o cancelamento não é tão simples quanto simplesmente interromper / matar o processo de primeiro plano da sessão de login. Assim como com at .

Ainda existem mensagens, ao contrário do caso at , mas são emitidas por logind . Além disso, ao contrário do caso at , o trabalho agendado não persiste nas reinicializações do sistema, portanto, um desligamento real cancela um agendado. Existe um arquivo no sistema de arquivos, mas está sob /run/systemd/shutdown , que é um armazenamento não persistente.

Outras diferenças são que só pode haver um desligamento agendado de cada vez, enquanto um pode enviar vários trabalhos at , e o Policy Kit aplicará regras a shutdown em não-login -session contexto como um trabalho at que são diferentes das regras aplicadas a shutdown executadas no contexto da sessão de login. O último pode ser mais permissivo, permitindo (digamos) que um usuário sem privilégios que esteja logado na sessão de login ativa desligue o sistema.

Leitura adicional

por 28.08.2018 / 17:58