추적 파일에 알 수 없는 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>되지 않습니다 . 그래서 뭐postgresnodegmain과정? /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.

관련 정보