最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

shell腳本實(shí)現(xiàn)一鍵獲取linux內(nèi)存/cpu/磁盤IO信息

 更新時(shí)間:2024年12月09日 11:05:41   作者:242030  
這篇文章主要為大家詳細(xì)介紹了如何通過(guò)shell腳本實(shí)現(xiàn)一鍵獲取linux內(nèi)存/cpu/磁盤IO等信息,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下

前言

在日常的 Linux 系統(tǒng)維護(hù)工作中,快速獲取系統(tǒng)的狀態(tài)信息是非常重要的。特別是在服務(wù)器出現(xiàn)問(wèn)題時(shí),能夠一鍵獲取 CPU 使用率、內(nèi)存使用情況、磁盤 I/O 讀寫等關(guān)鍵指標(biāo),對(duì)于診斷問(wèn)題非常有幫助。今天,我們就來(lái)編寫一個(gè)簡(jiǎn)單卻功能強(qiáng)大的 Shell 腳本來(lái)獲取linux系統(tǒng)CPU、內(nèi)存、磁盤IO等信息。

了解所需工具

在 Linux 系統(tǒng)中,有許多工具可以幫助我們獲取系統(tǒng)的運(yùn)行狀態(tài),比如 top、freeiostat、dfps 等。這些工具都能提供豐富的信息,但是我們需要從中提取對(duì)我們有用的部分。

完整代碼

#!/bin/bash
# 獲取要監(jiān)控的本地服務(wù)器IP地址
IP=`ifconfig | grep inet | grep -vE 'inet6|127.0.0.1' | awk '{print $2}'`
echo "IP地址:"$IP
 
# 獲取cpu總核數(shù)
cpu_num=`grep -c "model name" /proc/cpuinfo`
echo "cpu總核數(shù):"$cpu_num
 
# 1、獲取CPU利用率
################################################
#us 用戶空間占用CPU百分比
#sy 內(nèi)核空間占用CPU百分比
#ni 用戶進(jìn)程空間內(nèi)改變過(guò)優(yōu)先級(jí)的進(jìn)程占用CPU百分比
#id 空閑CPU百分比
#wa 等待輸入輸出的CPU時(shí)間百分比
#hi 硬件中斷
#si 軟件中斷
#################################################
# 獲取用戶空間占用CPU百分比
cpu_user=`top -b -n 1 | grep Cpu | awk '{print $2}' | cut -f 1 -d "%"`
echo "用戶空間占用CPU百分比:"$cpu_user
 
# 獲取內(nèi)核空間占用CPU百分比
cpu_system=`top -b -n 1 | grep Cpu | awk '{print $4}' | cut -f 1 -d "%"`
echo "內(nèi)核空間占用CPU百分比:"$cpu_system
 
# 獲取空閑CPU百分比
cpu_idle=`top -b -n 1 | grep Cpu | awk '{print $8}' | cut -f 1 -d "%"`
echo "空閑CPU百分比:"$cpu_idle
 
# 獲取等待輸入輸出占CPU百分比
cpu_iowait=`top -b -n 1 | grep Cpu | awk '{print $10}' | cut -f 1 -d "%"`
echo "等待輸入輸出占CPU百分比:"$cpu_iowait
 
#2、獲取CPU上下文切換和中斷次數(shù)
# 獲取CPU中斷次數(shù)
cpu_interrupt=`vmstat -n 1 1 | sed -n 3p | awk '{print $11}'`
echo "CPU中斷次數(shù):"$cpu_interrupt
 
# 獲取CPU上下文切換次數(shù)
cpu_context_switch=`vmstat -n 1 1 | sed -n 3p | awk '{print $12}'`
echo "CPU上下文切換次數(shù):"$cpu_context_switch
 
#3、獲取CPU負(fù)載信息
# 獲取CPU15分鐘前到現(xiàn)在的負(fù)載平均值
cpu_load_15min=`uptime | awk '{print $11}' | cut -f 1 -d ','`
echo "CPU 15分鐘前到現(xiàn)在的負(fù)載平均值:"$cpu_load_15min
 
# 獲取CPU5分鐘前到現(xiàn)在的負(fù)載平均值
cpu_load_5min=`uptime | awk '{print $10}' | cut -f 1 -d ','`
echo "CPU 5分鐘前到現(xiàn)在的負(fù)載平均值:"$cpu_load_5min
 
# 獲取CPU1分鐘前到現(xiàn)在的負(fù)載平均值
cpu_load_1min=`uptime | awk '{print $9}' | cut -f 1 -d ','`
echo "CPU 1分鐘前到現(xiàn)在的負(fù)載平均值:"$cpu_load_1min
 
# 獲取任務(wù)隊(duì)列(就緒狀態(tài)等待的進(jìn)程數(shù))
cpu_task_length=`vmstat -n 1 1 | sed -n 3p | awk '{print $1}'`
echo "CPU任務(wù)隊(duì)列長(zhǎng)度:"$cpu_task_length
 
