Android

Como executar comandos linux em segundo plano

Controle de Tarefas no shell - comandos bg, fg, jobs - Linux

Controle de Tarefas no shell - comandos bg, fg, jobs - Linux

Índice:

Anonim

Normalmente, quando você executa um comando no terminal, precisa aguardar até que o comando termine antes de poder inserir outro. Isso é chamado de execução do comando no processo em primeiro plano ou em primeiro plano. Quando um processo é executado em primeiro plano, ele ocupa seu shell e você pode interagir com ele usando os dispositivos de entrada.

E se o comando demorar muito para terminar e você quiser executar outros comandos enquanto isso? Você tem várias opções à sua disposição. A opção mais óbvia e direta é iniciar uma nova sessão do shell e executar o comando nela. Outra opção é executar o comando em segundo plano.

Um processo em segundo plano é um processo / comando iniciado em um terminal e executado em segundo plano, sem interação do usuário., falaremos sobre os processos em segundo plano é o Linux. Mostraremos como iniciar um comando em segundo plano e como manter o processo em execução após o encerramento da sessão do shell.

Execute um comando Linux em segundo plano

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

command &

O ID do trabalho do shell (entre colchetes) e o ID do processo serão impressos no terminal:

25177

Você pode ter vários processos em execução em segundo plano ao mesmo tempo.

O processo em segundo plano continuará gravando mensagens no terminal a partir do qual você chamou o comando. Para suprimir as mensagens stdout e stderr use a seguinte sintaxe:

command > /dev/null 2>&1 &

>/dev/null 2>&1 significa redirecionar stdout para /dev/null e stderr para stdout .

Use o utilitário jobs para exibir o status de todos os jobs interrompidos e em segundo plano na sessão atual do shell:

jobs -l

A saída inclui o número do trabalho, o ID do processo, o estado do trabalho e o comando que iniciou o trabalho:

+ 25177 Running ping google.com &

Para trazer um processo em segundo plano para o primeiro plano, use o comando fg :

fg

fg %1

Para finalizar o processo em segundo plano, use o comando kill seguido pelo ID do processo:

kill -9 25177

Mover um processo em primeiro plano para o plano de fundo

Para mover um processo em primeiro plano em execução em segundo plano:

  1. Pare o processo digitando Ctrl+Z Mova o processo parado para o segundo plano digitando bg .

Manter processos em segundo plano em execução após a saída de um shell

Se sua conexão cair ou você sair da sessão do shell, os processos em segundo plano serão encerrados. Existem várias maneiras de manter o processo em execução após o término da sessão do shell interativo.

Uma maneira é remover o trabalho do controle de trabalho do shell usando o shell rejeitado incorporado:

disown

disown %1

Confirme se o trabalho foi removido da tabela de trabalhos ativos usando o comando jobs -l . Para listar todos os processos em execução, incluindo os renegados, use o comando ps aux .

Outra maneira de manter um processo em execução após a saída do shell é usar nohup .

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.

Para executar um comando em segundo plano usando o comando nohup , digite:

nohup command &

A saída do comando é redirecionada para o arquivo nohup.out .

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

Alternativas

Existem vários programas que permitem ter várias sessões interativas ao mesmo tempo.

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 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 continuam sendo executados mesmo se você fechar o terminal.

Conclusão

Para executar um comando em segundo plano, inclua & no final do comando.

Quando você executa um comando em segundo plano, não precisa esperar até que ele termine para poder executar outro.

nohup fg bg jobs renúncia terminal