我有一个脚本可以连续打印带有日期的不同日志。
./script1
Date Log
Date Log
Date Log ...
我还有另一个,prustat,它打印 %CPU 和 %mem ...
./prustat
%CPU %mem
1.2 3
我想将两者结合起来:
Date Log
%CPU %mem
1.2 3
Date Log
%CPU %mem
1.2 3
...
为了有每个日志的CPU消耗和内存。
谢谢。
有点像你想要的
./script1.sh |
while IFS= read -r line; do
echo "$line"
./script2.sh
done
但是关于脚本 1 和 2 的内容,你肯定没有告诉我们一些事情
你可以把它们放在./prustat
里面script1
(最后一行),也可以这样称呼它们:
./script1; ./prustat
好吧,如果它连续运行,不确定您为什么希望它们同时运行?
你可以试试:
./script1.sh& ./script2.sh
这将调用 script1 并将其作为后台作业分叉,然后调用 script2.sh
现在您将返回您的命令提示符
你可以做
fg%1 取回 script1.sh
不知道为什么你会想做这样的事情虽然..
执行上述操作意味着如果您再次重新启动它,前一个作业仍在后台运行,您将获得第二个作业运行 -
简而言之,您应该将两个脚本合并为一个,并在 script1 中需要时调用 script2 并让 script1 连续运行。
这会很痛苦。。
所以另一种选择是:
timeout 1 ./script1.sh; ./script2.sh
这将执行 script1 并在 1 秒后超时,然后运行 script2
这应该结合两个脚本输出。
#!/bin/bash
trap 'rm /tmp/z[12]' 0
./script1 > /tmp/z1 &
./prustat > /tmp/z2 &
tail -qfc +1 /tmp/z[12]
但是没有同步,因此取决于每个脚本输出频率,顺序可能不是您所期望的。
编辑:尚不清楚两个脚本都提供连续输出还是仅提供第一个。我的回答假设两者都可以。