尝试linux中的所有PID

尝试linux中的所有PID

我想按顺序尝试 PID 而不是特定的 PID,例如在此指令中:

 perf stat -p <PID> -e cycles,instructions,cache-references,cache- 
misses,bus-cycles -a sleep 10

 #this is example of 1 specefic PID
 perf stat -p 3347 -e cycles,instructions,cache-references,cache-misses,bus-cycles -a sleep 10

我想尝试所有 PID,但我不知道应该写什么而不是 < PID > 来尝试所有 PID。

答案1

如果你想迭代全部在您的系统上运行的 pid(需要/procdir,与 不同Mac/*BSD):

for pid in /proc/[0-9]*; do printf '%s\n' "${pid##*/}"; done

所以:

for pid in /proc/[0-9]*; do
    perf stat -p "${pid##*/}" -e cycles,instructions,cache-references,cache-misses,bus-cycles -a 2>&1 >> perf.txt
    sleep 10 
done

相反,如果您想要基于 占用大量资源的进程top,有一种方法:

for pid in $(top -bn1 | awk '/ PID /{p=1;next}(p==1){print $1}'); do ...

删除n1的。topMac/*BSD

相关内容