用shell写一个脚本,运行stress压力跑内存,自动查找系统下现在的内存然后进行压力测试,运行10分钟后查找stress进程,杀掉进程2分钟后再跑,共进行48小时
时间: 2024-03-28 16:42:05 浏览: 79
好的,我可以帮你编写这个脚本。首先需要确认一下你的系统是Linux还是其他操作系统,因为stress工具只能在Linux系统下运行。
假设你的系统是Linux,以下是脚本的具体实现过程:
```shell
#!/bin/bash
# 获取当前系统下的内存大小
MEM=$(free -m | awk '/Mem/{print $2}')
# 计算可用内存大小(取总内存的80%)
AVAIL_MEM=$((MEM * 8 / 10))
# 运行stress工具
stress --vm-bytes ${AVAIL_MEM}M --vm-keep -m 1 --timeout 600s &
# 循环执行48小时
for i in {1..2880}
do
# 每2分钟检查一次stress进程是否存在
sleep 120
if ! pgrep stress > /dev/null; then
# 如果stress进程不存在,说明已经运行完毕,退出循环
break
fi
# 如果stress进程还在运行,杀掉它并重新运行
pkill stress
sleep 120
stress --vm-bytes ${AVAIL_MEM}M --vm-keep -m 1 --timeout 600s &
done
```
解释一下脚本的实现过程:
1. 使用`free -m`命令获取当前系统下的内存大小,并使用`awk`命令提取出总内存大小(单位为MB)。
2. 根据总内存大小计算出可用内存大小,这里取总内存的80%作为可用内存。
3. 使用`stress`工具运行内存压力测试,参数如下:
- `--vm-bytes ${AVAIL_MEM}M`:用`${AVAIL_MEM}`指定的大小(单位为MB)进行内存测试。
- `--vm-keep`:使用这个参数可以保持内存测试进程一直运行,直到手动终止。
- `-m 1`:使用单线程进行测试。
- `--timeout 600s`:每次测试运行10分钟后自动终止。
4. 循环执行48小时,每2分钟检查一次stress进程是否存在。
5. 如果stress进程不存在,说明已经运行完毕,退出循环。
6. 如果stress进程还在运行,杀掉它并重新运行,参数同第3步。
注意事项:
1. 在运行脚本之前,需要先安装`stress`工具,可以使用以下命令进行安装:
```shell
sudo apt-get install stress
```
2. 运行脚本时需要使用root权限,否则无法执行`stress`命令。可以使用以下命令以root权限运行脚本:
```shell
sudo bash script.sh
```
希望这个脚本可以帮助到你,如果有任何问题可以随时问我。
阅读全文