通过脚本提高linux服务器cpu占用率

通过脚本提高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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用 `top` 命令来获取 Linux 服务器的资源占用情况。例如,可以使用以下命令来查看 CPU 和内存的使用情况: ``` top ``` 此命令将显示系统的实时性能信息,包括 CPU 和内存的使用情况。 如果要将此信息保存到文件中,可以使用以下命令: ``` top -b > top.txt ``` 这将在后台运行 `top` 命令,并将输出保存到 `top.txt` 文件中。 如果要查看其他资源的使用情况,可以使用其他命令,如 `df` 命令查看磁盘使用情况,`vmstat` 命令查看虚拟内存使用情况,`iostat` 命令查看 I/O 使用情况等。 下面是一个示例脚本,可以查看 CPU、内存、磁盘和 I/O 的使用情况: ```bash #!/bin/bash echo "CPU usage:" echo "-----------" mpstat echo "" echo "Memory usage:" echo "-------------" free echo "" echo "Disk usage:" echo "-------------" df -h echo "" echo "I/O usage:" echo "-------------" iostat ``` 将此脚本保存为 `resource_usage.sh`,然后运行: ``` bash resource_usage.sh ``` 这将输出 CPU、内存、磁盘和 I/O 的使用情况。 ### 回答2: 编写一个脚本来获取Linux服务器的资源占用情况,可以通过以下步骤完成: 1. 首先,在脚本的开始部分,可以添加必要的注释和描述信息以提高可读性和易用性。 2. 使用命令行参数来接收服务器的IP地址或主机名。可以使用`sys.argv`来获取输入的IP地址或主机名。 3. 使用`ssh`命令来通过SSH协议连接到服务器。可以使用`subprocess`模块来执行系统命令。 4. 在连接到服务器后,可以使用各种Linux命令来获取服务器的资源占用信息。例如,可以使用`top`命令来获取CPU和内存的使用情况,可以使用`df`命令来获取磁盘空间使用情况,可以使用`netstat`命令来获取网络连接信息等。可以使用标准输出重定向来将命令输出保存到临时文件中。 5. 使用`scp`命令将临时文件从服务器复制到本地计算机。可以使用`subprocess`模块来执行系统命令。 6. 在本地计算机上,可以读取临时文件的内容并进行解析。可以使用Python的文件操作函数来读取和处理文件内容。获取所需的信息后,可以将其打印或保存到其他地方。 7. 最后,关闭和终止SSH连接。可以使用`subprocess`模块来执行`ssh`和`scp`命令,可以使用`subprocess`模块来执行系统命令。 以上是一个简单的脚本实现,可以根据需要进一步扩展和改进,以满足特定的需求。 ### 回答3: 这是一个用于获取Linux服务器资源占用情况的脚本: ```bash #!/bin/bash # 获取CPU使用情况 cpu_usage=$(top -bn1 | awk '/^%Cpu/ {print $2}') # 获取内存使用情况 memory_usage=$(free -m | awk '/^Mem/ {print $3}') # 获取磁盘使用情况 disk_usage=$(df -h | awk '/\/$/ {print $5}') # 获取网络流量 network_usage=$(ifstat | awk '/average/ {print $6}') echo "CPU 使用率: $cpu_usage" echo "内存 使用量: $memory_usage MB" echo "磁盘 使用率: $disk_usage" echo "网络 流量: $network_usage" ``` 这个脚本首先使用`top`命令获取CPU使用情况,并使用`awk`命令过滤出百分比值。然后使用`free`命令获取内存使用情况,并使用`awk`命令过滤出已使用的内存量。接下来使用`df`命令获取磁盘使用情况,并使用`awk`命令过滤出根目录("/")的使用率。最后使用`ifstat`命令获取网络流量,并使用`awk`命令过滤出平均流量。 你可以通过运行这个脚本来获取Linux服务器资源占用情况。将脚本保存为文件(例如`resource_usage.sh`),然后在终端中运行`bash resource_usage.sh`即可查看结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值