簡體   English   中英

有一個等效於ps的go命令嗎?

[英]Is there a go command equivalent to ps?

我想要一種遍歷PID掃描列表的方法,以查找具有特定命令的進程。 例如ps ax的列是

 PID TTY      STAT   TIME COMMAND

我想知道是否有一種方法可以確定給定PID號的PID的COMMAND列。

Go語言和ps命令無關。

ps命令是POSIX規范的一部分,在所有類似Unix的系統(包括Linux,Solaris,* BSD等)上可用。 ps(1) 它與您的操作系統有關(Windows上可能沒有)。 閱讀操作系統:三篇簡單的文章,以了解有關OS的更多信息,並閱讀Linux編程書籍(如ALP)以了解有關Linux編程的更多信息。 另請參見intro(2)syscalls(2) (並找到它們的Go等效項)。

我想要一種遍歷PID掃描列表的方法,以查找具有特定命令的進程。

我想知道是否有一種方法可以確定給定PID號的PID的COMMAND列。

這與Go無關。 您可以使用/proc/偽文件系統,請參閱proc(5) ,該文件存在於所有Linux系統上,無論是否安裝了Go。 /proc/ps(1)top(1)pmap(1)等內部使用。

要在進程列表上進行迭代(在Linux上),您需要讀取/proc/目錄以獲取數字條目(例如,如果進程為pid 1234,則/proc/1234/存在)。 要讀取目錄,請在C語言中使用opendir(3)readdir(3)closedir(3)stat(2) ,它們都具有與Go等效的功能,例如在ioutils軟件包中

特別是,對於進程1234,您可以讀取/proc/1234/cmdline (包含NUL字節分隔的字符串)。 當然,您可以從某些Go程序中讀取該文件。 嘗試使用od -cx /proc/self/cmdline命令(使用od(1) )來了解該文件的格式...

/proc/中的偽文件是“類似管道的”,其表觀大小(由stat(2)ls(1) ...給定)為0,應按順序讀取,請參見this

如果您想以便攜式方式進行操作, go-ps可能對您有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM