Pour exécuter des commandes simultanément, vous pouvez utiliser le &
séparateur de commandes.
~$ command1 & command2 & command3
Cela va commencer command1
, puis l'exécute en arrière-plan. La même chose avec command2
. Ensuite, ça commence command3
normalement.
Le résultat de toutes les commandes sera brouillé ensemble, mais si cela ne vous pose pas de problème, ce serait la solution.
Si vous souhaitez examiner ultérieurement la sortie séparément, vous pouvez diriger la sortie de chaque commande vers celle-ci tee
, ce qui vous permet de spécifier un fichier dans lequel la sortie doit être mise en miroir.
~$ command1 | tee 1.log & command2 | tee 2.log & command3 | tee 3.log
La sortie sera probablement très compliquée. Pour contrer cela, vous pouvez attribuer un préfixe à la sortie de chaque commande sed
.
~$ echo 'Output of command 1' | sed -e 's/^/[Command1] /'
[Command1] Output of command 1
Donc, si nous mettons tout cela ensemble, nous obtenons:
~$ 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
Ceci est une version très idéalisée de ce que vous allez probablement voir. Mais c'est le meilleur que je puisse penser en ce moment.
Si vous voulez les arrêter tous en même temps, vous pouvez utiliser le build in trap
.
~$ trap 'kill %1; kill %2' SIGINT
~$ command1 & command2 & command3
Cela va s’exécuter command1
et command2
à l’arrière-plan et command3
au premier plan, ce qui vous permet de le tuer avec Ctrl+ C.
Lorsque vous tuez le dernier processus avec Ctrl+, Cles kill %1; kill %2
commandes sont exécutées, car nous avons connecté leur exécution à la réception d'un SIGnal INTERupt, ce qui est envoyé en appuyant sur Ctrl+ C.
Ils tuent respectivement le premier et le deuxième processus en arrière-plan (votre command1
et command2
). N'oubliez pas de retirer le piège après avoir utilisé vos commandes trap - SIGINT
.
Terminer le monstre d'une commande:
~$ 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] /'
Vous pouvez bien sûr regarder l' écran . Il vous permet de diviser votre console en autant de consoles distinctes que vous le souhaitez. Vous pouvez donc surveiller toutes les commandes séparément, mais en même temps.