Para ejecutar comandos simultáneamente, puede usar el &
separador de comandos.
~$ command1 & command2 & command3
Esto comenzará command1
, luego lo ejecuta en segundo plano. Lo mismo con command2
. Entonces comienza command3
normalmente.
La salida de todos los comandos se confundirá, pero si eso no es un problema para usted, esa sería la solución.
Si desea ver más adelante la salida por separado, puede canalizar la salida de cada comando tee
, lo que le permite especificar un archivo para reflejar la salida.
~$ command1 | tee 1.log & command2 | tee 2.log & command3 | tee 3.log
La salida probablemente será muy desordenada. Para contrarrestar eso, podría darle un prefijo a la salida de cada comando sed
.
~$ echo 'Output of command 1' | sed -e 's/^/[Command1] /'
[Command1] Output of command 1
Entonces, si juntamos todo eso, obtenemos:
~$ command1 | tee 1.log | sed -e 's/^/[Command1] /' & command2 | tee 2.log | sed -e 's/^/[Command2] /' & command3 | tee 3.log | sed -e 's/^/[Command3] /'
[Command1] Starting command1
[Command2] Starting command2
[Command1] Finished
[Command3] Starting command3
Esta es una versión altamente idealizada de lo que probablemente va a ver. Pero es lo mejor que puedo pensar en este momento.
Si desea detenerlos todos a la vez, puede usar la compilación trap
.
~$ trap 'kill %1; kill %2' SIGINT
~$ command1 & command2 & command3
Esto se ejecutará command1
y command2
en segundo plano y command3
en primer plano, lo que le permite matarlo con Ctrl+ C.
Cuando matas el último proceso con Ctrl+, Clos kill %1; kill %2
comandos se ejecutan, porque conectamos su ejecución con la recepción de un INTERupt SIGnal, lo que se envía presionando Ctrl+ C.
Matan, respectivamente, el primer y segundo proceso de fondo (tu command1
y command2
). No olvides quitar la trampa, una vez que hayas terminado de usar tus comandos trap - SIGINT
.
Monstruo completo de un comando:
~$ trap 'kill %1; kill %2' SIGINT
~$ command1 | tee 1.log | sed -e 's/^/[Command1] /' & command2 | tee 2.log | sed -e 's/^/[Command2] /' & command3 | tee 3.log | sed -e 's/^/[Command3] /'
Podría, por supuesto, echar un vistazo a la pantalla . Le permite dividir su consola en tantas consolas separadas como desee. Entonces puede monitorear todos los comandos por separado, pero al mismo tiempo.