1. 程式人生 > >Shell指令碼程式設計——瞭解你的Linux系統必須掌握的20個命令

Shell指令碼程式設計——瞭解你的Linux系統必須掌握的20個命令

    要想詳細瞭解你的Linux系統,為系統評估和效能調化提供準確的資訊,那麼,你會經常用到這幾組命令。

一. 系統資訊
    1. 檢視核心版本、編譯主機、編譯器版本和編譯時間的資訊
   cat /proc/version                     
    2. 檢視bootloader啟動核心的引數
    cat /proc/cmdline
    3. 檢視核心版本和CPU架構等資訊
    uname -a
    4. 檢視當前時間、系統執行時間、使用者數量和負載資訊
    uptime
    5. 檢視系統程序、記憶體使用、交換記憶體、磁碟IO讀寫、系統中斷及上下文切換和CPU使用率的動態資訊

    vmstat 1 10

二. CPU資訊
    6. CPU的每個核的資訊,比如主頻、硬體商、cache大小和BogoMIPS等資訊
    cat /proc/cpuinfo 

三. 記憶體資訊
    7. 記憶體的綜合資訊。不要驚訝於Linux系統總是所剩記憶體不多,free列第二行才是實際剩餘記憶體,大量的cache/buffer是為了提高系統訪問磁碟的速度。
    free
    8. 詳細記憶體資訊。
    cat /proc/meminfo 

四. 磁碟資訊
    9. 當前掛載的檔案系統資訊
    mount -l
    10. 當前磁碟資訊,比如分割槽和大小
    fdisk -l
    11. 當前檔案系統資訊,包括使用百分比和掛載點

    df -h
    12. 當前掛載的檔案系統資訊快取檔案
    cat /etc/mtab
    13. 掛載檔案系統的配置檔案
    cat /etc/fstab

五. 程序資訊
    14. 系統的限制資訊
    ulimit -a
    15. ten processes catch most CPU resource
    ps aux | sort -k 3 -r | head -11
    16. ten processes catch most Memory resource
    ps aux | sort -k 4 -r | head -11

六. 其它資訊
    17. current modules and referenced counter

    lsmod
    18. top綜合資訊
    top
    19. all process info
    ps -ef
    20. 系統啟動日誌
    cat /var/log/dmesg

    檢視以上資訊的shell指令碼如下:

#!/bin/sh

LOG_FILE=linux_system_info_$(date +%Y%m%d%H%M).log
COND=1
touch ${LOG_FILE}

printex()
{
    echo " [[email protected] ]# $1"
}

while [ $COND -eq 1 ];
do
    echo " *** System information ***"
    printex "cat /proc/version"
    cat /proc/version
    printex "cat /proc/cmdline"
    cat /proc/cmdline
    printex "uname -a"
    uname -a
    printex "uptime"
    uptime
    echo " ## summary info"
    printex "vmstat 1 10"
    vmstat 1 10
    echo ""

    echo " *** CPU information ***"
    CORES=$(grep processor /proc/cpuinfo | wc -l) 
    CPU_TYPE=$(uname -m)
    echo " TITLE: CPU type: ${CPU_TYPE}, cores: ${CORES}"
    printex "cat /proc/cpuinfo"
    cat /proc/cpuinfo 
    echo ""

    echo " *** Memory information ***"
    printex "free"
    free
    printex "cat /proc/meminfo"
    cat /proc/meminfo 
    echo ""

    echo " *** Disk/Flash information ***"
    printex "mount -l #current mount info"
    mount -l
    printex "fdisk -l #current disk info"
    fdisk -l
    printex "df -h #current fs info with using rate"
    df -h
    printex "cat /etc/mtab"
    cat /etc/mtab
    printex "cat /etc/fstab"
    cat /etc/fstab
    echo ""

    echo " *** Processes/Threads information ***"
    echo " ## limited info"
    printex "ulimit -a"
    ulimit -a
    echo " ## ten processes catch most CPU resource"
    printex "ps aux | sort -k 3 -r | head -11"
    ps aux | sort -k 3 -r | head -11
    echo " ## ten processes catch most Memory resource"
    printex "ps aux | sort -k 4 -r | head -11"
    ps aux | sort -k 4 -r | head -11
    echo ""
    
    echo " *** Lardge information ***"
    printex "lsmod #current modules and referenced counter"
    lsmod
    printex "top -d 1 -n 1"
    top -d 1 -n 1
    echo " ## all process info"
    ps -ef
    printex "cat /var/log/dmesg"
    cat /var/log/dmesg
    echo ""

    COND=0
done >> ${LOG_FILE}

unix2dos ${LOG_FILE}