如何暂停具有多个子pid的进程(java)

如何暂停具有多个子pid的进程(java)

我正在尝试“暂停”正在运行的java进程。所以我继续运行推荐的:

 sudo kill -SIGSTOP <pid_of_java_proc>

但是,如果我对其运行 strace:

 sudo strace -F -p <pid_of_java_proc> 2>&1

我看到这样的事情:

[pid <someotherpid>] sendto(34, "a string...
[pid <yetotherpid>] sendto(34, "different string...

据此我推测实际上有孩子不知何故仍然“没有冻结”的进程。

我错过了什么吗?有没有一种简单的方法可以阻止父 PID“及其所有子进程”?我似乎无法让 (someotherpid, Yetotherpid) 显示在 ps 报告中来枚举它们。

答案1

你有没有尝试过:

sudo kill -SIGSTOP $PID `ps -o pid= --ppid $PID`

这将停止当前进程,然后使用 ps 查找所有直接子进程,并停止它们。它可能不起作用的可能原因包括子级是嵌套的(即子级有子级),或者子级实际上属于某个全局父级(例如 init 系统)。

相关内容