![尝试linux中的所有PID](https://linux22.com/image/214514/%E5%B0%9D%E8%AF%95linux%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89PID.png)
我想按顺序尝试 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(需要/proc
dir,与 不同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
的。top
Mac/*BSD