Mover o programa em execução para segundo plano no bash

10

Se estou executando um programa no bash, posso suspendê-lo pressionando Ctrl+ Z. Se eu quiser deixar o programa em execução, posso usar o bgcomando Existe alguma maneira de colocar o programa diretamente em segundo plano, sem precisar digitar bg?

Esclarecimento : quero colocar o programa em segundo plano quando já estiver em execução, sem suspendê-lo.

Kalle Elmér
fonte
2
Isto não é uma duplicata. Não quero manter um programa em execução quando a janela do terminal estiver fechada e não consigo digitar um comando diferente. Quero colocar um processo em segundo plano quando ele já estiver em execução.
Kalle Elmér
1
sim, isso não é duplicado, reabra-o.
saji89
Obrigado por todos os caras que ajudaram a reabrir isso .. @Kalle, A questão agora está reaberta.
saji89
Muito obrigado! Quanto a encontrar uma resposta para a pergunta, acho que a única maneira é suspendê-la primeiro e depois colocá-la em segundo plano.
Kalle Elmér

Respostas:

4

Eu não acho que é possível mover um programa em execução para segundo plano (enquanto o processo ainda está em execução).
No entanto, existe um aplicativo chamado GNU-Screen , no qual você pode executar qualquer número de aplicativos baseados em console - shells de comandos interativos, aplicativos baseados em maldições, editores de texto etc. - em um único terminal.
Aqui está um bom tutorial sobre o GNU-Screen.
Observe que ele não faz exatamente o que você pediu, mas serve de qualquer maneira.
Exemplo:
Aqui está a implementação do que você pediu usando o GNU-Screen.

  1. Executar screen
    Você obterá detalhes sobre o software.Pressione retorno.
  2. Agora, você verá o seu terminal normal. No entanto, é uma janela da tela. Digite qualquer comando vlc. Ele iniciará o processo dentro dessa janela.
  3. Agora, para abrir uma nova janela, digite Ctrl+ Ae, em seguida, C.Você pode executar um novo comando aqui. Observe que o processo iniciado na janela 1 ainda está em execução.
  4. Para desanexar da tela, pressione Ctrl+ Ae, em seguida D. Agora você volta ao seu antigo termo. No entanto, qualquer processo iniciado na tela ainda estaria em execução.
acender
fonte
4

Para meu melhor conhecimento, você pode executá-lo e depois anexar um & depois assim:myprogram &

No entanto, posso estar muito errado aqui.

[EDIT]: Olhando mais de perto, se você executar o procedimento acima, o aplicativo será fechado quando você fechar o terminal. Se você deseja que o aplicativo seja executado em segundo plano, até onde eu saiba, o aplicativo precisa ser gravado de forma a suportar o comportamento do daemon.

[EDIT 2]: nohup command & parece estar mais próximo do que você deseja alcançar. O Nohup permitirá a execução de um aplicativo e ignorará sua entrada e redirecionará sua saída para um arquivo chamado nohup.outno diretório atual.

NlightNFotis
fonte
Realmente não me importo se estiver fechado quando fecho a janela do terminal. Tudo o que estou procurando é um atalho de teclado no bash que funcione como Ctrl + Z, mas manterá o processo em execução em segundo plano, em vez de suspendê-lo.
Kalle Elmér
0

Esta pode não ser uma resposta real. Gostaria de saber qual a diferença do Bash entre o Ubuntu e o MSYS.

Estou executando o MSYS e quando executo Application/Chrome &, ele passa imediatamente para o processo em segundo plano. Eu posso usar o MSYS bash quando o próximo prompt começar a piscar.

E estas são perguntas: Mover o programa em execução para segundo plano com objetivos semelhantes?

Edward Chan JW
fonte