Execute o comando em outro terminal e feche-o sem matar o comando

1

Para fechar o terminal sem matar script / comando, usamos o operador & por último ao chamar o comando. Como:

gedit &

Aqui eu usei gedit como um comando de exemplo

A mesma coisa que quero fazer em outro terminal (do terminal atual). Eu estou usando o seguinte comando (s) para executar script / comando em outro terminal:

  • gnome-terminal -e 'gedit'
  • gnome-terminal -x bash -c 'gedit'

Mas aqui, se eu fechar novo terminal aberto , então o script / programa executado por [command] também será cancelado. Então, tentei usar & da seguinte forma:

  • gnome-terminal -e 'gedit' &
  • gnome-terminal -x bash -c 'gedit' &

Mas nenhum dos itens acima está funcionando.

Então, como eu posso conseguir isso: A partir do atual gnome-terminal , execute o comando em outro gnome-terminal e feche o terminal (novo-aberto) após o lançamento do comando sem matar command .

    
por Pandya 11.01.2015 / 10:07

3 respostas

0

Combinando nohup & screen , finalmente consegui o que quero.

Por kirill-a , o comando: gnome-terminal -e "nohup bash gedit" é sugerido.

No entanto, usando o comando acima, posso executar o comando e fechar o novo gnome-terminal sem matar o comando running, MAS preciso fechar manualmente a nova janela gnome-terminal aberta. E eu quero que seja fechado automaticamente após o lançamento do comando.

Por o comando Dimitar Dimitrov screen é sugerido.

Por fim, usei screen com nohup e meu comando final se tornou:

  • gnome-terminal -e 'screen nohup gedit'

  • gnome-terminal -x bash -c 'screen nohup gedit'

Usando um dos comandos acima eu recebo: comando iniciado em uma nova janela de terminal e depois do comando launch, novo terminal aberto fechado sem matar comando de execução.

    
por 12.01.2015 / 13:41
2

Você pode usar o comando nohup - ele desconecta o processo do terminal, portanto, mesmo se você fechar a janela do gnome-terminal, ele continuará a ser executado.

Exemplo: gnome-terminal -e "nohup bash gedit"

    
por 11.01.2015 / 10:34
1

Você pode usar o utilitário de tela do usuário. Screen é um gerenciador de janelas em tela cheia que multiplexa um terminal físico entre vários processos (normalmente shells interativos - para mais detalhes, execute man screen .

Assim que você executar o comando screen no shell, uma nova janela com um shell será criada. Você pode executar qualquer comando / script / daemon que desejar. Você pode facilmente desanexar da janela usando o atalho de tecla: Ctrl + A + D.

Para listar todas as sessões que você iniciou, use screen -list . Você pode anexar à última sessão desanexada usando screen -r ou, se quiser anexar em uma sessão específica, use screen -r <host.tty> .

Exemplo:

[root@dns-ldap ~]# screen -list
There are screens on:
        5708.pts-0.dns-ldap     (Detached)
        5648.pts-0.dns-ldap     (Detached)
        5725.pts-0.dns-ldap     (Detached)
3 Sockets in /var/run/screen/S-root.

[root@dns-ldap ~]# screen -r 5708.pts-0.dns-ldap #this will attach you to terminal 5708.pts-0.dns-lda. I have detached from the terminal usinc Ctrl+A+D
[detached]
[root@dns-ldap ~]# screen -r 5648.pts-0.dns-ldap
[detached]
[root@dns-ldap ~]#
    
por 11.01.2015 / 15:54