Linux 脚本 - 查找 Java 进程,如果内存占用超过 80%,则重新启动它

Linux 脚本 - 查找 Java 进程,如果内存占用超过 80%,则重新启动它

我想在 crontab 中放入一个 shell 脚本来监控 java 进程,如果内存超过 80%,那么我想重新启动它。有人可以帮忙吗?谢谢!!Elad。

答案1

Monit 的完美用例。 http://mmonit.com/

示例配置

check process foo with pidfile "/var/run/foo"
start program = "/bin/foo -c foo.conf"
stop program = "/bin/kill -KILL
猫/var/run/foo.pid"
if totalmem is greater than X.0 MB for 5 cycles then restart

您需要 monit 而不是脚本的原因是它可以向您发送电子邮件、提供日志等等,但我会把研究留给您。

答案2

假设 Java 进程有一个启动脚本和一个 PID 文件,并且您想在它使用超过 1G RSS 内存时重新启动它:

#!/bin/sh
set -e
RAM=`ps -o rss --no-headers -p $(cat /var/run/myservice.pid) || true`
if [ "$RAM" ]; then
    # It's not running
    service myservice start
elif [ "$RAM" -gt 1048576 ]; then
    # It's using too much memory
    service myservice restart
fi

相关内容