如何查找与给定进程相关的所有进程的PID?

如何查找与给定进程相关的所有进程的PID?

我怎样才能找到正在执行另一个进程工作的进程的 PID 或其他信息?kworker例如,我正在谈论线程,或者在内核中为另一个进程执行工作的任何其他线程/进程。

我的困境是,我有一个实时调度进程(SCHED_FIFO)以 sched prio 99 运行,CPU 关联性绑定到 CPU 0,但是当我将 CPU 压力注入到我的机器上时,我注意到我的重要 rt 进程无法抢占其他进程、非重要流程。我认为这可能是因为kworkers即使我在taskset和中指定了 -a 选项,但为这个重要进程工作的 不会继承主进程具有的优先级chrt。我当前的想法是手动taskset操作chrt线程kworker,这样它们就不会被其他非 RT 进程抢占。

答案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

这是stress跨 16 个线程运行的。相关这个答案

答案2

pstree -p -H <PID>

该命令向您显示系统的完整进程树以及所有 PID,并突出显示您的进程。

也许这有助于发现正在发生的事情。

相关内容