通过脚本提高linux服务器cpu占用
1、创建脚本
cpu-up.sh
#!/bin/bash
base_dir=$(
cd $(dirname $0)
pwd
)
# 从命令行参数中读取目标CPU使用率
if [ $# -eq 0 ]; then
echo "Usage: $0 <target_cpu_usage>"
exit 1
fi
# $1接收第一个参数
TARGET_CPU_USAGE=$1
# 无限循环进行浮点数计算
function cpu_load {
# 定义CPU占用率的上限(以百分比表示)
max_cpu_usage=5
# 根据CPU核数调整循环次数,以达到目标CPU占用率
# 例如,对于单核CPU,每秒执行20次循环大约占用5%的CPU,根据实际情况调整
# 对于多核CPU,循环次数需要相应增加
loops_per_second=$(($(nproc) * max_cpu_usage * 200))
# 主循环
while true; do
for ((i = 0; i < loops_per_second; i++)); do
# 执行一些基本的计算操作,例如递增计数器
j=$((j + 1))
done
# 休眠一小段时间,以减少CPU占用
sleep 0.05
done
}
# 主循环
while true; do
# 获取当前CPU使用率
current_usage=$(top -b -n 3 | grep '%Cpu' | awk '{print $2}' | tail -1)
# 转换为数字并检查有效性
if [[ "$current_usage" =~ ^[0-9]+([.][0-9]+)?$ ]]; then
if (($(echo "$current_usage < $TARGET_CPU_USAGE" | bc -l))); then
# 如果CPU使用率低于目标值,增加计算负载
cpu_load &
elif (($(echo "$current_usage > $TARGET_CPU_USAGE" | bc -l))); then
# 如果CPU使用率高于目标值,减少计算负载
pkill -f 'cpu_load'
fi
else
echo "Error: Invalid CPU usage value '$current_usage'."
fi
sleep 1
done
2、创建systemd 服务文件
如果你在Linux服务器上运行脚本,并且希望它作为服务在系统启动时自动启动,你可以创建一个 systemd 服务文件
创建一个 .service 文件,通常位于 /etc/systemd/system/ 目录下
sudo nano /etc/systemd/system/up_up_up.service
或者通过命令将service文件链接到/etc/systemd/system下
sudo ln -s /path/to/cpu-up.service /etc/systemd/system/cpu-up.service
cpu-up.service
[Unit]
Description=CPU UP Service
After=network.target
[Service]
# 替换成你的用户
User=root
# 替换成你的用户组
Group=root
Type=simple
Environment="TERM=xterm"
#ExecStart 配置你自己的脚本文件路径 53 设定你自己的期望达到的占用率
ExecStart=/home/cpu-up/cpu-up.sh 53
Restart=on-failure
[Install]
WantedBy=multi-user.target
3、启动脚本服务
# 确认脚本具有可执行权限。
# 查看文件权限
ls -l /home/myuser/cpu-up.sh
# 使用 chmod 命令给脚本添加执行权限
chmod +x /home/cpu-up/cpu-up.sh
# 重新加载 systemd 配置
sudo systemctl daemon-reload
# 重启服务
sudo systemctl restart cpu-up.service
# 检查服务状态
sudo systemctl status cpu-up.service
# 停止服务
sudo systemctl status cpu-up.service
# 查看系统资源使用情况
top