Cómo poner un trabajo en primer plano y permitir la entrada del usuario desde la terminal

Cómo poner un trabajo en primer plano y permitir la entrada del usuario desde la terminal

Similar aesta preguntapero diferente en un aspecto importante: necesito iniciar un montón de trabajos desde un script y ejecutarlos en segundo plano. Luego, para gestionarlos o comprobar su progreso, necesito ponerlos en primer plano y permitir la entrada del usuario.

Lo que estoy haciendo actualmente es:

  1. Iniciar un montón de trabajos en un bucle, por ejemplo

    for ip in $(cat ip-list.txt); do run-job.sh $ip &; done
    
  2. Ponga en primer plano un trabajo individual con, por ejemplo,

    fg 1 
    

Esto pone un trabajo en primer plano, sin embargo, hay dos problemas: no puedo proporcionar información del usuario; el proceso no responde, como si el proceso que recibe mi entrada fuera el script que inició el trabajo, no el trabajo en sí; Además, la variable $ip se muestra sin evaluar, es decir, exactamente como "$ip" en lugar de "192.168.1.34". Sin embargo, cuando escribo 'trabajos' veo los 10 trabajos enumerados por separado (pero todos se ven exactamente iguales: "run-job.sh $ip". Tengo que usar ps para ver qué trabajo usa qué valor de ip).

El comportamiento que me gustaría es el mismo que obtendría si comenzara todos estos trabajos escribiéndolos individualmente y luego presionando control-z para ponerlos en segundo plano. Si lo hago de esa manera, cuando los traigo a primer plano con fg, permiten la entrada del usuario directamente al proceso, y además la variable $ip se muestra evaluada como "192.168.1.34". Sin embargo, escribir manualmente los trabajos no es factible para decenas o decenas de trabajos.

información relacionada