如何在bash中获取后台进程的多个进程ID

时间:2014-05-16 21:00:52

标签: bash shell gawk

如何获取给定bash cmd的进程ID

vmstat 3 | gawk '{ now=strftime("%Y-%m-%d %T "); print now $0}' >> foo.txt & p_id=$!

echo $p_id输出gawk进程ID。但我也想要vmstat的进程ID。

如何获取vmstat的进程ID

有人可以告诉我如何获取vmstat的进程ID。

2 个答案:

答案 0 :(得分:0)

一种方法是使用显式命名管道,而不是管道。

mkfifo pipe
vmstat 3 > pipe & vmstat_pid=$!
gawk '...' < pipe >> foo.txt & gawk_pid=$!
wait $vmstat_pid $gawk_pid
rm pipe

答案 1 :(得分:0)

$(jobs -p vmstat)

此处, jobspec vmstat

  

有很多方法可以引用shell中的作业。字符%引入了作业名称。作业号n可以称为%n。也可以使用用于启动它的名称的前缀或使用出现在其命令行中的子字符串来引用作业。

详细了解Jobs Control section of the Bash manual中的jobs关键字。