如何获取给定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。
答案 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
关键字。