#4、獲取內(nèi)存信息
# 獲取物理內(nèi)存總量
mem_total=`free | grep Mem | awk '{print $2}'`
echo "物理內(nèi)存總量:"$mem_total
 
# 獲取操作系統(tǒng)已使用內(nèi)存總量
mem_sys_used=`free | grep Mem | awk '{print $3}'`
echo "已使用內(nèi)存總量(操作系統(tǒng)):"$mem_sys_used
 
# 獲取操作系統(tǒng)未使用內(nèi)存總量
mem_sys_free=`free | grep Mem | awk '{print $4}'`
echo "剩余內(nèi)存總量(操作系統(tǒng)):"$mem_sys_free
 
# 獲取應(yīng)用程序已使用的內(nèi)存總量
mem_user_used=`free | sed -n 3p | awk '{print $3}'`
echo "已使用內(nèi)存總量(應(yīng)用程序):"$mem_user_used
 
# 獲取應(yīng)用程序未使用內(nèi)存總量
mem_user_free=`free | sed -n 3p | awk '{print $4}'`
echo "剩余內(nèi)存總量(應(yīng)用程序):"$mem_user_free
 
 
# 獲取交換分區(qū)總大小
mem_swap_total=`free | grep Swap | awk '{print $2}'`
echo "交換分區(qū)總大?。?$mem_swap_total
 
# 獲取已使用交換分區(qū)大小
mem_swap_used=`free | grep Swap | awk '{print $3}'`
echo "已使用交換分區(qū)大小:"$mem_swap_used
 
# 獲取剩余交換分區(qū)大小
mem_swap_free=`free | grep Swap | awk '{print $4}'`
echo "剩余交換分區(qū)大?。?$mem_swap_free
 

#5、獲取磁盤I/O統(tǒng)計(jì)信息
echo "指定設(shè)備(/dev/sda)的統(tǒng)計(jì)信息"
# 每秒向設(shè)備發(fā)起的讀請(qǐng)求次數(shù)
disk_sda_rs=`iostat -kx | grep sda| awk '{print $4}'`
echo "每秒向設(shè)備發(fā)起的讀請(qǐng)求次數(shù):"$disk_sda_rs
 
# 每秒向設(shè)備發(fā)起的寫請(qǐng)求次數(shù)
disk_sda_ws=`iostat -kx | grep sda| awk '{print $5}'`
echo "每秒向設(shè)備發(fā)起的寫請(qǐng)求次數(shù):"$disk_sda_ws
 
# 向設(shè)備發(fā)起的I/O請(qǐng)求隊(duì)列長(zhǎng)度平均值
disk_sda_avgqu_sz=`iostat -kx | grep sda| awk '{print $9}'`
echo "向設(shè)備發(fā)起的I/O請(qǐng)求隊(duì)列長(zhǎng)度平均值"$disk_sda_avgqu_sz
 
# 每次向設(shè)備發(fā)起的I/O請(qǐng)求平均時(shí)間
disk_sda_await=`iostat -kx | grep sda| awk '{print $10}'`
echo "每次向設(shè)備發(fā)起的I/O請(qǐng)求平均時(shí)間:"$disk_sda_await
 
# 向設(shè)備發(fā)起的I/O服務(wù)時(shí)間均值
disk_sda_svctm=`iostat -kx | grep sda| awk '{print $11}'`
echo "向設(shè)備發(fā)起的I/O服務(wù)時(shí)間均值:"$disk_sda_svctm
 
# 向設(shè)備發(fā)起I/O請(qǐng)求的CPU時(shí)間百分占比
disk_sda_util=`iostat -kx | grep sda| awk '{print $12}'`
echo "向設(shè)備發(fā)起I/O請(qǐng)求的CPU時(shí)間百分占比:"$disk_sda_util

深度解析:腳本背后的原理

1. 獲取 IP 地址

ifconfig 命令用于顯示所有網(wǎng)絡(luò)接口的配置信息。通過(guò) grep 和 awk 等工具,我們可以從中提取出 IP 地址信息。

2. 獲取 CPU 總核數(shù)

/proc/cpuinfo 文件包含了關(guān)于 CPU 的詳細(xì)信息,其中 model name 字段的數(shù)量即為 CPU 總核數(shù)。

3. 獲取 CPU 使用率

top 命令是一個(gè)動(dòng)態(tài)顯示系統(tǒng)進(jìn)程狀態(tài)的工具,我們可以利用它來(lái)獲取 CPU 的使用率。通過(guò)管道命令 grep、sed 和 awk,我們可以精確地提取出 CPU 使用率的數(shù)據(jù)。

4. 獲取內(nèi)存使用情況

free 命令用于顯示系統(tǒng)自由內(nèi)存的狀態(tài),通過(guò) -m 參數(shù)可以獲取以 MB 為單位的內(nèi)存信息。

