nohup
é provavelmente o que você deseja. A finalidade de nohup
é "executar um comando, ignorando os sinais de desligamento". Em outras palavras, se a conexão ssh
, telnet
, serial, etc for desconectada por qualquer razão (diferente do host travando, desligando ou reiniciando, é claro), seu programa continuará funcionando.
Você provavelmente também deseja executar o comando nohup
-ed em segundo plano (usando &
), pois todas as saídas serão redirecionadas para um arquivo.
Por exemplo:
nohup MyProgram.exe &
Por padrão, ele salvará a saída em ./nohup.out
ou ~/nohup.out
, mas você poderá redirecionar para um arquivo diferente, se desejar. Na página do manual:
If standard input is a terminal, redirect it from an unreadable file. If standard output is a terminal, append output to
nohup.out
if possible,$HOME/nohup.out
otherwise. If standard error is a terminal, redirect it to standard output. To save output to FILE, usenohup COMMAND > FILE
.
nohup
é melhor usado para programas não interativos que não esperam informações dos usuários.
Se você precisar executar um programa que interaja diretamente com os usuários (por exemplo, um aplicativo ncurses
), use um multiplexador de terminal como o GNU tela ou tmux ou byobu ou similar em vez de nohup
.
Os multiplexadores de terminal não apenas tornam seu programa imune a sinais de desligamento, mas também permitem a reconexão à mesma sessão de shell (e ao seu programa em execução) quando você efetua o login novamente após uma desconexão. Eles também permitem várias sessões de shell sobre a única conexão (por exemplo, ssh para sua máquina remota, executar screen
e você pode criar, destruir e alternar entre tantas "janelas" de shell quanto desejar).
BTW, todos esses programas fornecem o shell padrão para que você possa executar script
dentro deles, se desejar.
Eu tenho um link para as páginas iniciais desses programas, mas você provavelmente não precisa compilá-los para instalá-los - eles estão disponíveis como pacotes pré-compilados para a maioria das distribuições Linux, FreeBSD, Mac OS X, solaris e muito mais.