当我们打开一个终端,用nohup运行vdbench程序。断开连接后,你发现你写的配置文件有误,想关闭已有的vdbench进程。你重新连接上终端,咦,我的jobs命令怎么没有显示我的nohup任务呢?这是因为你的nohup任务的sh进程的父进程为你的shell进程。而关闭该shell进程后,你的sh进程成为了孤儿进程,其父进程也就成了systemd进程。。。而众所周知,vdbench还会调用JVM。多个vdbench进程可能有多个JVM运行。
怎么办?怎么办?怎么办?
我的经验:
首先,利用ps进程树查看进程的PGID(Process Group ID)。然后kill掉整个进程组。
首先查看进程树。
ps -ejH
嘿嘿找到了。给大家说一下,第1列是PID,第2列是PGID,第3列是SID。(分别是进程ID、进程组ID、会话IP)。我们发现所有vdbench和java进程都包含相同的PGID。要是能直接kill掉所有的进程就好了。诶还真有。
输入下面的命令:
kill -9 -226932
第