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 .
Depende da tarefa iniciada. Se for alguma ferramenta de linha de comando, você pode simplesmente executar halt
ou shutdown -h now
:
wget http://..../somelargefile; halt
- halt
será executado após wget
wget http://..../somelargefile && halt
- halt
será executado se wget
não retornar erros
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.
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:
Sudo
- password).Desvantagens:
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.
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
Há um aplicativo chamado sentinella que pode fazer isso por você com sua GUI:
para instalá-lo:
Sudo aptitude update
Sudo aptitude install sentinella