gpt4 book ai didi

linux - 有没有相当于ps的go命令?

转载 作者:IT王子 更新时间:2023-10-29 02:27:17 32 4
gpt4 key购买 nike

我想要一种方法来遍历 PID 列表,以使用特定命令扫描进程。例如 ps ax 的列是

 PID TTY      STAT   TIME COMMAND

我想知道是否有办法根据 PID 的编号确定 PID 的 COMMAND 列。

最佳答案

Go 语言和ps 命令无关。

ps 命令是 POSIX 规范的一部分,可用于所有类 Unix 系统(包括 Linux、Solaris、*BSD 等)。阅读ps(1) .跟你的operating system有关(您可能在 Windows 上没有它)。阅读Operating Systems: Three Easy Pieces了解更多关于操作系统的信息,以及一些 Linux 编程书籍,如 ALP了解有关 Linux 编程的更多信息。另见 intro(2) & syscalls(2) (并找到它们的 Go 等价物)。

I want a way to iterate through a list of PIDs scanning for processes with a particular command.

I was wondering if there was a way for me to determine the COMMAND column of a PID given its number.

这与 Go 无关。您可以使用 /proc/ 伪文件系统,参见 proc(5) ,它存在于所有 Linux 系统上,无论是否安装了 Go。 /proc/ps(1) 内部使用, top(1) , pmap(1)等等……

要迭代进程列表(在 Linux 上),您需要读取 /proc/ 目录中的数字条目(例如 /proc/1234/ 存在,如果有一个pid 1234的进程)。要读取目录,请使用 opendir(3) , readdir(3) , closedir(3) , stat(2)在 C 中,它们都有对应的 Go 语言,例如在 ioutils package .

特别是,对于进程 1234,您可以阅读 /proc/1234/cmdline(其中包含 NUL 字节分隔字符串)。当然,您可以从某个 Go 程序中读取该文件。尝试使用 od -cx/proc/self/cmdline 命令(使用 od(1) )了解该文件的格式...

/proc/ 中的伪文件是“类似管道的”,表观大小(由 stat(2)ls(1) 给出 ...)为 0,应按顺序读取, 请参阅 this .

关于linux - 有没有相当于ps的go命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48089569/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com