salir de la cola cuando se realiza otro proceso

salir de la cola cuando se realiza otro proceso

Tengo

parallel --j 2 -- "sh script1" "sh script2"

dónde script1e script2iniciar sesión en archivos log1ylog2

Me gustaría cambiar esto a:

parallel --j 3 -- "sh script1" "sh script2" "tail -f log1 log2"

La razón para usar tail es cuando permito que los dos scripts aparezcan en la pantalla al mismo tiempo (la salida se vuelve un desastre y pierdo el cursor, etc.). Necesito reiniciar el terminal casi después de cada ejecución.

Sin embargo, el problema es que ahora esto durará para siempre y me gustaría que tail salga cuando finalicen script1 y script2. ¿Como puedo hacer eso?

Respuesta1

Esto puedetambiénNo ser lo que quieres, pero ¿qué tal:

parallel --j 2 -- "sh script1" "sh script2"; tail log1 log2

Una vez que se realizan ambos trabajos, no se esperan tailambos archivos de registro.

Respuesta2

De hecho, encontré lo que necesito hacer:

parallel --j 2 -- "sh script1" "sh script2" &
PID=$!
tail --pid=$PID -f log1 log2

Respuesta3

yo usaríamulticolaotmux.

Respuesta4

parallel --j 2 -- "sh script1" "sh script2" & tail -f log1 log2

Esto se ejecuta parallel ...en segundo plano y luego se ejecuta tail ....

Presionar Ctrl-Cla cola no afectará los paralleltrabajos.

Si necesita traer el parallelal primer plano, elimínelo taily escriba fg. Para enviarlo a segundo plano nuevamente (por ejemplo, para que pueda ejecutarlo tailuna vez más), presione Ctrl-Zy escriba bg. O puedes matarlo conkill %%

Consulte la documentación de su shell para obtener más detalles. por ejemplo, si está utilizando bash, ejecute man bashy busque (todo en mayúsculas) JOB CONTROL.

información relacionada