Quando devo usar “nohup” e quando devo usar “&”?

15

Eu nunca sei quando é a melhor hora para usar o nohup e o & no final do comando.

    
por Alex 11.05.2011 / 10:24

3 respostas

19

Nohup faz um programa ignorar o sinal HUP, permitindo que ele rode após o terminal atual ser fechado / o usuário ser desconectado. Nohup não envia programa para o plano de fundo.
& no final do comando está relacionado ao controle de tarefa do shell, permitindo que o usuário continue trabalhando na sessão atual do shell.   Normalmente, nohup e & são combinados para iniciar o programa que é executado após o logout do usuário e permite continuar o trabalho na sessão atual do shell.

    
por 11.05.2011 / 10:37
12

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 .

    
por 11.05.2011 / 11:02
0

nohup: logout do usuário atual, o processo não irá parar

& amp ;: com este símbolo, não haverá saída no terminal atual, o processo executando o plano de fundo

    
por 11.05.2011 / 10:40

Tags