O & background bem, exceto os programas que retornam exigindo interação do console mais tarde (por exemplo, uma "atualização do apt-y" que eventualmente entra no estado STOP, pois deseja solicitar ao usuário uma pergunta "realmente forçar mesmo?" Muito mais tarde .... quando ninguém mais está assistindo).
Para tapar esse buraco e informar o processo que um terminal realmente nunca ficará disponível, anexo <& - a alguns dos meus comandos, desconectando-os completamente do terminal ativo, informando que o STDIN não é mais possível. Certifique-se de que / bin / bash é seu shell, se você o usar. O script continuará registrando quaisquer erros relacionados a nenhum pseudoterminal disponível para lançar qualquer prompt.
Por exemplo:
`./runme.sh &> runme.log <&- & disown`
é minha melhor maneira de me desassociar da atual sessão do terminal. STDOUT e STDERR são registrados no runme.log, não importa se o console ou o shell são encerrados mais cedo ou se você faz logout / su em uma conta diferente (sem lixo de terminal do runme) e agradece por negar até o pai-filho O relacionamento PID é removido.
UPDATE: mesmo com isso, tive problemas com um semáforo associando-o ao nome do pai original, então agora eu recomendo:
at now <<< "(cmd1; cmd2; etc.) &> logfile.log"
Obviamente, remova o &> se desejar receber a saída do CRON por email ou redirecione tudo para / dev / null em vez de um arquivo.
screen
) pode, entre outras coisas, ser usado para "encapsular" processos de execução mais longa. Você pode se desconectar dele, voltar ao shell, reconectar e ver a saída do processo em execução. O reencadeamento pode até ser feito em outro terminal, SSH etc. Também pode haver outros programas que permitem fazer esse tipo de coisa.