How to trace the list of PIDs running on a specific core?
我试图在Linux的专用核心上运行一个程序。(我知道监狱是一个很好的方法,但是我必须使用现成的Linux。-()
其他进程,如中断处理程序、内核线程、服务进程,也可能偶尔在专用内核上运行。我想禁用尽可能多的此类进程。要做到这一点,我需要首先确定可以在专用核心上运行的进程列表。
我的问题是:
是否有任何现有的工具可以用来跟踪在特定核心上运行一段时间间隔的PID或进程列表?
非常感谢您在这个问题上的时间和帮助!
肮脏的黑客解决方案。
免责声明:有时停止工作"列:行太长":。-/
复制到:core-pids.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #!/bin/bash TARGET_CPU=0 touch lastPIDs touch CPU_PIDs while true; do ps ax -o cpuid,pid | tail -n +2 | sort | xargs -n 2 | grep -E"^$TARGET_CPU" | awk '{print $2}' > lastPIDs for i in {1..100}; do printf"# ">> lastPIDs; done cp CPU_PIDs aux paste lastPIDs aux > CPU_PIDs column -t CPU_PIDs > CPU_PIDs.humanfriendly.tsv sleep 1 done |
然后
1 2 | chmod +x core-pids.sh ./core-pids.sh |
然后用你最喜欢的编辑器打开cpu-pids.humanfriendly.tsv,然后?检查!
键在"ps-o cpuid,pid"位中,有关详细信息,请评论。D
解释
无限循环
- ps-o cpuid,pid tail-n+2 sort xargs-n 2 grep-e"^$target cpu"awk'print$2'>lastpids
- PS AX-O CPU ID,PID
- 显示与CPU关联的PID
- 尾-n+ 2
- 删除页眉
- 分类
- 按CPUID排序
- XARGS—N 2
- 乞讨时去掉空白
- grep-e"^$target_cpu"
- 按CPU ID筛选
- awk'打印$2'
- 获取PID列
- LaSTPIDs
- 输出以将目标CPU ID的las pid归档
- PS AX-O CPU ID,PID
- 对于i i n 1..10 do printf"">>lastpids;完成
- 用"columns-t"命令对pretty.tsv进行hack打印
- 计算机辅助编程语言
- cpu-pids保存整个时间轴,我们将其复制到aux文件中,以允许下一个命令将其用作输入和输出。
- 粘贴lastpids aux>cpu-pids
- 将lastpids列附加到整个时间线文件cpu-pids
- 列-t cpu-pids>cpu-pids.humanfriendly.tsv
- 漂亮的打印整个时间轴cpu-pids文件
归因
- stackoverflow回答:Linux中的ps实用程序(procps),如何检查使用的CPU
- 米克尔
- stackoverflow答案:bash prints literal中的echo换行符
- 通过某物
- stackoverflow答案:grep regex中的shell变量
- David W.
- 超级用户的答案是:对齐Unix命令输出中的列
- 詹妮·皮卡莱宁
- nixcraft文章:howto:unix for loop 1 to 100 numbers
获得你想要的东西的最佳方法是如下操作:
在这种情况下,这样的核心只会执行您的程序。要进行检查,您可以键入
不是这个问题的直接答案,但我通常使用