Como faço um processo rodar na Rede Linux sem precisar ficar com a sessão do SSH ligada?

Quando você entra por ssh, você cria um processo na sua shell default. Todos os processos que forem feitos por essa sessão serão filhos do processo ssh. Por isso, se seu processo ssh for morto, todos os processos filhos serão mortos. Para permitir que um processo continue rodando após seu pai ser morto, é preciso mandar uma mensagem para o SO saber disso. Para isso usamos o comando nohup.

Para criar um processo nohup (como exemplo vou usar um binary example.out como exemplo de processo).

nohup ./example.out

Para criar um processo nohup e deixa-lo em background:

nohup ./example.out &

Estes comandos criarão um arquivo nohup.out na sua home. Para redirecionar as saídas padrão e de erro:

nohup ./example.out >stdout.log 2>stderr.log

Para redirecionar as saídas tanto padrão quanto de erro para o mesmo out file:

nohup ./example.out >output.log 2>&1

Não esqueça de usar o & no final se você quiser colocar o processo em background:

nohup ./example.out >output.log 2>&1 &

Usar argumentos funciona igual:

nohup ./example.out first_arg sec_arg third_arg >output.log 2>&1 &

Assim como redirecionar entrada:

nohup ./example.out first_arg sec_arg third_arg <input.txt >output.log 2>&1 &
[index]