#!/bin/bash TITLE="Linux系统管理程序" #LOGFILE="/var/log/system_status.log" # 查询CPU使用率 function cpu_usage() { #echo "---- CPU 使用情况 ----" >> $LOGFILE #top -bn1 | grep "Cpu(s)" | awk '{print "CPU 使用率: " $2 "%"}' >> $LOGFILE cpud=$(top -bn1 | grep "Cpu(s)" | awk '{print "使用率: " $2 "%"}') whiptail --title "$TITLE" --msgbox "CPU:\n$cpud" 20 50 } # 查询内存使用情况 function memory_usage() { #echo "---- 内存使用情况 ----" >> $LOGFILE #free -h | awk 'NR==2{printf "总内存: " $2 ", 已用: " $3 ", 剩余: " $4}' >> $LOGFILE #free | awk 'NR==2{printf "内存使用率:%.2f%%",($3 / $2 * 100)}' >> $LOGFILE percent=$(free | awk 'NR==2{printf "%.2f%%",($3 / $2 * 100)}') freed=$(free -h | awk 'NR==2{printf "总内存: " $2 ", 已用: " $3 ", 剩余: " $4}') whiptail --title "$TITLE" --msgbox "内存使用情况:\n$freed\n内存使用率:$percent" 20 50 } # 查询磁盘使用情况 function disk_usage() { #echo "---- 磁盘使用情况 ----" >> $LOGFILE #df -h | awk '$NF=="/"{print "文件系统: " $1 ", 已用: " $3 ", 可用: " $4 ", 使用率: " $5}' >> $LOGFILE diskd=$(df -h | awk '$NF=="/"{print "文件系统: " $1 ", 已用: " $3 ", 可用: " $4 ", 使用率: " $5}') whiptail --title "$TITLE" --msgbox "磁盘:\n$diskd" 20 50 } # 统计tcp连接数 function tcp_status() { #echo "---- TCP 连接状态 ----" >> $LOGFILE #ss -antp | awk '{status[$1]++}END{for(i in status) printf i":"status[i]" "}' >> $LOGFILE tcpd=$(ss -antp | awk '{status[$1]++}END{for(i in status) printf i":"status[i]" "}') whiptail --title "$TITLE" --msgbox "TCP:\nTCP连接统计:$tcpd" 20 50 } # 查询接口带宽使用 function network_usage() { #echo "---- 网络带宽使用情况 ----" >> $LOGFILE #ifstat -t 1 1 | awk 'NR==6{print "接收: " $2 " KB/s, 发送: " $4 " KB/s"}' >> $LOGFILE networkd=$(ifstat -t 1 | awk '/eth/{print "接口:" $1 ", " "接收: " $2 " KB/s, 发送: " $4 " KB/s"}') whiptail --title "$TITLE" --msgbox "接口带宽:\n$networkd" 20 50 } # 列出资源占用最高的进程 function top_process() { #echo "---- 占用资源最多的进程 ----" >> $LOGFILE #ps aux --sort=-%cpu | head -n 5 | awk '{printf "进程ID: %s, CPU: %.2f%%, 内存: %.2f%%, 命令: %s\n", $2, $3, $4, $11}' >> $LOGFILE procd=$(ps aux --sort=-%cpu | head -n 5 | awk 'NR>1{printf "用户: %s, 进程ID: %s, CPU: %.2f%%, 内存: %.2f%%, 命令: %s\n", $1, $2, $3, $4, $11}') whiptail --title "$TITLE" --msgbox "占用资源最多进程:\n$procd" 20 50 } # 使用whiptail创建菜单 while true;do OPTION=$(whiptail --title "$TITLE" --menu "请选择相应的系统管理项:" 20 50 10 \ "1" "查询CPU使用率" \ "2" "查询内存使用肯况" \ "3" "查询磁盘使用情况" \ "4" "统计TCP连接数" \ "5" "查询网络接口带宽" \ "6" "列出最占用资源的进程" \ "7" "退出程序" 3>&1 1>&2 2>&3) # 检查用户的选择 case $OPTION in 1) cpu_usage ;; 2) memory_usage ;; 3) disk_usage ;; 4) tcp_status ;; 5) network_usage ;; 6) top_process ;; 7) break ;; esac done
标签:status,管理程序,--,系统,----,awk,内存,Linux,LOGFILE From: https://www.cnblogs.com/xwupiaomiao/p/18709417