7-8 shell编程——用户登录次数分析 分数 15 作者 郑皎凌 单位 成都信息工程大学 ###编写一个Shell 脚本,分析系统资源使用趋势数据,找出内存使用的峰值 输入样例: 1620000000 45 1024 120 1620000300 65 1536 180 1620000600 85 2048 220 1620000900 75 1792 150 输出样例: 在这里给出相应的输出。例如: 内存使用峰值: 2048MB 代码长度限制 16 KB Bash (bash) 时间限制 400 ms 内存限制 64 MB 其他编译器 时间限制 400 ms 内存限制 64 MB 栈限制 8192 KB
时间: 2025-09-13 11:51:44 AIGC 浏览: 4
要编写一个 Shell 脚本分析系统资源使用趋势数据并找出内存使用峰值,可以借助`top`命令获取系统资源信息,然后通过`grep`、`awk`等工具提取内存使用数据,最终找出峰值。
以下是一个示例脚本:
```bash
#!/bin/bash
# 定义一个临时文件来存储 top 命令的输出
TEMP_FILE="system_resource_usage.log"
# 运行 top 命令并将输出重定向到临时文件
# -b 选项表示以批处理模式运行,-n 10 表示运行 10 次,-d 1 表示每次间隔 1 秒
top -b -n 10 -d 1 > $TEMP_FILE
# 从临时文件中提取内存使用数据
# 使用 grep 命令找到包含 "KiB Mem" 的行,然后使用 awk 提取第四列(内存使用量)
memory_usage=$(grep "KiB Mem" $TEMP_FILE | awk '{print $4}')
# 找出内存使用的峰值
peak_memory=$(echo $memory_usage | tr ' ' '\n' | sort -n | tail -n 1)
# 输出结果
echo "内存使用的峰值是: $peak_memory KiB"
# 删除临时文件
rm $TEMP_FILE
```
### 代码解释
1. **定义临时文件**:`TEMP_FILE="system_resource_usage.log"`定义了一个临时文件,用于存储`top`命令的输出。
2. **运行`top`命令**:`top -b -n 10 -d 1 > $TEMP_FILE`以批处理模式运行`top`命令 10 次,每次间隔 1 秒,并将输出重定向到临时文件中。
3. **提取内存使用数据**:`grep "KiB Mem" $TEMP_FILE | awk '{print $4}'`从临时文件中找到包含`KiB Mem`的行,并提取第四列(内存使用量)。
4. **找出内存使用峰值**:`echo $memory_usage | tr ' ' '\n' | sort -n | tail -n 1`将内存使用数据按行分割,排序后取最后一行(最大值)。
5. **输出结果**:`echo "内存使用的峰值是: $peak_memory KiB"`输出内存使用的峰值。
6. **删除临时文件**:`rm $TEMP_FILE`删除临时文件。
阅读全文