Geralmente, uso &
quando quero executar em segundo plano um comando que não demorará muito para ser executado ou em que não me importarei se o programa for encerrado se eu for inesperadamente desconectado de uma sessão .
xcalc &
rdesktop 1.2.3.4 &
./this_only_takes_a_few_seconds_but_i_want_my_shell_back.py &
Ao trabalhar em uma VPN ou em uma conexão remota desonesta, costumo usar nohup
para executar qualquer coisa que demore um pouco para ser executada. Ao executar grandes importações de dados em um host remoto, por exemplo, talvez você queira usar nohup
para garantir que a desconexão não faça com que você comece novamente quando se reconectar.
nohup ./do_data_load.py mydatafile.txt &
Ele também é usado quando um desenvolvedor não daemoniza um serviço corretamente, portanto, você precisa usar nohup
para garantir que ele não seja eliminado quando você efetuar logout.
nohup sillyd &
Se você esquecer de usar nohup
ao executar algo como os dois últimos exemplos, use o bash ou zsh builtin disown
para o mesmo efeito.
$ sillyd &
[1] 12345 # Whoops!
$ disown %1
É muito raro usar nohup
sem &
, pois você não pode realmente se reconectar à sessão nohup'd se estiver desconectado. Isso praticamente elimina sua utilidade para comandos interativos. No caso de você ter um comando interativo que deseja persistir nas sessões ou evitar desconexões complicadas, use screen
. O poder de fogo de uma sessão screen
totalmente armada e operacional está além do escopo deste post, portanto você deve dar uma olhada mais detalhada .