porque as tarefas não listam comandos do script

2

Eu tenho um script que executa alguns programas em segundo plano, mas depois de executá-lo, eles não são listados pelo comando 'jobs'. Por que isso acontece?

(./m_prog -t m_prog1 m_config) &
(./m_prog  -t m_prog2  m_config) &
(./m_prog  -t m_prog3  m_config) &

Mas se eu executar cada um deles no terminal, eles aparecem em 'jobs'

Como posso obter o mesmo efeito de comandos executados em um script?

    
por fersarr 09.01.2015 / 11:17

1 resposta

3

jobs funciona apenas para a instanciação do shell que criou os jobs. jobs n usa números não o pid. Uma vez que o shell é executado dentro de um script (outro novo processo), o shell antigo que iniciou o script, os jobs (emitidos no shell antigo) não podem mais fazer referência ao job # 1 no novo shell.

Por quê? Porque o shell atual poderia ter seu próprio trabalho # 1. O UNIX / Linux mantém o que é conhecido como grupo de processos ou sessão. O líder do grupo da sessão é o processo que possui o tty e interage com ele através do teclado. Procure a descrição da função setsid () em seu manual. Se o processo foi iniciado e ainda é executado como um filho sob o shell pai antigo - o líder, o comando jobs funcionará. Caso contrário, não.

    
por 09.01.2015 / 11:45