it-swarm-pt.com

Como desligar o computador após a conclusão de uma tarefa?

Normalmente, começo um download antes de ir para a escola.
Qual comando devo usar para fazer automaticamente os salvamentos necessários e desligar o computador após a conclusão de uma tarefa específica?
(Diga, depois de instalar as atualizações ou depois de baixar um arquivo grande.)

Eu também tenho postado em askubunt .

27
El Burro

Depende da tarefa iniciada. Se for alguma ferramenta de linha de comando, você pode simplesmente executar halt ou shutdown -h now:

  1. wget http://..../somelargefile; halt - halt será executado após wget

  2. wget http://..../somelargefile && halt - halt será executado se wget não retornar erros

  3. wget http://..../somelargefile || halt - halt será executado se wget retornar erros

Uma alternativa para isso é usar kshutdown - neste aplicativo, você pode especificar quais ações devem ser executadas (reinicialização/desligamento/hibernação/etc ou execução de comandos) e quando (depois de algum tempo ou quando outro aplicativo sair). Se você quiser usar esta ferramenta, precisará escolher o processo correto - alguns utilitários de atualização iniciam alguns subprocessos.

KShutdown

26
pbm

Todo processo possui um diretório nomeado de acordo com sua identificação de processo (pid) no sistema de arquivos proc. Portanto, você pode aguardar o término de um processo específico, verificando se o diretório existe repetidamente.

Você pode usar isso para executar um desligamento do sistema após o término do processo como este (substitua 2296 pelo pid para aguardar):

su -c 'while [[ -d /proc/2296 ]]; do sleep 1; done; poweroff'

Vantagens:

  • Você pode decidir se deseja ou não encerrar após ativar o comando Shell
  • O desligamento é emitido como raiz, o comando a aguardar não é necessariamente feito como raiz (não é necessário solucionar o prompt tardio de Sudo- password).

Desvantagens:

  • Pode acontecer que seu processo seja encerrado e o SO reutilize o mesmo pid para um processo recém-gerado dentro desse segundo (condição de corrida). Assim, você continuaria aguardando o término do novo processo.
19
moooeeeep

Você pode usar o && e || operadores para encadear comandos juntos. Por exemplo:

apt-get update && sleep 2 && init 0

que executará uma atualização no sistema usando o aptitude, aguarde 2 segundos e vá para o nível de execução 0, dependendo do sistema, isso pode ou não realmente desligar o hardware.

Para falar com uma ou mais operações após uma operação mais arbitrária, como um navegador da Web, presumivelmente, o download requer uma lógica adicional para assistir ao arquivo de download e verificar se o download foi de fato concluído; no entanto, a lógica do Shell é inalterada.

3
Tok

Se você deseja monitorar um processo já iniciado, pode fazer isso em Shell :

# while pgrep &>/dev/null -f process_name; do sleep 60; done; shutdown -h now
3
Gilles Quenot

Há um aplicativo chamado sentinella que pode fazer isso por você com sua GUI: sentinella

para instalá-lo:

Sudo aptitude update
Sudo aptitude install sentinella
1
shgnInc