O script de encerramento não funciona como está escrito

0

Sou novo no Linux. Eu escrevi um script muito simples para desligar meu computador, escrito assim:

!#/bin/bash
echo "Hello World"
sudo shutdown

Quando executo este código, ele inicia um cronograma de desligamento, normalmente um minuto ou mais, embora meu script não forneça o agendamento, em vez disso, eu quero imediatamente desligar meu sistema. Eu gostaria de saber se esta é uma função do meu script ou do Linux, e o que posso fazer para corrigir meu script para que ele seja encerrado instantaneamente.

    
por dabberson567 02.07.2017 / 00:41

2 respostas

0

A melhor coisa a fazer é digitar cada um dos seus comandos no terminal para testar o que o comando fará. No seu caso, acho que você quer usar o seguinte:

shutdown now
    
por 02.07.2017 / 00:51
0

Existem três questões que você precisa abordar no seu script.

O primeiro é o erro de digitação na linha shebang. a sintaxe correta para essa linha seria #! / path / to / interpret -options e arguments. Ele deve começar no primeiro caractere da primeira linha e terminar com uma nova linha. bash é um shell aceitável para o script (embora possa ser um exagero nesse caso), portanto, após corrigir os dois primeiros caracteres, isso seria aceitável, mas algumas opções podem ser úteis. -e sai em qualquer erro forçando você a escrever scripts melhores e -x mostra o que o shell está fazendo em cada etapa, embora nenhum deles tenha captado os problemas nesse caso.

Os dois erros mais comuns com o desligamento são o tempo e o tipo de desligamento, e você parece ter atingido os dois. A principal característica do desligamento é desligar de cada vez. Existem três maneiras de especificar um tempo absoluto, relativo e now . Agora é um alias de +0 , o que significa zero segundos a partir de agora e é mais frequentemente o que é desejado em sistemas de usuário único. A outra característica principal do Shutdown é que ele suporta vários tipos de desligamentos, por exemplo, parada, desligamento e reinicialização, mas como o desligamento é anterior ao gerenciamento automático de energia, o padrão é desligar para um modo de usuário único. Ele costumava ser usado para que, depois de expulsar todos os usuários, você pudesse sincronizar, desmontar e verificar os sistemas de arquivos antes de desligar o sistema. Também foi útil para fazer outra manutenção antes de retornar ao modo multiusuário. Não é muito usado nos dias de hoje, mas ainda é o padrão. A página man vai lhe dizer como selecionar o tipo de desligamento.

Além disso, o sudo não é necessário para o usuário root, portanto você pode ignorá-lo para o usuário root.

    
por 02.07.2017 / 02:06