Puede separar varios comandos por ;, para que se ejecuten secuencialmente, por ejemplo:
really_long_script.sh ; echo Finished
Si desea ejecutar el siguiente programa solo si el script terminó con el código de retorno 0 (lo que generalmente significa que se ha ejecutado correctamente), entonces:
really_long_script.sh && echo OK
Si desea lo contrario (es decir, continúe solo si el comando actual ha fallado), entonces:
really_long_script.sh || echo FAILED
Podría ejecutar su script en segundo plano (pero tenga cuidado, la salida de los scripts ( stdouty stderr) continuaría yendo a su terminal a menos que lo redirija a algún lugar), y luego waitpara ello:
really_long_script.sh &
dosomethingelse
wait; echo Finished
Si ya ha ejecutado el script, puede suspenderlo Ctrl-Zy luego ejecutar algo como:
fg ; echo Finished
Donde fgpone el proceso suspendido en primer plano ( bglo haría funcionar en segundo plano, más o menos como comenzó &)
fgdevuelve el valor del trabajo que reanuda, puede usarlofg && echo Finishedsi desea asegurarse de que el comando tenga éxito antes de ejecutar el otro comando.También puedes usar el control de trabajo de bash. Si empezaste
luego presione ctrl + z para suspenderlo:
para reiniciar el trabajo en segundo plano (como si lo hubiera iniciado
really_long_script.sh &). Entonces puedes esperar este trabajo de fondo condonde N es la ID del trabajo (probablemente 1 si no ejecutó ningún otro trabajo en segundo plano) que también se muestra como se muestra
[1]arriba.fuente
Si el proceso no se ejecuta en tty actual, intente esto:
fuente
watch. Respuesta súper corta y uno aprende una nueva forma útil de usar el relojResulta que esto no es tan difícil: simplemente puede escribir el siguiente comando en la ventana mientras se ejecuta el existente, presionar enter y, cuando finalice el primero, el segundo comando se ejecutará automáticamente.
Supongo que hay formas más elegantes, pero esto parece funcionar.
Edición para agregar que si desea ejecutar una alerta después de que finalice el comando, puede crear estos alias en .bashrc, luego ejecutar
alertmientras se está ejecutando:fuente
Hace un tiempo escribí un guión para esperar el final de otro proceso.
NOISE_CMDpodría ser algo asínotify-send ..., dado queDISPLAYestá configurado correctamente.Sin ningún argumento, solo haga un poco de ruido de inmediato. Este comportamiento permite algo como esto por conveniencia (digamos que llama script a continuación
alarm.sh):Por supuesto, puede hacer muchas cosas divertidas con un script de este tipo, como dejar que una instancia
alarm.shespere una instancia dealarm.sh, que esté esperando algún otro comando. O ejecutar un comando justo después de que una tarea de otro usuario conectado haya terminado ...>: DUna versión anterior de la secuencia de comandos anterior puede ser interesante, si desea evitar una dependencia
pgrepy aceptar buscar ID de proceso usted mismo:Ligeramente fuera de tema, pero útil en situaciones similares: uno podría estar interesado en
reptyruna herramienta que "robe" un proceso de algún shell (padre) y lo ejecute desde el shell actual. He intentado implementaciones similares yreptyres la más bonita y confiable para mis propósitos.fuente