我希望在不使用top
和ps
的情况下查看2000个流程中的流程状态
命令。
流程名称为 tom 。
答案 0 :(得分:1)
process没有任何名称(只有正在运行的程序有一个,但另请参阅pthread_setname_np(3)。 ..你可能有像this这样的病态案例。它有一个pid(这是一个整数,如1234,类型为pid_t
)。请参阅credentials(7)和fork(2)以及execve(2)。使用pidof(1)和pgrep(1)查找某个进程的pid。 executable程序(例如/bin/bash
)可以由多个进程运行(或者不运行,或者只运行一个)。
您可以使用信号编号为零的kill(2)来检查该过程是否存在。
最重要的是,您应该考虑使用/proc/
(有关详情,请参阅proc(5))。有关pid 1234的过程,请参阅/proc/1234/
,其中包含多个文件和子目录(特别是/proc/1234/status
和/proc/1234/maps
)。在终端中尝试cat /proc/$$/status
和cat /proc/$$/maps
以及stat /proc/$$/exe
和ls -l /proc/$$/
(然后将$$
替换为您感兴趣的pid。)
top
和ps
实用程序(以及pidof
,pgrep
,...)正在使用/proc/
(这是其中的平均值) Linux内核显示有关进程和系统本身的信息。您也可以使用/proc/
编写您的程序(或脚本)。另请参阅this。
从程序内部,您可以像浏览其他文件树一样探索/proc/
,例如使用stat(2),opendir(3),readdir(3),nftw(3)等。