a relação entre o terminal e o processo

0

Principalmente, se eu fechei o terminal atual, o sub_processo também está fechado. Claro, se eu usar suspender o processo e usar bg JobID wakeup, o processo é dividido com o terminal e executado em segundo plano. Então qual a relação entre o terminal atual e o processo que é acionado pelo terminal. Eles são pai-filho ou irmãos? Além do mais, como eu poderia usar a linha de comando para acionar um processo que não precisa ser anexado ao terminal.

    
por Pang Xuan 13.03.2012 / 07:41

2 respostas

2

Você está certo sobre o comportamento pai-filho. Os processos que você está iniciando na linha de comando estão recebendo seus sinais da instância do terminal. Uma vez que você feche o terminal, ele enviará um sinal HUP (desligamento) para os processos dependentes.

Isso é muito útil quando você tem apenas um terminal para que, uma vez que você efetue o logout, ele notifique todos os processos que o usuário efetuou o logout e eles devem encerrar sua atividade. No entanto, no seu caso, você deseja processar (es) para ignorar este sinal e continuar seu trabalho mesmo depois que o terminal foi fechado. Para isso, temos um comando especial chamado nohup que você deve prefixar com seu comando normal (por exemplo, nohup gedit ).

Você também pode perguntar onde a saída que foi para o console vai depois que um terminal é fechado. Bem, um arquivo no seu diretório pessoal chamado nohup.out está sendo criado e todas as saídas dos processos serão redirecionadas para ele.

Por favor note, o nohup não abre o processo em segundo plano, então você ainda precisará adicionar o postfix & amp; se você quiser (por exemplo, nohup gedit & ).

    
por yossile 13.03.2012 / 08:26
0

Você pode usar o comando nohup para impedir que um processo filho seja encerrado quando você fechar o terminal. Por exemplo, nohup gcalctool . Nohup é para "Não desligar".

    
por Jo-Erlend Schinstad 13.03.2012 / 07:52