Além disso, nohup
você pode iniciar o processo em segundo plano usando "&" e o subshell:
Sufixe o comando com & e coloque-o entre parênteses
$ (thecommand args &)
Vamos dizer que seu processo ganha o pid 1922:
$ ps -f
UID PID PPID C STIME TTY TIME CMD
usr 11473 2643 0 15:07 pts/1 00:00:00 bash
usr 11922 1 0 15:11 pts/1 00:00:00 thecommand
Observe que ele não está conectado ao processo de shell 11473, que era seu pai original. Portanto, se você sair ou matar o shell atual (11473), o processo 11922 continuará em execução e será desconectado dos pts.
Tente sair do shell e entre em um novo shell. Mesmo que este shell esteja conectado aos mesmos pontos, você pode ver o processo agora sem pontos:
$ ps -fp 11922
UID PID PPID C STIME TTY TIME CMD
usr 11922 1 0 15:11 ? 00:00:00 thecommand
Não sei como é chamado ou documentado no Posix, mas eu uso dessa maneira desde 1990 no bsh, ksh e agora no bash.
Por fim, você pode usar o bg
comando shell interno:
Basta iniciar o programa e se você decidir fazer uma pausa ou planejar mantê-lo em segundo plano, digite CTRL + Z:
$ thecommand
^Z
[1] Stopped thecommand
Agora deixe-o continuar sendo executado em segundo plano:
$ bg
[1]+ thecommand &
Se você observar as informações do processo, ele ainda possui um processo pai:
$ ps -f
UID PID PPID C STIME TTY TIME CMD
usr 12046 2643 0 15:18 pts/6 00:00:00 bash
usr 12571 12046 0 16:00 pts/6 00:00:00 thecommand
usr 12601 12046 0 16:04 pts/6 00:00:00 ps -f
Então, saia do processo atual. O processo em execução em segundo plano é desanexado do pai original e continua em execução em segundo plano:
$ exit
Entre novamente e veja as informações do processo:
$ ps -f 12571
UID PID PPID C STIME TTY TIME CMD
usr 12571 1 0 16:00 ? 00:00:00 thecommand
disown
comando. Ele retornou: bash: AVISO: Excluir parou de trabalho 1 com o grupo processo de 24876. Agora meu trabalho está listado nops -all
, mas não parecem funcionar (uso da CPU é 0%)