【发布时间】:2017-11-09 05:55:29
【问题描述】:
我想在 2000 个进程中查看一个进程的状态,而不使用 top 和 ps
命令。
进程的名称是tom。
【问题讨论】:
-
什么是“状态进程”?请编辑您的问题
标签: linux
我想在 2000 个进程中查看一个进程的状态,而不使用 top 和 ps
命令。
进程的名称是tom。
【问题讨论】:
标签: linux
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)等
【讨论】: