Eu sou um novato no Ubuntu. Eu aprendi um comando
nohup [command]
- corre <command>
imune ao sinal de interrupção
Não consigo entender o significado de " imune ao sinal de desligamento ". De que tipo de sinal está falando? E, por favor, diga-me como usar este comando com um exemplo.
command-line
nohup
coding_ninza
fonte
fonte
disown
é uma alternativa melhor paranohup
. Coloque um plano de fundo em um comando comcommand &
ouCtrl-Z
e use-odisown
para desanexá-lo do shell.Respostas:
Vamos considerar que você abriu um
gedit
editor de texto em um terminal e está trabalhando nele. Se você fechar o terminal antes de fechargedit
, o gedit também será fechado assim que o fechar. Então, o que está acontecendo aqui? Égedit
executado como um processo filho sob o terminal. Quando você fecha o terminal, um sinal de desligamento (SIGHUP
) é enviado ao processo que interrompe o processo filho.Por outro lado, se você deseja que seu processo filho (aqui
gedit
) continue em execução mesmo após o fechamento do terminal pai, você deseja que seu processo seja imune ao sinal de interrupção. Para que o fechamento do terminal não feche o processo filho.nohup
faz exatamente esse trabalho.nohup
não desconecta um comando do terminal , faz com que seu script ignore o SIGHUP e redireciona stdout / stderr para um arquivo nohup.out, para que o comando possa continuar em execução em segundo plano após o logout. Se você fechar o shell / terminal ou efetuar logoff, seu comando não será mais filho desse shell. Pertence ao processo init. Se você pesquisar,pstree
verá que agora pertence ao processo 1 (init). Isso não pode ser trazido de volta ao primeiro plano porque o primeiro plano não existe mais.fonte
Além do que a @sourvac escreveu, esse é um legado do Back In The Day, quando as pessoas se conectavam por meio de terminais burros somente de texto, geralmente via modem (o original, analógico de 110 baud): o "desligamento" está literalmente "desligando o telefone "
Um pid imune ao sinal de interrupção continuará sendo executado mesmo depois que você sair e desligar o telefone . Isso era muito útil em computadores lentos quando os trabalhos eram executados por horas e horas, e você não podia ficar conectado (alguém precisava usar o terminal, precisava usar o telefone, a estática na linha pode "interromper" a conexão etc).
fonte