Android

Comando Linux nohup

Aula Sobre o Comando NOHUP #LINUX

Aula Sobre o Comando NOHUP #LINUX

Índice:

Anonim

O comando nohup executa outro programa especificado como argumento e ignora todos os sinais SIGHUP (hangup). SIGHUP é um sinal enviado a um processo quando seu terminal de controle é fechado.

Geralmente, quando você executa um programa através de SSH, se a sua conexão cair ou você sair, a sessão será encerrada e todos os processos executados no terminal serão interrompidos. É aqui que o comando nohup é útil. Ele ignora todos os sinais de interrupção, e o processo continuará em execução.

Como usar o comando nohup

A sintaxe para o comando nohup é a seguinte:

nohup COMMAND

O comando não aceita outras opções, exceto o padrão --help e --version .

Vamos dar uma olhada no seguinte exemplo:

nohup mycommand

nohup: ignoring input and appending output to 'nohup.out'

nohup executa o comando mycommand em primeiro plano e redireciona a saída do comando para o arquivo nohup.out . Este arquivo é criado no diretório de trabalho atual. Se o usuário executando o comando não tiver permissões de gravação no diretório ativo, o arquivo será criado no diretório inicial do usuário.

Se você sair ou fechar o terminal, o processo não será encerrado.

Executando o comando em segundo plano

Usar nohup em primeiro plano não é muito útil porque você não poderá interagir com o shell até que o comando seja concluído.

Para executar o comando em segundo plano, adicione o símbolo & no final do comando:

nohup mycommand &

A saída inclui o ID da tarefa do shell (entre colchetes) e o ID do processo:

25177

Você pode usar o ID do trabalho para trazer o comando para o primeiro plano usando o comando fg .

Se, por algum motivo, você quiser finalizar o processo, use o comando kill seguido pelo ID do processo:

kill -9 25132

Redirecionando a saída para um arquivo

Por padrão, nohup redireciona a saída do comando para o arquivo nohup.out . Se você deseja redirecionar a saída para um arquivo diferente, use o redirecionamento de shell padrão.

Por exemplo, para redirecionar a saída padrão e o erro padrão para o mycommand.out você usaria:

nohup mycommand > mycommand.out 2>&1 &

Para redirecionar a saída padrão e o erro padrão para arquivos diferentes:

nohup mycommand > mycommand.out 2> mycommand.err &

Alternativas

Existem vários programas alternativos que você pode usar para evitar que um comando seja finalizado quando você fecha o terminal ou é desconectado.

Tela

Screen ou GNU Screen é um programa multiplexador de terminal que permite iniciar uma sessão de tela e abrir qualquer número de janelas (terminais virtuais) dentro dessa sessão. Os processos em execução na Tela continuarão em execução quando a janela não estiver visível, mesmo se você for desconectado.

Tmux

O Tmux é uma alternativa moderna à tela do GNU. Com o Tmux, você também pode criar uma sessão e abrir várias janelas dentro dessa sessão. As sessões do Tmux são persistentes, o que significa que os programas em execução no Tmux continuarão sendo executados mesmo se você fechar o terminal.

Disown

disown é um shell embutido que remove um trabalho de shell do controle de trabalho do shell. Ao contrário do nohup , você também pode usar o disown nos processos em execução.

Conclusão

nohup permite impedir que os comandos sejam finalizados quando você nohup logout ou sai do terminal.

terminal nohup