Linux-Kernel

有沒有辦法從 ps 命令結果中隱藏核心執行緒?

  • March 7, 2018

當我鍵入ps -ef時,會顯示許多特殊的核心執行緒程序。

我對核心執行緒不感興趣;我只對使用者程序/執行緒感興趣。

有沒有辦法可以隱藏核心執行緒?

ps可以通過多種方式過濾輸出。要查看您的流程,您可以按使用者/uid 進行過濾。下面的相關手冊頁 -

  U userlist      Select by effective user ID (EUID) or name.
                  This selects the processes whose effective user name or ID is in userlist. The effective user ID describes the user
                  whose file access permissions are used by the process (see geteuid(2)). Identical to -u and --user.

  -U userlist     Select by real user ID (RUID) or name.
                  It selects the processes whose real user name or ID is in the userlist list. The real user ID identifies the user
                  who created the process, see getuid(2).

  -u userlist     Select by effective user ID (EUID) or name.
                  This selects the processes whose effective user name or ID is in userlist. The effective user ID describes the user
                  whose file access permissions are used by the process (see geteuid(2)). Identical to U and --user.

要辨識核心與使用者執行緒,它可能取決於核心版本。在我的 Ubuntu 機器(3.5.0-30-generic)上,我可以通過排除 kthreadd 的子級(pid =2)來排除核心執行緒。kthreadd 的 pid 在 2.6 核心上可能不同 - 但是,您可以只使用相關的 pid。例如,要獲取所有不具有 ppid = 2 的程序的列表,我會這樣做(對於提供給 -o 的選項,請查看手冊頁)-

ps -o pid,ppid,comm,flags,%cpu,sz,%mem  --ppid 2 -N

您還可以使用 grep 或 awk 過濾這些內容。辨識核心執行緒的另一種方法(不使用 ps)是檢查 /proc//maps 或 /proc/cmdline 是否為空 - 對於核心執行緒來說兩者都是空的。您需要 root 權限才能執行此操作。

引用自:https://unix.stackexchange.com/questions/258448