我想在 crontab 中放入一个 shell 脚本来监控 java 进程,如果内存超过 80%,那么我想重新启动它。有人可以帮忙吗?谢谢!!Elad。
答案1
Monit 的完美用例。 http://mmonit.com/
示例配置
check process foo with pidfile "/var/run/foo"
猫/var/run/foo.pid
start program = "/bin/foo -c foo.conf"
stop program = "/bin/kill -KILL"
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