[英]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.