我维护了当前在我的系统 (Linux) 上运行的进程的 PID 列表。由此看来,如果我能从这个 PID 中获取进程详细信息,那就太好了。我已经通过 Go 中的 syscall.Getrusage() ,但我没有得到想要的结果。
我该怎么办?
最佳答案
这可能不是提问者想要的(关于每个进程 id 需要什么类型的详细信息没有太多明确的信息),但是您可以使用 BASH 命令通过其 pid 获取任务的一些详细信息 ps -p $PID
(ps是进程状态的缩写)
默认选项为 ps -p $PID
这将返回:
- PID:回显进程 ID
- TTY:控制终端的名称(如果有)
- TIME:自执行以来进程使用了多少 CPU 时间(例如 00:00:02)
- CMD:调用进程的命令(例如
java
)
可以使用 -o 选项标志显示有关此进程 ID 的更多信息。列表见this documentation page .
这是一个示例,它告诉您特定进程 PID 的完整命令以及参数、用户、组和内存使用情况(请注意多个 -o 标志如何分别采用一对,以及命令如何输出大量空白填充):
ps -p $PID -o pid,vsz=MEMORY -o user,group=GROUP -o comm,args=ARGS
提示:对于控制台中的人工读取输出,请将 args 设置为最后一个选项 - 它通常是最长的,否则可能会被缩短。
关于go - 如何从其 PID 获取进程详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9378021/