具体来说,我想运行
lsyncd lsyncd.lua
和
webpack --progress --color -w
这两个都是长时间运行的进程。我想在我的终端中看到这两个进程的输出。结果有点混乱也没关系,我只想看到它们在做它们应该做的事情。
另外,我希望当我按下时它可以终止这两个进程Ctrl+C
。
我想
parallel ::: 'lsyncd lsyncd.lua' 'webpack --progress --color -w'
这似乎有效,但我看不到任何输出,即使我单独运行这些命令时,它们会输出一些内容。
答案1
答案2
使用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
%
答案3
&
来救援。它并行启动这两个进程。
lsyncd lsyncd.lua & webpack --progress --color -w
这会起到作用。
没读到这kill
部分。这里的 ctrl+C 只会终止第二个。前面的进程&
在后台运行,尽管它在 上输出stdout
。
终止两个进程的最短方法是:1. 输入 Ctrl+C 一次。这会终止前台进程。2. 输入fg
并再次输入 Ctrl+C。这会将后台进程调到前台并将其终止。
呼呼!
答案4
您有更多选择。运行第一个命令并按 Ctrl-Z。这会使命令在后台等待。现在输入bg
,它将在后台运行。现在运行第二个命令并再次按 Ctrl-Z。bg
再次输入,两个程序都将在后台运行。
现在您可以输入jobs
,它会打印出哪些命令正在后台运行。输入fg <job number>
以将程序再次置于前台。如果您省略作业编号,它会将最后一个作业置于前台。当作业在前台时,您可以使用 Ctrl-C 停止它。我不知道您如何用一个 Ctrl-C 停止两者。
您还可以&
在末尾添加 ,使其立即在后台运行,而无需按 Ctrl-Z 和bg
。您仍然可以使用 将其置于前台fg
。