Como desligar o computador após a conclusão de uma tarefa?
25
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.)
wget http://..../somelargefile && halt- haltserá executado se wgetnão retornar erros
wget http://..../somelargefile || halt- haltserá executado se wgetretornar erros
Alternativa para isso é usar kshutdown- neste aplicativo, você pode especificar que ação deve ser executada (reinicialização / desligamento / hibernação / etc ou execução de comando) 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.
Você também pode dar shutdownum tempo para esperar; não é necessário usar o kshutdown para esse fim.
Cascabel
11
Não, mas shutdownnão há como esperar por um evento real.
Shadur 31/10
18
Todo processo possui um diretório nomeado de acordo com sua identificação de processo (pid) no procsistema de arquivos. 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 sudoprompt de atraso da senha).
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.
Ponto principal: Isso funciona mesmo que o processo tenha começado.
Heisenberg
Se você iniciou algo a partir de um terminal que ainda está aberto psno mesmo terminal, deverá ajudá-lo a identificar o PID do CMD. Se o processo foi / é em outro pipping terminal de saída ps para tudo através de grep para filtrar para o seu comando deve ajudá-lo a encontrá-lops -elf | grep <command_related_word>
Taft
Melhor verificar a minha resposta com base em pgrepaka grep processo ...
Você pode usar os operadores &&e ||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 seu 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 realmente concluído, no entanto, a lógica do shell não mudou.
shutdown
um tempo para esperar; não é necessário usar o kshutdown para esse fim.shutdown
não há como esperar por um evento real.Todo processo possui um diretório nomeado de acordo com sua identificação de processo (pid) no
proc
sistema de arquivos. 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):
Vantagens:
sudo
prompt de atraso da senha).Desvantagens:
fonte
ps
no mesmo terminal, deverá ajudá-lo a identificar o PID do CMD. Se o processo foi / é em outro pipping terminal de saída ps para tudo através de grep para filtrar para o seu comando deve ajudá-lo a encontrá-lops -elf | grep <command_related_word>
pgrep
aka grep processo ...Você pode usar os operadores
&&
e||
para encadear comandos juntos. Por exemplo: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 seu 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 realmente concluído, no entanto, a lógica do shell não mudou.
fonte
Se você deseja monitorar um processo já iniciado, você pode fazer isso em um shell :
fonte
Há um aplicativo chamado sentinella que pode fazer isso por você com sua GUI:
para instalá-lo:
fonte