Как запустить несколько команд параллельно и посмотреть вывод обоих?

В частности, я хочу запустить

lsyncd lsyncd.lua

И

webpack --progress --color -w

. Оба являются длительными процессами. Я хочу видеть вывод обоих, чересстрочный в моем терминале. Неважно, если результаты немного смешаны, мне просто нравится видеть, что они делают то, что они предполагают.

Кроме того, я хочу, чтобы он убивал оба процесса, когда я нажимаю [ f4].

Я пытаюсь работать с

parallel ::: 'lsyncd lsyncd.lua' 'webpack --progress --color -w'

, но я не вижу никакого вывода, хотя, когда я запускаю эти команды индивидуально, они выводят что-то.

1
задан 17 December 2015 в 22:48

2 ответа

У вас больше возможностей. Выполните первую команду и нажмите Ctrl-Z. Это заставляет команду ждать в фоновом режиме. Теперь введите bg, и он будет работать в фоновом режиме. Теперь запустите вторую команду и снова нажмите Ctrl-Z. Введите bg еще раз, и обе программы будут работать в фоновом режиме.

Теперь вы можете ввести jobs, и он будет печатать, какие команды работают в фоновом режиме. Введите fg <job number>, чтобы снова поставить программу на передний план. Если вы опустите номер задания, он поместит последнее задание на передний план. Когда задание находится на переднем плане, вы можете остановить его с помощью Ctrl-C. Я не знаю, как вы остановите оба с одним Ctrl-C.

Вы также можете добавить & в конец, который сразу же запускает его в фоновом режиме без Ctrl-Z и bg. Вы все еще можете перенести его на передний план с помощью fg.

1
ответ дан 23 May 2018 в 14:58

& на помощь. Он запускает два процесса параллельно.

lsyncd lsyncd.lua & webpack --progress --color -w

Это сделает трюк.

Не читал часть kill. Здесь ctrl + C только завершит второй. Процесс, предшествующий &, работает в фоновом режиме, хотя он выводится на stdout.

Самый короткий способ прекратить оба процесса: 1. Нажать Ctrl + C один раз. Он убивает процесс переднего плана. 2. Введите fg и снова нажмите Ctrl + C. Это приносит фоновый процесс на передний план и убивает его тоже.

HTH!

1
ответ дан 23 May 2018 в 14:58
  • 1
    Derp. Так просто. Это похоже на то, что я хочу. Спасибо! – mpen 17 December 2015 в 22:53
  • 2
    Правда. Но вы не можете остановить первый процесс с помощью Ctrl-C, если не вывести его на передний план. – nobody 17 December 2015 в 22:53
  • 3
    @nobody на самом деле вы можете остановить второй, потому что он работает на переднем плане. Обновлен ответ. – Donbhupi 17 December 2015 в 22:55
  • 4
    О, корма. Я хочу, чтобы они оба умерли. Нужно держать это просто, так что легко запустить и остановить для linux noob. – mpen 17 December 2015 в 22:55
  • 5
    @mpen не может придумать простой способ убить процесс в фоновом режиме. Либо используйте функцию jobs в другом ответе, либо запустите ps -a в оболочке, которая сообщит pid, что вы можете kill вручную. – Donbhupi 17 December 2015 в 22:57

Другие вопросы по тегам:

Похожие вопросы: