区分两个后台进程的交错输出的方法

区分两个后台进程的交错输出的方法

如果我有两个后台进程生成 STDOUT 或 STDERR 的输入(例如,两个安装脚本),是否有一种简单的方法可以区分这两个输出流?我想我可以通过一个 sed 程序来传输每个进程的输出,该程序为每个输出的每一行添加不同的标签作为前缀,但我正在寻找更简单的东西。

答案1

最简单的解决方案是启动两个后台作业并将其输出重定向到文件:

 utility1 >utility1.out 2>utility1.err &
 utility2 >utility2.out 2>utility2.err &

这样做的另一个好处是不会因为输出而堵塞终端。

显然,您也可以将错误流和输出流重定向到同一个文件:

 utility1 >utility1.out 2>&1 &
 utility2 >utility2.out 2>&1 &

您还可以使用tmux

 tmux new "utility1" ';' split "utility2"

tmux所有命令退出后将立即退出。为了避免这种情况,请更改"utility""utility;read".这将使窗格保持打开状态,直到您按Enter

相关内容