Per eseguire i comandi contemporaneamente è possibile utilizzare il &
separatore dei comandi.
~$ command1 & command2 & command3
Verrà avviato command1
, quindi verrà eseguito in background. Lo stesso con command2
. Quindi inizia command3
normalmente.
L'output di tutti i comandi verrà confuso, ma se ciò non fosse un problema per te, sarebbe la soluzione.
Se si desidera dare uno sguardo separato all'output in un secondo momento, è possibile reindirizzare l'output di ciascun comando tee
, che consente di specificare un file su cui eseguire il mirroring dell'output.
~$ command1 | tee 1.log & command2 | tee 2.log & command3 | tee 3.log
L'output sarà probabilmente molto disordinato. Per contrastare ciò, è possibile assegnare un prefisso all'output di ogni comando sed
.
~$ echo 'Output of command 1' | sed -e 's/^/[Command1] /'
[Command1] Output of command 1
Quindi se mettiamo tutto insieme otteniamo:
~$ 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
Questa è una versione altamente idealizzata di ciò che probabilmente vedrai. Ma è il migliore che mi viene in mente in questo momento.
Se vuoi fermarli tutti in una volta, puoi usare il build in trap
.
~$ trap 'kill %1; kill %2' SIGINT
~$ command1 & command2 & command3
Questo verrà eseguito command1
e command2
in background e command3
in primo piano, che ti consente di ucciderlo con Ctrl+ C.
Quando si interrompe l'ultimo processo con Ctrl+ Ci kill %1; kill %2
comandi vengono eseguiti, perché abbiamo collegato la loro esecuzione con la ricezione di un INTERupt SIGnal, la cosa inviata premendo Ctrl+ C.
Uccidono rispettivamente il primo e il secondo processo in background (tuo command1
e command2
). Non dimenticare di rimuovere la trappola, dopo aver finito di utilizzare i comandi trap - SIGINT
.
Mostro completo di 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] /'
Ovviamente potresti dare un'occhiata allo schermo . Ti consente di dividere la tua console in tutte le console separate che desideri. Quindi puoi monitorare tutti i comandi separatamente, ma allo stesso tempo.