iniciando um programa do bash faz com que o bash vá para o novo prompt

3

Quando executo um programa no console, por exemplo

me@box:~$ firefox

Espero que o console registre mensagens de erro (acho que isso é std out ou std err?) e outros itens do programa, firefox, neste caso.

Mas hoje noto que o bash apenas abre o programa e vai para um novo prompt, por exemplo,

me@box:~$ firefox
me@box:~$

Como eu lanço um programa do bash para que as mensagens de erro sejam gravadas no console?

Por que alguns programas funcionam dessa maneira por padrão e outros (firefox) não funcionam?

    
por Dan Dman 06.06.2012 / 03:35

1 resposta

5

Você está certo de que este é o resultado de um processo já em execução, mas a menos que haja um bug no Firefox, ele não deve ser o resultado de um processo zumbi .

Quando você inicia o Firefox, a nova instância do Firefox verifica se o Firefox já está em execução. Se o Firefox já estiver em execução, em vez de continuar como uma instância separada, a instância muito nova se comunica com a instância já em execução e a inicia uma nova janela ou uma nova guia. Se uma URL foi especificada como um argumento de linha de comando para a instância muito nova do Firefox, ela comunica a URL para a instância já em execução, para que uma janela ou guia seja iniciada na instância já em execução, abrindo uma página com a URL você especificou. Uma vez que essa segunda instância muito nova tenha dito à instância original já em execução o que fazer, essa instância muito nova termina, deixando apenas uma instância.

Você pode verificar esse comportamento iniciando a primeira instância do Firefox com um URL como um argumento da linha de comando (por exemplo, firefox http://askubuntu.com/q/147059/22949 ) e, em seguida, criando uma nova janela / guia executando o comando firefox novamente com um diferente URL (por exemplo, firefox http://www.google.com ). Quando você examinar os processos em execução com ps x , verá que a única instância firefox em execução tem a primeira URL como seu argumento de linha de comando (porque o segundo comando não está mais em execução).

Muitas vezes é dito que você não pode executar mais de uma instância do Firefox de cada vez. É mais correto dizer que você não pode executar mais de uma instância do Firefox por vez, por mais de uma fração de segundo.

Devido a esse comportamento, quando você invoca uma segunda instância do Firefox de dentro de um shell, essa instância é encerrada quase imediatamente, fornecendo outro prompt como qualquer outro programa que tenha terminado a execução.

Outro programa comumente usado no Ubuntu que faz isso é o Nautilus (o navegador de arquivos).

É possível que o Firefox esteja em execução, mas não tenha janelas, embora normalmente isso só possa acontecer por um curto período de tempo depois de sair de todas as janelas do Firefox, a menos que haja um bug. É possível que isso seja o que estava acontecendo quando você executou firefox no Terminal.

No entanto, se o Firefox terminou mas ainda não foi removido da tabela de processos (que é o que significa ser um processo zumbi / processo extinto, e que eu assumo é o que você entende por "processo fantasma"), A nova instância do Firefox deve ser capaz de reconhecer isso e agir como se fosse a única instância em execução do Firefox (porque é). Se você achar que isso não está ocorrendo, então você deve reportar esse comportamento como um bug no pacote firefox do Ubuntu (ou contra o Firefox upstream se você estiver usando a distribuição upstream do Firefox ao invés da versão dos pacotes oficiais do Ubuntu).

Eu não sei quanto esforço você está disposto a colocar para descobrir o que está acontecendo, mas um acidente com o gerenciador de janelas ( compiz ) não deve esconder uma janela do Firefox, desde que compiz é realmente iniciado novamente. Se isso acontecer, isso é um erro em compiz ou firefox .

Se você puder fornecer a saída de ps x | grep -v grep | grep firefox enquanto o problema estiver ocorrendo - ou seja, depois de descobrir que executar firefox no Terminal retorna imediatamente ao seu shell - isso ajudaria muito na solução de problemas . Você pode editar sua resposta para incluir essas informações. Você também deve esclarecer se uma nova janela / aba do Firefox é aberta quando você executa firefox no Terminal, ou se executá-lo no Terminal não está tendo efeito.

    
por Eliah Kagan 06.06.2012 / 05:19