Quando abro gedit do terminal, eu sou incapaz de usar o terminal para qualquer outra coisa até que eu feche gedit. Por quê? [duplicado]

6

Eu sou muito novo no mundo do Linux. Estou executando o Ubuntu 15.04 em um laptop Lenovo. Meu emulador de terminal é o Terminal Gnome.

Eu sei algumas coisas. Digamos que eu digite cd Documents/terminalpractice/python_folder . Eu então digito, por exemplo, touch askubuntu.py . Eu então uso o comando gedit askubuntu.py .

Neste momento, o editor de texto gedit abrirá na minha tela e eu estou livre para tentar codificar o quanto eu quiser. No entanto, na janela do terminal, acho que o "processo" do gedit está sendo executado? Então eu não posso usar o terminal até que eu feche o gedit (eu salvo e depois clico no 'X' no canto superior).

Por que isso acontece? Eu posso usar a interface gráfica para abrir as pastas, clique duas vezes no meu askubuntu.py, e isso abrirá no gedit, sem afetar o que está acontecendo no terminal. Eu gostaria de saber por que isso acontece.

    
por themike_b 17.09.2015 / 17:54

4 respostas

16
  

Por que isso acontece?

Quando você acabou de executar:

 gedit filename

ele executa o processo em primeiro plano. Para enviá-lo para o segundo plano e continuar usando o terminal, use:

gedit filename &

Observe que isso (e, claro, o acima) executará gedit como um subprocesso do seu terminal, portanto, quando você sair do terminal, ele também sairá do gedit .

Então, para executá-lo 'graciosamente', use:

nohup gedit >/dev/null &

nohup executará o gedit desconectado do terminal e, portanto, estará imune a restrições. >/dev/null redireciona o stdout para um local especial dev/null , evitando assim a criação de um arquivo nohup.out .

Veja man nohup e este pergunta para mais informações.

    
por Ron 17.09.2015 / 18:08
0

Isso é normal. Se você executar um comando, o terminal não recebe outro comando até terminar com esse comando. A maneira de executar comandos como você deseja é pressionar ALT + F2 e digitar o comando que você precisa.

Se você fizer isso no terminal, ele não aceitará outro comando até que as instruções do presente comando terminem.

    
por userDepth 17.09.2015 / 18:03
0

É como executar um programa em modo texto ou aplicativo: ele começa a ser executado e o terminal (bem, não o terminal, mas o interpretador de comandos) não estará disponível até que o aplicativo seja concluído. Por exemplo, execute "nano" e você verá o mesmo comportamento (o interpretador de comandos "deixa de lado" enquanto o aplicativo é executado).

Só porque o aplicativo (gedit) abre uma janela gráfica adicional, isso não altera o comportamento básico subjacente.

Quando você inicia um comando no terminal, pode pedir ao interpretador de comandos para executá-lo em segundo plano usando & amp;:

gedit blahblah &

Se o comando já estiver em execução (com o terminal "travado"), você pode pressionar ctrl-z (que suspende o processo em execução no momento - observe que a janela do gedit não responde), digite bg (que envia o processo suspenso para o fundo).

    
por roadmr 17.09.2015 / 18:08
0

É porque você está lançando gedit do terminal, em primeiro plano. Qualquer comando que você executar dessa maneira ativará o prompt de comando até que o comando seja concluído. Então, quando você sair da janela aberta por gedit , o seu terminal funcionará novamente. Você pode executar comandos em segundo plano colocando & no final do comando.

Você pode ver todos os comandos em segundo plano que você iniciou usando o comando jobs .

Você também pode pressionar Ctrl + Z para suspender o comando, se você executá-lo normalmente, poderá enviá-lo para o segundo plano digitando bg .

    
por Arronical 17.09.2015 / 18:07