第一步: 做好监控CPU的脚本文件:

#!/bin/bash

## 设置CPU使用率阈值
CPU_THRESHOLD=90
while true;do
	# 获取总的CPU使用率
	CPU_USAGE=$(top -b -n1 | grep "Cpu(s)" | awk '{print $2}') #这里主要不要加$4(系统占用率)
	#log
	logfile=/var/log/cup_monitor_by_weifeng.logq
	# 检查CPU使用率是否超过阈值
	if (( $(echo "$CPU_USAGE > $CPU_THRESHOLD" | bc -l) )); then
    	# 获取CPU使用率最高的进程的PID
    	TOP_PID=$(top -b -o %CPU -n1 | sed -n '8p' | awk '{print $1}')
    	
    	# 杀死该进程
    	kill -9 $TOP_PID
		echo "---------------------`date`-----------------:" >> $logfile
    	echo "Killed process $TOP_PID due to high CPU usage: $CPU_USAGE%" >> $logfile
	fi
	sleep 10
done

第二步:基于 systemd方式实现,创建和配置systemd:

        在/etc/systemd/system/目录下创建 和配置systemd 服务文件,示例如下,这里配置ExecStart参数即可,systemd 服务文件更多配置和命令使用可参考:systemd服务

root@ubuntu-Precision-7920-Tower:~# cat   /etc/systemd/system/watch_monitor_cpu.service
[Unit]
Description=Monitor CPU Usage and Kill High CPU Usage Processes
After=network.target

[Service]
ExecStart=/home/weifeng_ma/04.Scripts/monitor_cup_and_deal.sh
Restart=always
StandardOutput=append:/var/log/monitor_cpu.log
StandardError=append:/var/log/monitor_cpu.log

[Install]
WantedBy=multi-user.target

第三步:启动,开自机启动,查看服务状态,服务状态正常即成功:

#重载所有修改过的配置文件
sudo systemctl daemon-reload
#开机自启服务
sudo systemctl enable watch_monitor_cpu.service
#启动服务
sudo systemctl start watch_monitor_cpu.service
#启动服务
sudo systemctl restart watch_monitor_cpu.service
#查看服务状态
sudo systemctl status watch_monitor_cpu.service
#停止服务状态
systemctl stop watch_monitor_cpu.service

更多推荐