Como executar comando em segundo plano no Linux

Como executar comando em segundo plano no Linux

A execução de comandos ou processos em segundo plano em um sistema Linux se torna uma tarefa comum se você precisar liberar seu terminal ou se desconectar de uma sessão SSH. Isso é especialmente verdade.

Temos algumas opções no Linux para executar comandos em segundo plano. Neste guia, abordaremos alguns métodos diferentes e mostraremos como usá -los através de exemplos.

Neste tutorial, você aprenderá:

  • Como colocar um comando em segundo plano
  • Como iniciar um comando em segundo plano
  • Como fechar o terminal e manter o trabalho em segundo plano
  • Como usar o comando de tela
Colocando um processo em segundo plano e movendo -o para o primeiro plano Requisitos de software e convenções de linha de comando Linux
Categoria Requisitos, convenções ou versão de software usada
Sistema Qualquer distro Linux
Programas Utilitários Linux padrão, tela
Outro Acesso privilegiado ao seu sistema Linux como raiz ou através do sudo comando.
Convenções # - requer que os comandos Linux sejam executados com privilégios root diretamente como usuário root ou por uso de sudo comando
$ - Requer que os comandos do Linux sejam executados como um usuário não privilegiado regular

Coloque um comando em execução em segundo plano

Quando você executa um comando que deseja continuar correndo por um longo tempo, o problema é que seu terminal atual é dedicado ao comando. Você não pode continuar usando o terminal e também não pode fechá -lo, porque isso terminará o comando que está sendo executado atualmente.

Se você tem um comando em execução e precisa colocá -lo em segundo plano para liberar seu terminal, você pode pressionar Ctrl + z no seu teclado para interromper o processo. Aqui está um exemplo.

$ SLUGO 10000 ^z [1]+ Sono parado 10000 

Para ver uma lista de empregos em segundo plano, use o empregos comando.

$ jobs -l [1]+ 1650 parou de dormir 10000 


Para trazer um emprego de volta ao primeiro plano, podemos usar o FG comando.

$ fg 

Se tivéssemos vários empregos parados, precisaríamos usar um sinal percentual e especificar o ID do trabalho para trazer o apropriado de volta ao primeiro plano.

$ fg %1 

Ótimo, agora podemos colocar processos em segundo plano e trazê -los de volta quando os queremos. Mas e se quisermos que o comando continue executando enquanto estiver em segundo plano? Para isso, podemos usar o bg comando, seguido por um ampersand e o id de trabalho. O comando a seguir fará com que nosso trabalho parado, mantendo -o em segundo plano.

$ bg %1 [1]+ sono 10000 & 

Agora podemos ver que o processo ainda está em segundo plano, mas mostra um status de "correr" em vez de "parar.”

$ jobs -l [1]+ 1650 Sono 10000 e 

Ainda há uma coisa a ter em mente. Você não pode fechar seu terminal atual ou esses trabalhos de fundo fecharão. Se você precisar fechar o seu terminal e não deseja que esses comandos parem, você precisa "rejeitar" o (s) trabalho (s). Se você tiver apenas um emprego em segundo plano, o comando a seguir funcionará:

$ Dened 

Se você tiver vários, precisará especificar o ID do trabalho.

$ down %1 

Você não verá mais o trabalho em sua mesa de empregos quando executar o empregos comando. Agora é seguro fechar o terminal e seu comando continuará correndo.

$ jobs -l 

Você ainda pode ficar de olho no seu comando em execução usando o comando ps.

$ ps aux | Grep Sleep Linuxco+ 1650 0.0 0.0 8084 524 pts/0 s 12:27 0:00 Dormir 10000 

E se você quiser impedir que o comando seja executado, pode usar o comando Kill e especificar o ID do processo.

$ Kill 1650 

Inicie um comando em segundo plano

Agora vimos como colocar um processo em execução em segundo plano e lembrá -lo mais tarde. Mas também temos a opção de iniciar o comando em segundo plano no início. Tudo o que você precisa fazer é colocar um ampers e no final de qualquer comando Linux.

$ Sleep 10000 e [1] 1900 


Assim como antes, podemos ver o trabalho listado com o empregos comando. Desta vez, porém, o trabalho já está em execução e não precisamos iniciá -lo manualmente em segundo plano.

$ jobs -l [1]+ 1900 Sono 10000 e 

Fechar terminal e manter o trabalho em segundo plano

Já vimos em um exemplo anterior de como podemos usar o Denem comando para garantir que o comando continue em execução depois que fechamos nosso terminal. Outra opção é o nohup comando.

Nohup diz a um processo para ignorar qualquer Sighup (Hishup) sinaliza que recebe. O sinal de suspiro é enviado para um trabalho de fundo sempre que o terminal atual é fechado. Assim, podemos ter um emprego em segundo plano, fechar o terminal e ainda vê -lo funcionando em segundo plano. Aqui está um exemplo.

$ Nohup Sleep 10000 e [1] 1908 Nohup: ignorando a entrada e a aplicação de saída para 'nohup.fora' 

Fechamos o terminal e o reabrimos, depois executamos o seguinte comando, que mostra que o comando ainda está em execução.

$ ps aux | Grep Sleep Linuxco+ 1908 0.0 0.0 8084 524 ? S 13:05 0:00 Dormir 10000 

Usando o comando de tela

Até agora, cobrimos os métodos Linux padrão para executar comandos em segundo plano. No entanto, também existem pacotes de software extras que podem ser usados. Talvez o mais popular seja o comando de tela.

Você pode ver o link acima mencionado para instruções de instalação e uso detalhado, mas a essência é assim:

  1. Execute o tela comando para iniciar uma nova "tela". Opcionalmente, inclua o -S opção para dar um nome.
    $ tela -S myCommand 
  2. Na nova sessão de tela, execute o comando ou script que você deseja colocar em segundo plano.
    $/PATH/TO/MYScript.sh 
  3. Imprensa Ctrl + a no seu teclado e depois D. Isso destaca a tela, então você pode fechar o terminal, o logout da sua sessão SSH, etc., e a tela persistirá. Para ver uma lista de telas, use este comando.
    $ tela -ls Há uma tela em: 2741.MyCommand (04/08/2021 13:13:24) (destacado) 1 soquete em/run/screen/s-linuxconfig. 


  4. Para recolocar em uma tela, use o seguinte comando, substituindo o número abaixo com o ID do processo.
    $ tela -r 2741 

Pensamentos finais

Neste guia, vimos vários métodos diferentes para executar um comando em segundo plano no Linux. Isso incluiu utilitários de linux padrão e o comando de tela. Também vimos como gerenciar o processo de fundo movendo trabalhos para o primeiro plano, telas de recolocação e matando processos de fundo.

Tutoriais do Linux relacionados:

  • Coisas para instalar no Ubuntu 20.04
  • Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
  • Uma introdução à automação, ferramentas e técnicas do Linux
  • Comandos Linux: os 20 comandos mais importantes que você precisa para…
  • Como lidar com eventos ACPI no Linux
  • Comandos básicos do Linux
  • Coisas para fazer depois de instalar o Ubuntu 22.04 Jellyfish…
  • Instale Arch Linux na estação de trabalho VMware
  • Download do Linux
  • Coisas para instalar no Ubuntu 22.04