tipicamente, quando executar um comando no terminal, terá de esperar até que o comando termine antes de poder introduzir outro. Isto é chamado de executar o comando no processo principal ou principal. Quando um processo é executado em primeiro plano, ele ocupa o seu shell, e você pode interagir com ele usando os dispositivos de entrada.
E se o comando demorar muito tempo a terminar, e quiser executar outros comandos entretanto? Você tem várias opções à sua disposição., A opção mais óbvia e direta é iniciar uma nova sessão de shell e executar o comando nela. Outra opção é executar o comando em segundo plano.
um processo de fundo é um processo / comando que é iniciado a partir de um terminal e executado em segundo plano, sem interação do Usuário.
neste artigo, vamos falar sobre os processos de fundo são o Linux. Vamos mostrar-lhe como iniciar um comando em segundo plano e como manter o processo em execução após a sessão da shell estar fechada.,
Executar um Comando Linux no plano de Fundo #
Para executar um comando no plano de fundo, adicionar o símbolo de e comercial (&
) no final do comando:
command &
O shell de IDENTIFICAÇÃO do trabalho (cercado com parênteses) e o processo de IDENTIFICAÇÃO será impresso no terminal:
25177
Você pode ter vários processos em execução no plano de fundo ao mesmo tempo.
o processo de fundo continuará a escrever mensagens para o terminal a partir do qual você invocou o comando., To suppress the stdout
and stderr
messages use the following syntax:
command > /dev/null 2>&1 &
>/dev/null 2>&1
means redirect stdout
to /dev/null
and stderr
to stdout
.,/div>
Para colocar um processo em segundo plano para o primeiro plano, use o fg
comando:
fg
Se você tem vários trabalhos em segundo plano, incluem %
e a IDENTIFICAÇÃO de trabalho após o comando:
fg %1
Para terminar o processo de plano de fundo, use o kill
comando seguido do ID de processo:
kill -9 25177
Mover um Processo de primeiro plano para plano de Fundo #
Para mover a execução de um processo de primeiro plano no plano de fundo:
- Parar o processo digitando
Ctrl+Z
., - Move o processo parado para o fundo, escrevendo
bg
.
mantenha os processos de fundo a correr após a saída de uma linha de comandos #
Se a sua ligação cair ou se sair da sessão da linha de comandos, os processos de fundo serão terminados. Existem várias maneiras de manter o processo em execução após o fim da sessão interativa shell.,
é Uma maneira de remover o trabalho a partir do shell de controle de trabalho usando o disown
shell internos:
disown
Se você tiver mais de um plano de trabalhos, incluem %
e a IDENTIFICAÇÃO de trabalho após o comando:
disown %1
Confirmar que o trabalho é removido da tabela de trabalhos ativos usando o jobs -l
comando. Para listar todos os processos em execução, incluindo o deserdado use o comando ps aux
.,
outra forma de manter um processo em execução após a saída da linha de comandos é usar nohup
.
O comando nohup
executa outro programa especificado como seu argumento e ignora todos os sinais SIGHUP
(suspensão). SIGHUP
é um sinal que é enviado para um processo quando seu terminal de controle é fechado.
Para executar um comando no plano de fundo usando o nohup
comando, digite:
nohup command &
A saída do comando é redirecionado para o nohup.out
arquivo.,
nohup: ignoring input and appending output to 'nohup.out'
Se você sair ou fechar o terminal, o processo não é terminado.
alternativas #
há um número de programas que lhe permitem ter várias sessões interativas ao mesmo tempo.
Screen #
Screen ou GNU Screen é um programa multiplexador de terminal que lhe permite iniciar uma sessão de ecrã e abrir qualquer número de janelas (terminais virtuais) dentro dessa sessão. Os processos em execução no ecrã continuarão a correr quando a sua janela não estiver visível, mesmo que seja desligado.,
Tmux #
Tmux é uma alternativa moderna à tela GNU. Com o Tmux, você também pode criar uma sessão e abrir várias janelas dentro dessa sessão. As sessões de Tmux são persistentes, o que significa que os programas em execução no Tmux continuam a correr mesmo que você feche o terminal.
Conclusion #
To run a command in the background, include &
at the end of the command.
Quando você executa um comando em segundo plano, você não tem que esperar até que ele termine antes que você possa executar outro.