要求编写一个shell脚本,实现计算机各个性能数据监控的功能具体监控项目要求如下:CPU负载 网卡流量 内存剩余容量 计算机账户数量 当前登录账户数量 计算机当前开启的进程数量 本机已安装的软件包数量
时间: 2024-09-25 16:18:10 浏览: 44
要编写一个Shell脚本来监控上述的系统性能数据,你可以创建一个bash脚本,使用一些常用的Linux命令来获取这些信息。以下是一个基础示例:
```sh
#!/bin/bash
# CPU负载
cpu_load=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}')
# 网卡流量
if [ -e /sys/class/net/eth0/statistics/rx_bytes ]; then # 请替换eth0为你实际网卡名称
rx_traffic=$(cat /sys/class/net/eth0/statistics/rx_bytes)
tx_traffic=$(cat /sys/class/net/eth0/statistics/tx_bytes)
else
echo "无法获取网卡流量信息"
fi
# 内存剩余容量
mem_remaining=$(free | grep Mem | awk '{print $4/$2 * 100.0}')
# 用户账户数量
account_count=$(cat /etc/passwd | wc -l)
# 当前登录账户数量
users_online=$(who | wc -l)
# 进程数量
processes=$(ps aux | wc -l)
# 已安装软件包数量
package_count=$(dpkg-query -W | wc -l) || package_count=$(rpm -qa | wc -l) # Linux发行版依赖于包管理器
echo "CPU负载: $cpu_load%"
echo "接收网络流量 (rx): $rx_traffic bytes, 发送网络流量 (tx): $tx_traffic bytes"
echo "内存剩余: $mem_remaining%"
echo "用户账户总数: $account_count"
echo "当前在线用户数: $users_online"
echo "进程总数: $processes"
echo "已安装软件包数: $package_count"
# 输出到日志文件
echo "$cpu_load% $rx_traffic $tx_traffic $mem_remaining% $account_count $users_online $processes $package_count" >> /var/log/system_monitor.log
#
阅读全文