トレースファイルに不明なPIDを持つ「gmain」プロセスは何ですか?

トレースファイルに不明なPIDを持つ「gmain」プロセスは何ですか?

読むInotifyオブザーバーの回答を登録したプロセスを確認してください。、次のコマンドを実行しました。

echo 1 | sudo tee /sys/kernel/debug/tracing/events/syscalls/sys_exit_inotify_add_watch/enable
sudo cat /sys/kernel/debug/tracing/trace 

ファイルの出力には、trace最初の列にプロセス名(作業?)と対応するPIDを含める必要があることを示すヘッダーがあります。

#                              _-----=> irqs-off
#                             / _----=> need-resched
#                            | / _---=> hardirq/softirq
#                            || / _--=> preempt-depth
#                            ||| /     delay
#           TASK-PID   CPU#  ||||    TIMESTAMP  FUNCTION
#              | |       |   ||||       |         |
           gmain-1715  [004] .... 23200.386116: sys_inotify_add_watch -> 0xfffffffffffffffe

驚くべきことに、複数行の出力にリストされているPIDをgrepすると、そのうちの何も存在しませんps -ef | grep $THE_PID(ここで$ THE_PIDは1715です)。また、ジョブ名が不明であり、ps出力にも表示されません。

また、みんなリストはすべてタプルです。たとえば、予期gmain-<some number>しません。だから何postgresnodeはいこのgmainプロセス? /proc/に存在しないPIDは何ですか?私がアクセスしようとすると、歴史的に重要な意味がありますか?

gmain私はそれが一つであることを理解しています。Theodore Ts'oのカーネル文書追跡情報、そうですね

答え1

これはプロセスではありません。これらはすべて仕事。 Linuxはタスクを実行します。あなたは彼らのIDを見ることができませんプロセスなぜならリストにこれらタスクはプロセス内のスレッドです。これはマルチスレッドワーカースレッドです。ジオどこかで処理されます。サブディレクトリのサブディレクトリにtask/そのエントリ/proc/<process>(例)を見つけることができます/proc/860/task/926

答え2

疑いがあるように、このgmainプロセスはGTKまたはGnomeに関連していますが、これはプロセスまったくありませんが、ワイヤー(gtkメインループ)! greping時に表示されない理由でもありますps

興味のあるpidを一覧表示するためのtoオプションを使用する-qときにこれを見つけました。ps表示されるpidはまったくオプションとして渡されたものではありませんが、これを行うと、現れ続け、一種のpstree -pスレッドではないかと思います。

ps新しく発見された知識を使用してオプションを提供することで、独自のPID(正しい名前ですか?)を持つすべてのスレッドを一覧表示できることがわかりました-L

例: sudo ps -efL -q 906

これにより、pstreeこのスレッドが)に属していることがわかりましたNetworkManager

関連情報