我必须在 Rhel 6 机器上开始一些性能测试,但在开始测试之前,我必须确保没有其他 java 进程在运行。
手动执行此操作的方法是使用"ps -ef | grep java"
但是,由于这个测试将是自动化的,我需要一种方法来以编程方式检测它并杀死所有它们。
有什么方法可以做到吗?
答案1
使用 pkill 应该非常简单:
pkill java
答案2
怎么样...?
pkill java
pkill(1)
(也在killall(1)
Linux 上)与 类似kill(1)
,但将信号发送到具有指定名称而不是 PID 的所有进程。还有其他匹配进程的方法——查看手册页!
事实上,特别是因为我们正在讨论的是 Java,所以我会执行以下操作来正确地实现自动化:
pgrep java >/dev/null && (pkill java; sleep 5)
pgrep java >/dev/null && (pkill -9 java; sleep 5)
if pgrep java >/dev/null; then
echo "Whoops, java processes still running. Bailing out."
exit 1
fi
这将检查是否有任何 java 进程正在运行,发送信号SIGTERM
并等待 5 秒钟。如果仍有进程在运行,它会发送SIGKILL
信号并再等待 5 秒。如果有仍然进程正在运行,它会停止执行脚本并返回退出代码 1。
更新:将答案更改为使用pgrep(1)
andpkill(1)
而不是pidof(1)
and killall(1)
。
答案3
首先,将输出写入ps -ef | grep java
名为“filename”的文件,然后创建一个 Python 文件:
import os
f = open('filename',r')`
for i in f:
a = i.split()
b= "kill "
b=b+str(a[1])
os.system(b)
运行它python pythonfilename.py
,您的 Java 程序将被终止。