shell脚本完成 cpu, mem利用率的监测。脚本每五秒记录一次当前cpu, mem利用率,每一条信息包含的当前时间,cpu利用率,mem利用率。 保存到log.txt文件中。程序运行时间1min。
时间: 2023-08-31 15:19:11 浏览: 118
### 回答1:
下面是一个简单的shell脚本,可以实现你的要求。你可以使用 `top` 命令获取 CPU 和内存占用率,并使用 `date` 命令获取当前时间。然后使用 `sleep` 命令来等待 5 秒,以便下一次记录。最后,将这些信息写入 log.txt 文件。
```
#!/bin/bash
# 输出文件头部
echo "时间, CPU利用率, 内存利用率" > log.txt
# 循环 12 次,每次等待 5 秒
for i in {1..12}
do
# 获取当前时间
current_time=$(date +"%Y-%m-%d %H:%M:%S")
# 获取 CPU 和内存占用率
cpu_usage=$(top -bn1 | grep load | awk '{printf "%.2f%%\t\t\n", $(NF-2)}')
mem_usage=$(free | awk 'NR==2{printf "%.2f%%\t\t", $3/$2*100}')
# 将信息写入文件
echo "$current_time, $cpu_usage, $mem_usage" >> log.txt
# 等待 5 秒
sleep 5
done
```
请注意,这个脚本是在 Linux 系统上编写的,如果你在其他操作系统上运行它,可能需要进行一些修改。
### 回答2:
可以使用以下的Shell脚本实现对CPU和内存利用率的监测,并将每次的记录保存到log.txt文件中:
```shell
#!/bin/bash
DURATION=60
INTERVAL=5
end_time=$((SECONDS+DURATION))
log_file="log.txt"
echo "当前时间 CPU利用率(%) 内存利用率(%)" > $log_file
while [ $SECONDS -lt $end_time ]
do
timestamp=$(date +"%Y-%m-%d %H:%M:%S")
cpu_usage=$(top -bn1 | awk 'NR==3{print 100-$8}' | cut -c 1-5)
mem_usage=$(free | awk 'NR==2{printf "%.2f", ($3/($3+$4)*100)}')
echo "$timestamp $cpu_usage $mem_usage" >> $log_file
sleep $INTERVAL
done
```
这段脚本首先设置了监测的总时长为60秒,每次记录之间的间隔为5秒,并指定了log.txt作为保存信息的文件。
在脚本的主循环中,通过调用top命令获取当前的CPU利用率,并借助awk和cut命令进行处理,然后使用free命令获取当前的内存利用率,并进行计算和格式化。最后,将当前时间、CPU利用率和内存利用率写入log.txt文件中。
脚本每次记录后会通过sleep命令暂停5秒,然后再进行下一次的记录,直到总时长达到60秒为止。
运行脚本后,即可根据实际情况查看log.txt文件中保存的CPU和内存利用率信息。
### 回答3:
要完成CPU和内存利用率的监测,可以使用Shell脚本编写一个循环,每五秒记录一次当前的CPU和内存利用率,并将每次记录的时间、CPU利用率和内存利用率保存到log.txt文件中。下面是一个简单的示例脚本:
```shell
#!/bin/bash
duration=60 # 程序运行时间1min,单位为秒
interval=5 # 每隔5秒记录一次
end_time=$(( SECONDS + duration )) # 计算结束时间
echo "时间 CPU利用率 Mem利用率" > log.txt # 初始化log.txt文件,写入表头
while [ $SECONDS -lt $end_time ]; do
current_time=$(date "+%Y-%m-%d %H:%M:%S") # 获取当前时间
cpu_utilization=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}') # 获取当前CPU利用率
mem_utilization=$(free | awk '/Mem/{printf "%.2f", $3/$2 * 100}') # 获取当前内存利用率
echo "$current_time $cpu_utilization% $mem_utilization%" >> log.txt # 将当前时间、CPU利用率和内存利用率记录到log.txt文件中
sleep $interval
done
```
在脚本中,我们通过SECONDS变量来计时,循环执行直到达到指定的运行时间。在每次循环中,我们使用`date`命令获取当前时间,使用`top`命令获取当前CPU利用率,使用`free`命令获取当前内存利用率,并将这些信息写入log.txt文件。最后使用`sleep`命令来等待5秒。脚本运行结束后,log.txt文件会包含每隔五秒记录的时间、CPU利用率和内存利用率信息。
阅读全文