특정 프로세스와 관련된 모든 프로세스의 PID를 찾는 방법은 무엇입니까?

특정 프로세스와 관련된 모든 프로세스의 PID를 찾는 방법은 무엇입니까?

다른 프로세스를 위해 작업을 수행하는 프로세스의 PID나 기타 정보를 어떻게 찾을 수 있나요? kworker예를 들어, 스레드 또는 커널의 다른 프로세스에 대한 작업을 수행하는 다른 스레드/프로세스에 대해 이야기하고 있습니다.

내 딜레마는 CPU 선호도가 CPU 0에 바인딩된 sched prio 99로 실행되는 실시간 예약 프로세스가 있지만 (SCHED_FIFO)내 컴퓨터에 CPU 압력을 주입할 때 중요한 rt 프로세스가 중요하지 않은 다른 프로세스를 선점하지 못한다는 것입니다. 프로세스. 아마도 와 에 -a 옵션을 지정 kworkers했음에도 불구하고 taskset이 중요한 프로세스를 담당하는 프로세스가 메인 프로세스의 우선순위를 상속받지 않기 때문인 것 같습니다 chrt. 현재 내 생각은 스레드를 수동으로 taskset조작하여 RT가 아닌 다른 프로세스가 선점하지 않도록 하는 것입니다.chrtkworker

답변1

시작된 프로세스의 PID를 알고 있으면 해당 프로세스에서 시작된 모든 작업의 ​​트리를 얻을 수 있습니다 ps.

$ ps f -g2305957
    PID TTY      STAT   TIME COMMAND
2305957 pts/20   Ss     0:00 bash
2310399 pts/20   S+     0:00  \_ stress -t 300 -c 16
2310400 pts/20   R+     0:24      \_ stress -t 300 -c 16
2310401 pts/20   R+     0:24      \_ stress -t 300 -c 16
2310402 pts/20   R+     0:24      \_ stress -t 300 -c 16
2310403 pts/20   R+     0:24      \_ stress -t 300 -c 16
2310404 pts/20   R+     0:24      \_ stress -t 300 -c 16
2310405 pts/20   R+     0:24      \_ stress -t 300 -c 16
2310406 pts/20   R+     0:23      \_ stress -t 300 -c 16
2310407 pts/20   R+     0:25      \_ stress -t 300 -c 16
2310408 pts/20   R+     0:22      \_ stress -t 300 -c 16
2310409 pts/20   R+     0:24      \_ stress -t 300 -c 16
2310410 pts/20   R+     0:25      \_ stress -t 300 -c 16
2310411 pts/20   R+     0:24      \_ stress -t 300 -c 16
2310412 pts/20   R+     0:23      \_ stress -t 300 -c 16
2310413 pts/20   R+     0:24      \_ stress -t 300 -c 16
2310414 pts/20   R+     0:25      \_ stress -t 300 -c 16
2310415 pts/20   R+     0:22      \_ stress -t 300 -c 16

이는 stress16개의 스레드에서 실행됩니다. 관련된이 답변.

답변2

pstree -p -H <PID>

이 명령은 모든 PID가 포함된 시스템의 전체 프로세스 트리를 표시하고 프로세스를 강조 표시합니다.

아마도 이것이 무슨 일이 일어나고 있는지 알아내는 데 도움이 될 것입니다.

관련 정보