检测服务器是否加载

检测服务器是否加载

我必须在 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 程序将被终止。

相关内容