Como faço para desligar o sistema depois que um determinado processo sai

1

Estou baixando algum software; Eu posso ver o pid do processo de download com top . Digamos que seja 1001 .

Como posso fazer com que meu computador seja desligado após o processo 1001 sair?

    
por Thompson 19.05.2014 / 19:07

3 respostas

1

Aqui vai você. testado e funcionando.

while [ 1 ] ; do 
   ps 1001 > /dev/null || { shutdown -h now ; break ; }
   sleep 1
done
    
por 19.05.2014 / 19:11
1

Este laço de uma linha verifica a saída ps para o ID do processo 1001, dorme por 2 segundos e então verifica novamente até que não o encontre (o processo foi encerrado), ponto em que o loop termina e passa para o próximo comando que é um desligamento.

while [[ $(ps 1001 &> /dev/null)$? -eq 0 ]]; do sleep 2 ;done && shutdown -h now

Se você quer ter certeza de que o processo 1001 é o processo que você acha que é, você pode adicionar o grep para testar, por exemplo, se o processo for o iTunes, você poderia fazer:

while [[ $(ps 1001 |grep -q "iTunes" &> /dev/null)$? -eq 0 ]]; do sleep 2 ;done && shutdown -h now

    
por 20.05.2014 / 04:01
0

Execute os seguintes comandos:

while kill -0 1001 &> /dev/null; 
do
   sleep .1
done;
poweroff

O uso de kill -0 não envia nenhum sinal real, mas reportará true enquanto um determinado processo estiver em execução. O redirecionamento &> vai para /dev/null (bit-bucket), portanto, quaisquer erros ou mensagens de sucesso não são incluídos na saída do programa. Isso durará um décimo de segundo e verificará o processo até que ele não esteja mais em execução, então executará um poweroff .

    
por 20.05.2014 / 03:00