我想知道Linux上单个进程的CPU和内存使用情况——我知道PID。希望我每秒钟都能得到它,并使用'watch'命令将其写入CSV。我可以使用什么命令从Linux命令行中获得这些信息?
当前回答
ps -p <pid> -o %cpu,%mem,cmd
(您可以省略“cmd”,但这可能有助于调试)。
注意,这给出了进程在运行期间的平均CPU使用率。
其他回答
ps axo pid,etime,%cpu,%mem,cmd | grep 'processname' | grep -v grep
PID -进程号
etime -进程运行/活时长
%cpu - cpu使用率
%mem -内存使用率
cmd -命令
将processname替换为任何你想跟踪的进程,mysql nginx php-fpm等等…
对于那些纠结了一段时间,想知道为什么选定的答案不管用的人:
ps -p <pid> -o %cpu,%mem
%cpu和%mem之间没有空格。
您可以通过使用的进程名获取结果
ps -C chrome -o %cpu,%mem,cmd
-C选项允许你在不知道pid的情况下使用进程名。
正如上面caf的回答中所评论的那样,ps和在某些情况下pidstat将为您提供pCPU的生命周期平均值。 要获得更准确的结果,请使用top。如果你需要跑到顶部,你可以跑:
top -b -n 1 -p <PID>
或者仅用于进程数据和报头:
top -b -n 1 -p <PID> | tail -3 | head -2
没有头文件:
top -b -n 1 -p <PID> | tail -2 | head -1
这里的所有答案都只显示了PID的内存百分比。
下面是一个如何获取所有apache进程的rss内存使用KB的例子,如果你只想查看特定的PID,将“grep apache”替换为“grep PID”:
watch -n5 "ps aux -y | grep apache | awk '{print \$2,\$6}'"
这个打印:
Every 5.0s: ps aux -y | grep apache | awk '{print $2,$6}'
Thu Jan 25 15:44:13 2018
12588 9328
12589 8700
12590 9392
12591 9340
12592 8700
12811 15200
15453 9340
15693 3800
15694 2352
15695 1352
15697 948
22896 9360
CPU %:
watch -n5 "ps aux -y | grep apache | awk '{print \$2,\$3,\$6}'"
输出:
Every 5.0s: ps aux -y | grep apache | awk '{print $2,$3,$6}'
Thu Jan 25 15:46:00 2018
12588 0.0 9328
12589 0.0 8700
12590 0.0 9392
12591 0.0 9340
12592 0.0 8700
12811 0.0 15200
15453 0.0 9340
15778 0.0 3800
15779 0.0 2352
15780 0.0 1348
15782 0.0 948
22896 0.0 9360
推荐文章
- 如何将文件指针(file * fp)转换为文件描述符(int fd)?
- 自定义c++分配器的引人注目的例子?
- Linux Bash中双&和分号有什么区别?
- 如何合并2 JSON对象从2个文件使用jq?
- MySQL CPU使用率高
- 在SSH会话中查找客户端的IP地址
- C++ Linux的想法?
- 如何为Fedora安装g++ ?
- Linux删除大小为0的文件
- Spring引导应用程序作为服务
- 如何重定向标准derr和标准输出到不同的文件在同一行脚本?
- Windows和Linux上的c++编译:ifdef开关
- Linux: kill后台任务
- 如何修改Linux系统中打开文件的数量限制?
- 删除Bash脚本中的重复条目