por qué los trabajos no enumeran los comandos del script

por qué los trabajos no enumeran los comandos del script

Tengo un script que ejecuta algunos programas en segundo plano, pero después de ejecutarlo, no aparecen en el comando 'trabajos'. ¿Por qué es esto?

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

Pero si ejecuto cada uno de ellos desde la terminal, sí aparecen en 'trabajos'

¿Cómo puedo obtener el mismo efecto con los comandos ejecutados en un script?

Respuesta1

jobs funciona solo para la creación de instancias del shell que creó los trabajos. jobs nuse números, no el pid. Una vez que el shell se ejecuta dentro de un script (otro proceso nuevo), el antiguo shell que inició el script y los trabajos (emitidos en el antiguo shell) ya no pueden hacer referencia al trabajo n.º 1 en el nuevo shell.

¿Por qué? Porque el shell actual podría tener su propio trabajo n.° 1. UNIX/Linux mantiene lo que se conoce como grupo de procesos o sesión. El líder del grupo de la sesión es el proceso propietario del tty e interactúa con él a través del teclado. Busque la descripción de la función setsid() en su manual. Si el proceso se inició y aún se ejecuta como hijo bajo el antiguo shell principal, el líder, entonces el comando jobs funcionará. De otra manera no.

información relacionada