Processo em execução no fundo com nohup

Eu trabalho em servidores remotos muito. Eu uso SSH para se conectar aos meus servidores. Muitas vezes eu corro um processo que eu preciso deixar correr mesmo depois de eu fechar a minha conexão SSH. Este poderia ser um shell script que analisa através de meus arquivos de log ou muito grande restauração de banco de dados mysql. Foi quando eu voltar para um utilitário de linha de comando do Linux chamada “nohup”. “Nohup” é a abreviação de “não hangup”, que se traduz em “ignorar o sinal de desligar”. O sinal de “desligar” é o que acontece quando você sair. O “nohup” faz é que ele permite que você efetuar login no servidor, inicie um processo e logout. O processo continua correndo mesmo depois de ter desconectado. Quando você logar novamente, você pode acessar esse processo novamente, desde a sua ainda em execução.

Video: Process Control 5 - Starting Processes in the Background with &, nohup and top

A sintaxe básica do “nohup” é:

# nohup [comando] &

Video: Using nohup to allows jobs to continue on logout

Substitua “[comando]” com o nome do seu script shell, ou um comando. O "&”No final faz com que o comando ou script executado como um processo de fundo. Aqui está um exemplo de como você usaria “nohup” para fazer um backup de um grande banco de dados mysql em seu servidor remoto. Em primeiro lugar, eu entro no meu servidor remoto usando SSH:

# ssh [email protected]

Então eu executar o comando “mysqldump -ucalvin -phobbes largedatabase gt; largedatabase.db”no‘’modo, adicionando um‘nohup nohup’antes e“&”Após o comando:



# nohup mysqldump -ucalvin -phobbes largedatabase gt; largedatabase.db &
[1] 3999
# Nohup: anexando saída para `nohup.out`

Video: Linux Command-Line Interface (CLI) Tutorial #029 - nohup and disown commands, ampersand (&) operator

Há duas linhas de saída que você recebe. O “3999" na primeira linha é o ID do processo do processo que eu só gerado, enquanto o “nohup: anexando saída para` nohup.out `”significa que o posto para fora que geralmente vêm ao terminal está sendo encaminhado para um arquivo chamado “nohup.out” no diretório do qual você lançou o comando. Você pode verificar se o processo ainda está em execução por pesquisar através de todos os processos em execução usando o ID do processo:

# ps -ef | grep 3999
Calvin 3999 29848 0 18:42? 00:00:00 / usr / bin / mysqldump
Calvin 6575 31852 0 18:44 pts / 2 00:00:00 grep 3999

Video: Introduction to Bash Scripting 16 - Sending Email (Part 3)

Quando o processo é feito em execução, você verá uma saída na linha de comando como este:

[1] + Feito nohup mysqldump -ucalvin -phobbes largedatabase gt; largedatabase.db

Você pode verificar o arquivo “nohup.out” para verificar se há erros ou outras mensagens que estavam de saída, enquanto o processo estava correndo. Se o arquivo permanece em branco que está tudo bem. Isso significa que há mensagens eram de saída enquanto o processo estava correndo.


Artigos relacionados