A diferença entre nohup e &

nada

Nohup é a abreviatura de no hang up, que significa não desligar. Execute o comando especificado pelo parâmetro Command e quaisquer parâmetros Arg relacionados, ignorando todos os sinais de desligamento (SIGHUP);
sintaxe: nohup Command [ Arg ... ] [ & ]
como nohup tail -f nohup.out

&

Refere-se à execução em segundo plano.
A sintaxe Command [ Arg ... ] [ & ]
é como sh test.sh &

A diferença entre sinais gratuitos:

  • nohup significa ignorar o sinal SIGHUP, portanto, ao executar nohup ./a.out, feche o shell (feche a sessão), então o processo start.sh ainda existe (imune ao sinal SIGHUP). No entanto, observe que se você usar Ctrl C diretamente no shell, o processo start.sh também desaparecerá (porque não é imune ao sinal SIGINT)
  • & significa rodar em segundo plano. Quando você executa ./a.out &, mesmo se você usar ctrl C, start.sh ainda será executado (porque é imune ao sinal SIGINT). Mas esteja ciente de que se você fechar o shell diretamente, o processo start.sh também desaparecerá. Pode-se observar que o background de & não é difícil (porque não é imune ao sinal SIGHUP).

A diferença entre entrada e saída:

  • nohup sh test.sh coloca a tarefa sh test.sh em segundo plano, fecha a entrada padrão e a recepção não pode mais receber nenhuma entrada (entrada padrão).Por padrão, toda a saída do trabalho é redirecionada para um arquivo chamado nohup. Entre os arquivos de saída, o arquivo nohup.out é gravado no diretório atual por padrão. Se não houver permissão de gravação no diretório, ele tentará gravar em $HOME/nohup.out. Se ainda falhar, o toda a execução do comando falhará. Mesmo que o xshell seja fechado e a sessão atual seja encerrada, ele continuará em execução.
  • sh test.sh &, coloque a tarefa sh test.sh em segundo plano e a saída padrão e as informações de erro padrão continuarão a ser geradas.

& permite que o comando seja executado em segundo plano. Se o comando pode continuar a ser executado após sair do terminal depende se o processo é um processo daemon. Caso contrário, nohup é necessário para ajudar.
No Linux/Unix, apenas os processos daemon podem continuar a ser executados após deixar o terminal, enquanto os processos comuns serão encerrados devido ao recebimento do sinal SIGHUP (sinal de suspensão) ao fechar o terminal. Portanto, para executar um processo normal por muito tempo, você precisa usar o comando nohup.

Uso comum:nohup sh test.sh &

Acho que você gosta

Origin blog.csdn.net/weixin_37909391/article/details/130733369
Recomendado
Clasificación