Desligamento do Linux em 30 segundos?

8

Pergunta simples: quais parâmetros podem ser usados ​​para desligar um computador executando Linux / OSX em 30 segundos? Sempre executei o Windows, onde iria, shutdown -s -t 30mas os parâmetros são diferentes. Eu procurei aqui, mas isso só permitirá que você desligue o computador em um horário específico (como 8:00), e não em uma quantidade específica de segundos.

icnhzabot
fonte

Respostas:

8

No OS X, você pode desligar em um minuto usando o seguinte comando:

sudo shutdown -h +1

AFAIK, não é possível especificar segundos em vez de minutos com este comando.

Você também pode reiniciar usando em -rvez de -h.


EDITAR:

Como você mencionou no seu comentário, você pode adicionar um atraso programaticamente e desligar o sistema imediatamente com

shutdown -h now

Mas observe que esse comando exigirá acesso root.

Austin
fonte
meh. Portanto, não use decimais. Suponho que está tudo bem, fiquei pensando, porque estou tentando trabalhar em um aplicativo Java multiplataforma que pode desligar um computador. Para que eu pudesse dormir por 30 segundos antes de desligar imediatamente. Mas sudo shutdown -hdesligaria o computador sem um atraso intencional?
@icnhzabot sudo shutdown -h nowdesligaria o computador imediatamente sem aviso.
Austin
ok obrigado. então, para acesso root, devo fazer sudo shutdown -h nowcerto?
Icnhzabot
@icnhzabot Isso não funciona para um script / programa automatizado, porque solicita ao usuário a senha de administrador na linha de comando. Você teria que executar seu script como root e apenas chamar shutdown -h now. Se precisar de ajuda com isso, faça uma nova pergunta (supondo que não encontre a resposta em outro lugar). Além disso, não esqueça de marcar a melhor resposta aqui como "aceita" se ela responder à sua pergunta.
Austin
3

Usando as chamadas básicas, não vejo uma maneira de fazer isso com segundos, mas parece que você pode fazer isso com minutos:

time Time is the time at which shutdown will bring the system down and
     may be the word now (indicating an immediate shutdown) or specify
     a future time in one of two formats: +number, or yymmddhhmm,
     where the year, month, and day may be defaulted to the current
     system values.  The first form brings the system down in number
     minutes and the second at the absolute time specified.

Em outras palavras:

shutdown -h +1

Se você quiser desligá-lo em 1 minuto.


fonte
você sabe se funcionaria com 0,5?
Há um erro aqui - a -ropção é para reiniciar, não desligar. Você tem que usar -hpara desligar.
Austin
@ Austin Ugh, corrigido esse inline.
3

Como apontado, o comando

sudo shutdown -h +1

Adiciona um minuto.

Se você quiser fazer isso em segundos ou horas ou algo muito específico, poderá fazer algo como:

shutdown -h `date --date "now + 60 seconds"`

EDIT: O exemplo acima não funciona mais em versões mais recentes do Ubuntu. Obrigado por apontar isso para @zitrax. Meu erro, você está certo.

Mas você ainda pode fazê-lo, mas parece que talvez esteja no minuto mais próximo.

sudo shutdown -h `date --date "now + 10 minutes" "+%H:%M"`

O que é um pouco inútil quando o parâmetro + m é mais fácil de digitar .... ahhh oh bem.

Matt H
fonte
Não funciona (pelo menos no Linux), isso indica o tempo em outro formato que o esperado.
Zitrax 21/02
@Zitrax, só porque não funcionou no seu caso, não significa que não funcione em todos os tipos de Linux. Gostaria que você também notasse que o backtick `é diferente de uma única citação '. Acho que é por isso que não funcionou para você. Isso absolutamente funciona em todas as versões do Ubuntu desde pelo menos 10.04. E como o Ubuntu é baseado no Debian, também funcionará nisso. Pode ser mais construtivo dizer "Não funciona em ...." em vez de votar e fazer uma declaração geral. Linux é um termo genérico, não é uma versão. Mas acho que você digitou errado. Tente novamente.
Matt H
11
Tentei novamente na minha máquina doméstica e ela também não está funcionando. Eu sei como os backticks funcionam. Então, eu tentei no Ubuntu 13.10 e Kubuntu 13.10. Pode ser que eu esteja usando um código de idioma diferente? A saída date --date "now + 60 seconds"para mim é 22 de fevereiro de 2014 21:25:03 CET e, se eu usar isso junto com o desligamento, imprimirá "valor de tempo inválido" (traduzido para inglês). Portanto, sua declaração de que a versão que você escreveu absolutamente funciona em todas as versões do ubuntu está simplesmente errada. Se eu especificar o formato de data ele funciona, porém, como este: date --date "now +60 seconds" +%H:%M.
Zitrax 22/02
Tentei mudar para o idioma inglês, mas também não funcionou. Portanto, não sei por que isso funciona para você.
Zitrax 22/02
Deve ser sua versão do comando shutdown. Parece que a versão que acompanha o Ubuntu pode ser diferente. É de autoria de Scott Remnant, da Conanical. Deve ser que ele aceite um intervalo mais amplo de valores de entrada de data. Funciona para mim e pelo menos outros 3 que votaram.
Matt H