Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Executando programas no terminal

Olá!

Ao tentar executar um programa diretamente no terminal, como o firefox ou o gedit, o programa abre normalmente na interface gráfica do SO, porém, aparentemente, ele também começa a rodar no terminal, o que me impossibilita de voltar a utilizar as linhas de comando a não ser que eu feche ou abra o terminal novamente. Aparentemente, também, não há qualquer comando que eu digite (como um exit, ou quick, ou apenas apertar esc) para eu sair do programa que está rodando no terminal. Existe alguma forma de abrir um programa de interface gráfica como o firefox ou gedit via terminal, sem que ele comece a rodar no terminal? Ou existe algum comando genérico para eu sair desse programa que está rodando no terminal?

4 respostas
solução!

Olá Natan,

Uma das formas de fazer isso é executar o seu programa no plano de fundo utilizando & ao final do comando.

Assim ao executar o gedit, utilize o comando gedit &.

Você vai perceber que assim que você executar esse comando o terminal vai exibir algo da forma: [1] 4984. Isso nada mais é que o id do processo que está executando aquele programa no plano de fundo. No entanto você vai perceber que se você fechar aquele terminal a sua aplicação também vai fechar, o que pode não ser interessante no seu caso ... Isso acontece porque a aplicação ainda está ligada ao contexto daquele terminal que você utilizou para executá-la. Você pode removê-la daquele contexto executando disown [PID], onde PID é o número do id do seu processo (no exemplo que eu coloquei seria o 4984).

Agora você pode fechar tranquilamente o seu terminal que o programa continuará executando.

Uma outra opção caso você já tenha executado o comando geditpor exemplo é seguir os seguintes passos:

  • Aperte CTRL + Z para parar o processo
  • Utilize o comando jobspara listar os processos vinculados ao seu terminal - deve aparecer algo como:

    [1] + Stopped gedit

  • Utilize o comando bg %1, onde 1 é o mesmo número entre colchetes no valor do job acima, para voltar a executar o processo que havia sido parado no plano de fundo.

  • Desvincule do seu terminal com disown %1

Ah, tem mais uma também caso você queira preservar o Input/Output para efeitos de log do que está acontecendo na aplicação.

Você pode executar o comando:

nohup gedit &

Isso já executa o seu processo e destaca do terminal, mas salva o output num arquivo : nohup.out. Caso você queira que salve num arquivo com outro nome, como por exemplo log/gedit.log basta fazer:

nohup gedit > log/gedit.log &

Pode não ser o seu caso pois você não desonvolveu as aplicações do gedit e do google chrome, mas em aplicações que você mesmo desenvolve e deseja executar no plano de fundo pode ser util para detectar erros.

Espero ter ajudado

Muitíssimo obrigado pelas dicas excelentes Arthur!