Essa é uma dica simples e rápida, mas que me quebrou um galho (ou seria árvore?) um dia desses. Eu precisava deixar um comando rodando num servidor remoto, porém não continuaria conectado via ssh neste. Ao executar o comando passando o famoso "&" no final da linha o terminal ficava livre, mas ao deslogar do terminal o comando recebia um sinal de hangup e "morria".
Enfim, pra rodar um comando em background e fazer com que o mesmo fique imune a sinais de hangup, usa-se o comando nohup.
Exemplo de uso:
# nohup ./comando_que_vai_demorar &
A saída do comando será gravada no arquivo nohup.out, que será criado no diretório corrente (onde o comando foi executado). Agora você pode desconectar do terminal remoto e ir pra casa tranquilo. Simples assim!
[3] Comentário enviado por brunocarezza em 11/05/2010 - 07:08h
O Screen não tem o mesmo objetivo que o nohup. O Screen é um gerenciador de janelas para ambiente texto com um número desconsertante de opções. São finalidades muito diferentes. Uma comparação medíocre.
[18] Comentário enviado por linscomt em 11/09/2020 - 02:27h
Eu passo aqui sempre desde 2018 tenho péssima memoria.
Estava fazendo uns teste e percebi que quando enviava
code terminal: sudo nohup node "index.js" &
e teclava ^C 'Control+C' ele ficava em back... segundo plano mas ao fechar o terminal percebia que parava de rodar, então comecei os teste criei um arquivo "execute.sh" e dentro dele
#!/bin/bash or #!/bin/sh
nohup node "index.js" &
Então ao dar o comando no terminal :sudo sh execute.sh &
e logo percebendo que estava executando normal dei o comando ^C depois fechei o terminal e a aplicação continuou rodando em segundo plano até
alguém dar um kill nele. Achei interessante até fiz um fileA.sh que executa um fileB.sh para deixar o fileB.sh em segundo plano.
Como sou ruim de memoria tomara que fique aqui, para sempre poder lembrar me.