Como fazer um programa em execução continuar rodando após sair do Shell que o iniciou

image_pdfimage_print

Após fazer o logoff ou sair de um shell que deu início a um programa, sabemos que o comando em questão também será encerrado. Nesta dica, apresentaremos como fazer um comando em execução no Linux, permanecer, mesmo após o logoff ou fechar o shell que deu início. Isto vale e funciona inclusive com sessões SSH.

Para isto, os passos necessários são:

  1. No shell onde o comando foi executado:
    1. Se estiver em foreground (travando a linha de comando)
      1. Pause o programa ou comando em execução
        1. (CTRL+Z)
      2. Execute o comando para impedir que o programa seja fechado ao se fechar o shell (ignorar o sinal SIGHUP, enviado ao efetuar o logout)
        1. disown -h %jobid
          1. (jobid é o número apresentado [%jobid] quando você apertou CTRL+Z)
      3. Execute o comando para voltar a rodar o programa, mas agora, em background (segundo plano)
        1. bg %jobid
    2. Se o programa estiver em background (não estiver travando a linha de comando, executando em segundo plano)
      1. Execute o comando:
        1. jobs
      2. Verifique o número jobid do programa em execução desejado
      3. Execute o comando para impedir que o programa seja fechado ao se fechar o shell (ignorar o sinal SIGHUP, enviado ao efetuar o logout)
        1. disown -h %jobid
          1. (jobid é o número apresentado [%jobid] quando você apertou CTRL+Z)
      4. Execute o comando para voltar a rodar o programa, mas agora, em background (segundo plano)
        1. bg %jobid

E pronto! Seu programa / comando shell permanecerá em execução mesmo após você fechar o shell.

Gostou? Tire um minutinho e dê sua contribuição para Drall Dev Community no Patreon!