首页 > 系统相关 >Linux系统管理程序

Linux系统管理程序

时间:2025-02-11 11:33:27浏览次数:3  
标签:status 管理程序 -- 系统 ---- awk 内存 Linux LOGFILE

 

#!/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

相关文章