亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

前言

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

了解所需工具

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

完整代碼

#!/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)改變過優(yōu)先級的進(jìn)程占用CPU百分比
#id 空閑CPU百分比
#wa 等待輸入輸出的CPU時間百分比
#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ù)隊列(就緒狀態(tài)等待的進(jìn)程數(shù))
cpu_task_length=`vmstat -n 1 1 | sed -n 3p | awk '{print $1}'`
echo "CPU任務(wù)隊列長度:"$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)計信息
echo "指定設(shè)備(/dev/sda)的統(tǒng)計信息"
# 每秒向設(shè)備發(fā)起的讀請求次數(shù)
disk_sda_rs=`iostat -kx | grep sda| awk '{print $4}'`
echo "每秒向設(shè)備發(fā)起的讀請求次數(shù):"$disk_sda_rs
 
# 每秒向設(shè)備發(fā)起的寫請求次數(shù)
disk_sda_ws=`iostat -kx | grep sda| awk '{print $5}'`
echo "每秒向設(shè)備發(fā)起的寫請求次數(shù):"$disk_sda_ws
 
# 向設(shè)備發(fā)起的I/O請求隊列長度平均值
disk_sda_avgqu_sz=`iostat -kx | grep sda| awk '{print $9}'`
echo "向設(shè)備發(fā)起的I/O請求隊列長度平均值"$disk_sda_avgqu_sz
 
# 每次向設(shè)備發(fā)起的I/O請求平均時間
disk_sda_await=`iostat -kx | grep sda| awk '{print $10}'`
echo "每次向設(shè)備發(fā)起的I/O請求平均時間:"$disk_sda_await
 
# 向設(shè)備發(fā)起的I/O服務(wù)時間均值
disk_sda_svctm=`iostat -kx | grep sda| awk '{print $11}'`
echo "向設(shè)備發(fā)起的I/O服務(wù)時間均值:"$disk_sda_svctm
 
# 向設(shè)備發(fā)起I/O請求的CPU時間百分占比
disk_sda_util=`iostat -kx | grep sda| awk '{print $12}'`
echo "向設(shè)備發(fā)起I/O請求的CPU時間百分占比:"$disk_sda_util

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

1. 獲取 IP 地址

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

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

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

3. 獲取 CPU 使用率

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

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

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

5. 獲取磁盤 I/O 信息

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

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

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

相關(guān)文章

  • Linux 命令之rsync命令詳解

    Linux 命令之rsync命令詳解

    rsync命令是一個遠(yuǎn)程數(shù)據(jù)同步工具,可通過LAN/WAN快速同步多臺主機(jī)間的文件。下面通過本文給大家分享Linux 命令之rsync命令詳解,需要的朋友參考下吧
    2017-08-08
  • linux bash字符串處理大全

    linux bash字符串處理大全

    linux bash字符串處理大全,需要的朋友可以參考下
    2013-02-02
  • Shell腳本對文件中的行、單詞、字符進(jìn)行迭代輸出示例

    Shell腳本對文件中的行、單詞、字符進(jìn)行迭代輸出示例

    這篇文章主要介紹了Shell腳本對文件中的行、單詞、字符進(jìn)行迭代輸出示例,本文講解了迭代文件中的每一行、迭代一行中的每一個單詞、迭代一個單詞中的每一個字符等內(nèi)容,需要的朋友可以參考下
    2014-11-11
  • linux sudo密碼輸入時顯示星號的操作方法

    linux sudo密碼輸入時顯示星號的操作方法

    在輸入linux sudo密碼的時候終端是不顯示任何東西的,我們不知道我們按下的密碼到底輸入進(jìn)去了沒有,如果可以像在網(wǎng)站上登錄賬號密碼的時候顯示星號多好,下面小編給大家介紹下linux sudo密碼輸入時顯示星號的操作方法
    2018-01-01
  • shell腳本配合zabbix實現(xiàn)tomcat的故障自愈功能

    shell腳本配合zabbix實現(xiàn)tomcat的故障自愈功能

    這篇文章主要介紹了shell腳本配合zabbix實現(xiàn)tomcat的故障自愈,服務(wù)實現(xiàn)自愈的方式有通過shell腳本+定時任務(wù)的方式,藍(lán)鯨Pass故障自愈平臺,shell腳本+zabbix觸發(fā)器動作,本文給大家詳細(xì)介紹,需要的朋友可以參考下
    2022-03-03
  • centos 設(shè)置定時任務(wù)執(zhí)行指定腳本的方法

    centos 設(shè)置定時任務(wù)執(zhí)行指定腳本的方法

    下面小編就為大家?guī)硪黄猚entos 設(shè)置定時任務(wù)執(zhí)行指定腳本的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • Linux 打包壓縮命令詳解

    Linux 打包壓縮命令詳解

    在Linux系統(tǒng)中,有多種命令可以用于打包和壓縮文件,這些命令可以幫助用戶將多個文件或目錄打包成一個文件,并可以選擇不同的壓縮算法來減小文件大小,下面給大家介紹Linux 打包壓縮命令詳解,感興趣的朋友一起看看吧
    2023-09-09
  • Linux tar 命令出現(xiàn) Cowardly refusing to create an empty archive 錯誤解決辦法

    Linux tar 命令出現(xiàn) Cowardly refusing to create an empty archive

    這篇文章主要介紹了Linux tar 命令出現(xiàn) Cowardly refusing to create an empty archive 錯誤解決辦法的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • linux中mysql備份shell腳本代碼

    linux中mysql備份shell腳本代碼

    在linux中如果想定時備份數(shù)據(jù)庫的腳本我們可以很方便簡單的操作,下面我來分享一段mysql定時備份的腳本代碼
    2013-02-02
  • Linux命令提示符顯示格式的配置方法

    Linux命令提示符顯示格式的配置方法

    今天小編就為大家分享一篇Linux命令提示符顯示格式的配置方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06

最新評論