Для одновременного запуска команд вы можете использовать &разделитель команд.
~$ command1 & command2 & command3
Это запустится command1, затем запустится в фоновом режиме. То же самое с command2. Затем начинается command3нормально.
Вывод всех команд будет искажен вместе, но если это не проблема для вас, это было бы решением.
Если вы хотите позже просмотреть отдельный вывод, вы можете направить вывод каждой команды tee, что позволит вам указать файл для зеркального отображения вывода.
~$ command1 | tee 1.log & command2 | tee 2.log & command3 | tee 3.log
Вывод, вероятно, будет очень грязным. Чтобы противостоять этому, вы можете присвоить выводу каждой команды префикс, используя sed.
~$ echo 'Output of command 1' | sed -e 's/^/[Command1] /'
[Command1] Output of command 1
Итак, если мы соберем все это вместе, мы получим:
~$ 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
Это очень идеализированная версия того, что вы, вероятно, увидите. Но это лучшее, что я могу думать прямо сейчас.
Если вы хотите остановить все из них одновременно, вы можете использовать встроенную функцию trap.
~$ trap 'kill %1; kill %2' SIGINT
~$ command1 & command2 & command3
Это будет выполняться command1и command2в фоновом режиме, и command3на переднем плане, что позволяет убить его с помощью Ctrl+ C.
Когда вы убиваете последний процесс с Ctrl+ Cна kill %1; kill %2командах выполняются, потому что мы соединили их исполнение с приемом на ПРЕРЫВАЙТЕ СИГНАЛ, вещь посланного нажатия Ctrl+ C.
Они соответственно убивают 1-й и 2-й фоновый процесс (ваш command1и command2). Не забудьте удалить ловушку после того, как вы закончите с использованием команд trap - SIGINT.
Полный монстр команды:
~$ 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] /'
Вы могли бы, конечно, взглянуть на экран . Это позволяет вам разделить вашу консоль на столько разных консолей, сколько вы хотите. Таким образом, вы можете контролировать все команды по отдельности, но в то же время.