linux资源占用脚本

1. CPU占用

脚本名:cup.sh
#!/bin/bash
 
# 构造死循环代码占用一个CPU
endless_loop() {
  echo -ne "i=0; while true ;do i=i+100; i=100;done" | /usr/bin/bash &
}
 
# 校验参数个数
if [ $# != 2 ]; then
  echo "USAGE: $0 <cpus,sleep time>"
  exit 1
fi
 
# 根据第一个参数循环执行endless_loop占用CPU,并将进程id存入数组
for i in $(seq $1); do
  endless_loop
  pid_array[$i]=$!
done
 
# 界面给出提示,并将kill 进程id命令重定向到/tmp/cpufile.txt文件中
for i in "${pid_array[@]}"; do
  echo 'execute: kill' $i
  echo 'kill' $i >>/tmp/cpufile.txt
done
 
# 给出提示,本次脚本需要执行多少秒,如果想提前结束脚本执行ctrl+C,并且要手动去kill掉进程
echo "If executed ctrl+C,Please execute the above lines manually"
echo "Please wait $2 seconds"
sleep $2
 
# 执行完成后,自动从/tmp/cpufile.txt文件中读取命令kill掉占用CPU的进程
for i in $(awk '{print $2}' /tmp/cpufile.txt); do
  echo "kill $i"
  kill $i
done
 
# 清理文件
find /tmp -name cpufile.txt -delete
调用方式
# 占用3个核,占用100秒
sh cpu.sh 3 100

2. 内存占用

memory.sh
#!/bin/bash 
# 校验参数
if [ $# != 2 ]; then
  echo "USAGE: $0 <free,sleep time>"
  exit 1
fi
 
free -g
[ -d /tmp/memory ] && exit 1 || mkdir /tmp/memory
mount -t tmpfs -o size=$1G tmpfs /tmp/memory
dd if=/dev/zero of=/tmp/memory/block
free -g
echo "If executed ctrl+C,Please execute the following lines manually"
echo "execute: rm -rf /tmp/memory/block"
echo "execute: umount /tmp/memory"
echo "execute: rmdir /tmp/memory"
echo "Please wait $2 seconds"
sleep $2
find /tmp/memory -name block -delete
umount /tmp/memory
find /tmp -name memory -delte
调用方式
# 占用3G内存,占用100秒
sh memory.sh 3 100
crontab执行示例
# cpu占用3个核,100秒
*/15 19-23,0-7 * * * nohup /bin/bash /data/scripts/cpu.sh 3 100 > /dev/null &
# cpu占用1个核,80秒
*/30 8-18 * * * nohup /bin/bash /data/scripts/cpu.sh 1 80 > /dev/null &

# 内存占用5个G,300秒
*/20 19-23,0-7 * * * nohup /bin/bash /data/scripts/memory.sh 5 300 > /dev/null &
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 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
发出的红包

打赏作者

Jepson2017

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值