shell脚本完成 cpu, mem利用率的监测。脚本每五秒记录一次当前cpu, mem利用率,每一条信息包含的当前时间,cpu利用率,mem利用率。 保存到log.txt文件中。程序运行时间1min。
时间: 2023-09-21 08:06:02 浏览: 53
### 回答1:
可以使用Linux系统自带的工具top和awk来完成这个任务。
下面是一个简单的脚本:
```bash
#!/bin/bash
# 记录开始时间
start_time=$(date +%s)
# 循环1分钟
while [ $(($(date +%s) - $start_time)) -lt 60 ]
do
# 获取当前时间
current_time=$(date +"%Y-%m-%d %H:%M:%S")
# 获取 CPU 利用率
cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2+$4}')
# 获取内存利用率
mem_usage=$(free | awk '/Mem/ {print $3/$2 * 100.0}')
# 输出信息
echo "$current_time CPU: $cpu_usage% Mem: $mem_usage%" >> log.txt
# 等待5秒
sleep 5
done
```
这个脚本首先记录了开始时间,然后循环一分钟。在每次循环中,它使用top命令获取CPU利用率,并使用awk命令从输出中提取所需信息。类似地,它使用free命令获取内存利用率,然后将信息写入log.txt文件中。最后,脚本睡眠5秒,以便下次循环。
### 回答2:
可以编写一个Shell脚本来完成CPU和内存利用率的监测,并将结果每五秒记录到log.txt文件中。脚本运行时间为1分钟。
首先,我们可以使用top命令获取CPU和内存的利用率。top命令可以实时监测系统的CPU和内存利用率,并且提供了一个-b参数来进行批处理输出。我们可以使用grep命令来过滤出我们所需要的信息。
脚本如下:
#!/bin/bash
duration=60 # 程序运行的时间(秒)
interval=5 # 每次记录的间隔时间(秒)
logfile="log.txt" # 日志文件名
end_time=$(($(date +%s) + duration)) # 计算程序结束的时间
echo "时间 CPU利用率 内存利用率" > $logfile # 初始化日志文件
while [ $(date +%s) -lt $end_time ]
do
current_time=$(date "+%Y-%m-%d %H:%M:%S") # 获取当前时间
cpu_usage=$(top -b -n 1 | grep "Cpu(s)" | awk '{print $2}' | awk -F'.' '{print $1}') # 获取CPU利用率
mem_usage=$(top -b -n 1 | grep "KiB Mem" | awk '{print $8/$4*100}') # 获取内存利用率
echo "$current_time $cpu_usage% $mem_usage%" >> $logfile # 记录到日志文件
sleep $interval # 等待间隔时间
done
echo "监测完成,日志已保存到$logfile"
这个脚本先定义了程序运行时间和每次记录的间隔时间,然后初始化了日志文件。使用while循环来进行监测。循环内部首先获取当前时间,然后使用top命令获取CPU和内存的利用率,并将结果记录到日志文件中。最后让脚本睡眠指定的间隔时间。
脚本运行时会输出一条“监测完成,日志已保存到log.txt”来提示运行结束,并将结果保存到log.txt文件中。
注意:在执行此脚本之前,请确保你的系统中已经安装了top命令。
### 回答3:
可以编写一个shell脚本来完成这个任务。以下是一个示例脚本:
```shell
#!/bin/bash
# 定义日志文件名
log_file="log.txt"
# 获取当前时间
current_time() {
date +"%Y-%m-%d %H:%M:%S"
}
# 获取当前CPU利用率
get_cpu_usage() {
usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}')
echo $usage
}
# 获取当前内存利用率
get_mem_usage() {
usage=$(free | grep Mem | awk '{print $3/$2 * 100.0}')
echo $usage
}
# 主循环
while [[ $SECONDS -lt 60 ]]; do
# 获取当前时间
time=$(current_time)
# 获取当前CPU和内存利用率
cpu_usage=$(get_cpu_usage)
mem_usage=$(get_mem_usage)
# 输出日志信息
echo "$time - CPU: $cpu_usage% Mem: $mem_usage%" >> $log_file
# 休眠5秒
sleep 5
done
```
将以上脚本保存为一个文件,比如`monitor.sh`。然后执行以下命令来运行脚本:
```shell
chmod +x monitor.sh
./monitor.sh
```
这样,脚本将会运行1分钟,每5秒记录一次当前的CPU和内存利用率,并将信息保存到`log.txt`文件中。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)