5. 獲取磁盤 I/O 信息

iostat 命令用于報(bào)告 CPU 使用情況和磁盤 I/O 統(tǒng)計(jì)信息。通過(guò) -d 參數(shù)可以獲取磁盤設(shè)備的詳細(xì)信息,-x 參數(shù)則提供了額外的 I/O 統(tǒng)計(jì)信息。

執(zhí)行結(jié)果:

到此這篇關(guān)于shell腳本實(shí)現(xiàn)一鍵獲取linux內(nèi)存/cpu/磁盤IO信息的文章就介紹到這了,更多相關(guān)shell獲取linux信息內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • shell中的排序算法示例代碼

    shell中的排序算法示例代碼

    本文主要介紹了shell中的排序算法示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Linux查找占用的端口,并終止進(jìn)程的方法

    Linux查找占用的端口,并終止進(jìn)程的方法

    下面小編就為大家?guī)?lái)一篇Linux查找占用的端口,并終止進(jìn)程的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • Shell實(shí)現(xiàn)批量操作文件的方法詳解

    Shell實(shí)現(xiàn)批量操作文件的方法詳解

    這篇文章主要為大家總結(jié)了一下Shell實(shí)現(xiàn)批量操作文件的命令,例如:查找某文件夾下指定文件所在的路徑、批量刪除某個(gè)文件夾下的指定文件,感興趣的可以了解一下
    2022-09-09
  • Shell腳本運(yùn)行環(huán)境及基本使用方法

    Shell腳本運(yùn)行環(huán)境及基本使用方法

    這篇文章主要為大家介紹了Shell腳本運(yùn)行環(huán)境及基本使用方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • Linux中以其它用戶身份執(zhí)行腳本或命令的全總結(jié)

    Linux中以其它用戶身份執(zhí)行腳本或命令的全總結(jié)

    在Linux中以其他用戶身份執(zhí)行命令或腳本是一個(gè)常見(jiàn)的需求,最近工作中碰到了這個(gè)需求,在這里簡(jiǎn)單總結(jié)一下,對(duì)linux用戶身份執(zhí)行腳本或命令相關(guān)知識(shí)感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • linux下python3連接mysql數(shù)據(jù)庫(kù)問(wèn)題

    linux下python3連接mysql數(shù)據(jù)庫(kù)問(wèn)題

    這篇文章主要介紹了linux下python3連接mysql數(shù)據(jù)庫(kù)問(wèn)題,需要的朋友可以參考下
    2015-10-10
  • Linux 使用shell腳本處理字符串的實(shí)現(xiàn)

    Linux 使用shell腳本處理字符串的實(shí)現(xiàn)

    這篇文章主要介紹了Linux 使用shell腳本處理字符串的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • bash的特性命令和文件自動(dòng)補(bǔ)全功能實(shí)現(xiàn)

    bash的特性命令和文件自動(dòng)補(bǔ)全功能實(shí)現(xiàn)

    本文全面講解Bash自動(dòng)補(bǔ)全功能,涵蓋命令、文件、參數(shù)補(bǔ)全類型及實(shí)用技巧,指導(dǎo)如何通過(guò)bash-completion擴(kuò)展實(shí)現(xiàn)高級(jí)補(bǔ)全,演示自定義腳本補(bǔ)全方法,并提供常見(jiàn)問(wèn)題解決方案,幫助提升命令行操作效率,感興趣的朋友一起看看吧
    2025-07-07
  • shell 字符串操作(長(zhǎng)度,查找,替換)詳解

    shell 字符串操作(長(zhǎng)度,查找,替換)詳解

    在做shell批處理程序時(shí)候,經(jīng)常會(huì)涉及到字符串相關(guān)操作。有很多命令語(yǔ)句,如:awk,sed都可以做字符串各種操作。其實(shí)shell內(nèi)置一系列操作符號(hào),可以達(dá)到類似效果,大家知道,使用內(nèi)部操作符會(huì)省略啟動(dòng)外部程序等時(shí)間,因此速度會(huì)非常的快
    2012-09-09
  • 修改Apache配置指定php配置文件php.ini的位置方法

    修改Apache配置指定php配置文件php.ini的位置方法

    下面小編就為大家?guī)?lái)一篇修改Apache配置指定php配置文件php.ini的位置方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02

最新評(píng)論

栾川县| 介休市| 平山县| 德阳市| 金堂县| 武定县| 宁夏| 晋江市| 礼泉县| 青龙| 连山| 津南区| 榆林市| 海南省| 安仁县| 涡阳县| 大余县| 湖南省| 赣榆县| 鄂尔多斯市| 绿春县| 竹北市| 顺平县| 宜宾市| 盱眙县| 蓬安县| 章丘市| 伊金霍洛旗| 于都县| 封丘县| 毕节市| 固阳县| 德化县| 湛江市| 保定市| 襄樊市| 白朗县| 梨树县| 武平县| 平昌县| 丰都县|