1.新建脚本
vi autoKillJavaProcess.sh
2.添加以下方法
#!/bin/bash
#
function killRunThreeDaysJava(){
time_subroutine=$(getconf CLK_TCK)
start_time=$(awk '{print $22}' /proc/$1/stat)
sys_uptime=$(awk '{print $1}' /proc/uptime)
pid_uptime=$((${sys_uptime%.*} - ${start_time}/${time_subroutine}))
#判断java运行时间是否大于等于 3 天
if [ ${pid_uptime} -ge 259200 ];then
#根据进程 pid 查找进程
cmd=`ps -ef | grep $1 | awk '{print $10}'`
#判断进程是否含义./
if [[ "${cmd}" =~ "./" ]]
then
echo "pid=${1}" >> /data/process.log 2>&1
kill -9 $1
fi
fi
}
process_num=`ps -ef|grep java|grep -v grep|wc -l`
if [ $process_num -ge 10 ];then
for pid in `ps -A | grep "java"|awk '{print $1}'`
do
killRunThreeDaysJava $pid
done
fi
3.赋予脚本权限
chmod a+x autoKillJavaProcess.sh
4.运行脚本
./autoKillJavaProcess.sh
5.查看 kill 得进程
cat /data/process.log
6.添加定时任务
crontab -e
7.指定每天零时执行
0 0 * * * /data/autoKillPage.sh > /dev/null 2>&1 &
8.重载配置
systemctl reload crond.service