Tengo
parallel --j 2 -- "sh script1" "sh script2"
dónde script1
e script2
iniciar sesión en archivos log1
ylog2
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 tail
ambos 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
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 parallel
trabajos.
Si necesita traer el parallel
al primer plano, elimínelo tail
y escriba fg
. Para enviarlo a segundo plano nuevamente (por ejemplo, para que pueda ejecutarlo tail
una 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 bash
y busque (todo en mayúsculas) JOB CONTROL
.