Specifically, I want to run
lsyncd lsyncd.lua
And
webpack --progress --color -w
Which пахал both long-running processes. I want to see the output from both, interlaced in my терминал. It doesn't matter if the results пахал в бит jumbled, I just like to see that they're doing what they're supposed to.
Also, I want it to kill both processes when I press Ctrl+C
.
гm trying
parallel ::: 'lsyncd lsyncd.lua' 'webpack --progress --color -w'
which seems to be working, but I can't see any output even though when I run those commands individually, they output something.
Используя parallel
(в moreutils
пакет):
parallel -j 2 -- 'lsyncd lsyncd.lua' 'webpack --progress --color -w'
Начиная с parallel
выполнения процесса на переднем плане, совершая нападки CTRL + C завершат все процессы, работающие сверху его сразу.
-j
: Используйте для ограничения количества заданий, которые выполняются одновременно; --
: разделяет опции от команд. % parallel -j 2 -- 'while true; do echo foo; sleep 1; done' 'while true; do echo bar; sleep 1; done'
bar
foo
bar
foo
bar
foo
^C
%
Значения по умолчанию Параллели GNU к отсрочке вывода до задания закончены. Можно вместо этого попросить, чтобы это распечатало вывод как скоро, существует сплошная линия.
parallel --lb ::: 'lsyncd lsyncd.lua' 'webpack --progress --color -w'
Это избегает смешивания полустроки вывода:
parallel -j0 --lb 'echo {};echo -n {};sleep {};echo {}' ::: 1 3 2 4
Проводят 20 минут, читая главу 1+2 Параллели GNU 2018 ( онлайн , распечатал ). Ваша командная строка будет любить Вас за него.
У Вас есть больше опций. Выполните первую команду и нажмите Ctrl-Z. Это помещает команду для ожидания в фоновом режиме. Теперь тип bg
и это будут работать в фоне. Теперь выполните вторую команду и нажмите Ctrl-Z снова. Тип bg
снова и обе программы будут работать в фоне.
Теперь можно ввести jobs
, и это распечатает, какие команды работают в фоне. Тип fg <job number>
для помещения программы в переднем плане снова. При исключении числа задания, оно поместит последнее задание в передний план. Когда задание находится на переднем плане, можно остановить его с Ctrl-C. Я не знаю, как Вы остановили бы обоих с одним Ctrl-C.
можно также добавить &
в конце, который помещает его работающий в фоновом режиме сразу без Ctrl-Z и bg
. Можно все еще принести его на переднем плане с fg
.
&
к спасению. Это запускает два процесса параллельно.
lsyncd lsyncd.lua & webpack --progress --color -w
Это добьется цели.
не читал kill
часть. ctrl+C здесь только завершил бы второй. Процесс, предшествующий &
выполнения в фоновом режиме, хотя это производит на stdout
.
самый короткий способ завершить оба процесса: 1. Введите Ctrl+C однажды. Это уничтожает приоритетный процесс. 2. Тип fg
и тип Ctrl+C снова. Это приносит фоновый процесс к переднему плану и уничтожает его также.
HTH!
Есть легкий способ сделать это, не устанавливая ничего.
Шаг 1 : Создайте файл сценария runner.sh
#!/bin/bash
lsyncd lsyncd.lua &
P1=$!
webpack --progress --color -w &
P2=$!
wait $P1 $P2
Шаг 2 : Сделайте его исполняемым
chmod +x runner.sh
Шаг 3 : Запустите его
./runner.sh
Работает как крем
Объяснение :
some_command &
означает запустить some_command и поместить его в фоновый режим lsyncd lsyncd.lua &
означает запустить lsyncd lsyncd.lua
и поместить этот процесс в фоновом режиме. Примечание : это работает с дистрибутивами Linux на основе Debian , такими как Ubuntu