読む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>
しません。だから何postgres
node
はいこの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
。