por que jobs não lista comandos do script

por que jobs não lista comandos do script

Tenho um script que executa alguns programas em segundo plano, mas após executá-lo, eles não são listados pelo comando 'jobs'. Por que é isso?

(./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 aparecerão em 'jobs'

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

Responder1

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

Por que? Porque o shell atual pode ter seu próprio trabalho nº 1. 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 filho no antigo shell pai - o líder, o comando jobs funcionará. Caso contrário, não.

informação relacionada