![流程调度信息提取](https://linux22.com/image/7388/%E6%B5%81%E7%A8%8B%E8%B0%83%E5%BA%A6%E4%BF%A1%E6%81%AF%E6%8F%90%E5%8F%96.png)
我想提取每个处理器核心上利用率最高的进程,然后将其信息(PID 等)输出到文件中。如何使用 top 或 ps 命令来做到这一点?
谢谢。
答案1
怎么样
ps -k -pcpu -O pcpu,psr
k 标志是排序键,即 CPU 百分比。 Capital O 更改输出以添加 CPU 利用率百分比以及进程运行的当前处理器/CPU。你会得到如下输出:
PID %CPU PSR S TTY TIME COMMAND
15049 5.8 2 S tty2 00:00:28 chrome
14808 4.3 1 S tty2 00:00:21 chrome
14448 3.9 5 S tty2 00:00:21 gnome-shell
15234 1.8 5 S tty2 00:00:08 chrome
14896 1.5 2 S tty2 00:00:07 chrome
14322 1.2 0 S tty2 00:00:06 Xorg
cpu 百分比是时间列除以实际时间。如果您有一个繁忙的进程然后闲置,您可能会得到奇怪的结果(但其总体平均值仍然很高或较低,具体取决于您的期望)。
要得到一些东西来回答“是什么让我的 CPU 在过去几秒钟内保持忙碌”,那么 top 是一个更好的工具。
另请注意,进程会在 CPU 上来回跳动,因此有时很难确定 CPU 运行过热的原因。您通常希望这可以将负载分散到他们身上。
答案2
PSOUTFILE=/tmp/ps-out.txt
ps -ef| sort -r -k7 | head -2 >> ${PSOUTFILE}
上面的这段获取顶部一个进程的信息和标题行,解释每一列引用的内容并写入指定的文件。如果不想打印列标题行,可以这样修改:
PSOUTFILE=/tmp/ps-out.txt
ps -ef| sort -r -k7 | head -2 | tail -1 >> ${PSOUTFILE}
如果这不是您想要的,您需要更详细地提出您的问题。请修改您的原始帖子以包含更多详细信息,解释您希望在此文件中看到的内容。