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

Linux服務(wù)器磁盤空間占用情況分析與清理指南(解決方法)

 更新時間:2024年09月27日 08:55:28   作者:曾左  
為防止節(jié)假日期間服務(wù)器磁盤占用過高引起報警,需在節(jié)前檢查并清理磁盤,檢查條件包括使用率超90%、剩余空間不足30G等,通過shell腳本自動判斷并輸出異常信息,腳本及使用方法詳細(xì)介紹,感興趣的朋友一起看看吧

為確保重大節(jié)日期間,團(tuán)隊負(fù)責(zé)的測試環(huán)境服務(wù)器磁盤不會占用過高,導(dǎo)致頻繁報警。我們要求在重大節(jié)假日前對服務(wù)器磁盤占用情況進(jìn)行檢查。如果發(fā)現(xiàn)占用過高,則需人為介入,進(jìn)行相應(yīng)清理。

一、檢查要求

查看各分區(qū)占用情況,如果達(dá)到以下任一條件,則需要人為介入判斷或處理:

(1)磁盤使用率 > 90%

(2)磁盤使用 > 80% 且 剩余空間 < 30G

(3)磁盤使用 > 70% 且 剩余空間 < 50G

二、解決辦法

使用 shell 腳本,統(tǒng)計并判斷磁盤占用情況,如有異常,輸出異常信息。

腳本代碼如下:

#!/bin/bash
RED='\033[0;31m'
NC='\033[0m'
if [[ $1 == "detail" ]]
then
    df -BG
else
    IS_NORMAL=1
    while read line
    do
        if [[ ${line} == Filesystem* ]]; then
            continue
        fi
        filesystem=$(echo ${line} | awk '{print $1}')
        use_rate=$(echo ${line} | awk '{print $5}' | sed 's/%//g')
        avail_space=$(echo ${line} | awk '{print $4}' | sed 's/G//g')
        mounted_on=$(echo ${line} | awk '{print $6}')
        if [[ ${use_rate} -gt 90 ]] || [[ ${use_rate} -gt 80 && ${avail_space} -lt 30 ]] || [[ ${use_rate} -gt 70 && ${avail_space} -lt 50 ]]; then
            echo -e "${RED}WARN: Filesystem ${filesystem} mounted on ${mounted_on} has problem: use rate is ${use_rate}%, available space is ${avail_space}G.${NC}"
            IS_NORMAL=0
        fi
    done < <(df -BG) 
    if [[ ${IS_NORMAL} -eq 1 ]]; then
        echo "INFO: Disk space usage is normal."
    fi
fi

關(guān)鍵代碼說明:

df -BG :命令用于報告文件系統(tǒng)的磁盤空間使用情況,-BG 選項表示以 G 字節(jié)為單位顯示,B的含義為:use SIZE-byte blocks

建議腳本保存路徑:/data/sh/general/disk_usage_check.sh

初始化腳本執(zhí)行命令:mkdir -p /data/sh/general/;touch /data/sh/general/disk_usage_check.sh;chmod +x /data/sh/general/disk_usage_check.sh;vim /data/sh/general/disk_usage_check.sh

三、腳本使用方法

1)根據(jù)檢查要求,判斷磁盤空間占用是否存在占用過多的情況

執(zhí)行腳本:/data/sh/general/disk_usage_check.sh

2)如由需要,可以進(jìn)一步查看各分區(qū)磁盤占用信息

執(zhí)行腳本:/data/sh/general/disk_usage_check.sh detail

使用示例,查看結(jié)果,分兩種情況:

(1)檢查正常

[root@localhost ~]# /data/sh/general/disk_usage_check.sh 
INFO: Disk space usage is normal.

(2)檢查異常,查看需要人為介入判斷及處理

[root@novalocal general]# /data/sh/general/disk_usage_check.sh 
WARN: Filesystem /dev/vdb mounted on /data has problem: use rate is 76%, available space is 47G.
[root@novalocal general]# /data/sh/general/disk_usage_check.sh detail
Filesystem              1G-blocks  Used Available Use% Mounted on
/dev/mapper/centos-root       49G   12G       38G  23% /
devtmpfs                       8G    0G        8G   0% /dev
tmpfs                          8G    1G        8G   1% /dev/shm
tmpfs                          8G    1G        7G  11% /run
tmpfs                          8G    0G        8G   0% /sys/fs/cgroup
/dev/vdb                     197G  142G       47G  76% /data
/dev/vda1                      1G    1G        1G  20% /boot
tmpfs                          2G    0G        2G   0% /run/user/0

處理方法可參考下一章節(jié)

四、占用定位與解決辦法

1. 查看目錄下各文給或文件夾大小,并降序輸出

[root@f2 data]# du -sh * | sort -hr
27G tomcat
5.1G did-generator
4.1G register
2.5G turbine-web
1.4G rbmq-productor
1.1G consul
600M backup
544M test-backup
527M deploy

命令解析:

du: 是 "disk usage" 的縮寫,這個命令用于估算文件或目錄在磁盤上所占用的空間。
-s: 這個選項告訴 du 命令僅顯示總計大小,而不列出每個子目錄或文件的大小。
-h: 這個選項讓 du 以易讀的格式顯示大小(例如,自動選擇 KB、MB、GB 等單位)。
-r: 這個選項讓 sort 命令以降序排列結(jié)果(默認(rèn)是升序)。

2. 為什么刪除被占用的文件,不能釋放空間?

在 Linux 中,當(dāng)你刪除一個文件時,如果該文件仍被某個進(jìn)程所使用(即有一個打開的文件描述符指向這個文件),那么這個文件的磁盤空間并不會被立即釋放。這是因為在 Linux 中,文件的刪除實際上是刪除了文件名和 inode 的關(guān)聯(lián),而不是刪除 inode 本身。只有當(dāng)所有關(guān)聯(lián)到該 inode 的文件描述符都被關(guān)閉后,該 inode 才會被刪除,對應(yīng)的磁盤空間才會被釋放。

如果你刪除了一個仍被進(jìn)程使用的文件,你可以通過重啟進(jìn)程或者重啟系統(tǒng)來確保所有的文件描述符都被關(guān)閉,從而釋放磁盤空間。

可以使用 lsof 命令查看該類文件

(1)查看被刪除但未釋放的文件的命令:lsof | grep '(deleted)'

(2)查看占用空間最大的被刪除但未釋放的文件:lsof | grep '(deleted)' | sort -n -r -k 7,7 | head -n 10,命令解析:

-n:以數(shù)值進(jìn)行排序。默認(rèn)情況下,sort 命令會以字符串方式進(jìn)行排序,但是 -n 選項會讓 sort 命令以數(shù)值方式進(jìn)行排序。
-r:以逆序方式進(jìn)行排序。默認(rèn)情況下,sort 命令會以升序方式進(jìn)行排序,但是 -r 選項會讓 sort 命令以降序方式進(jìn)行排序。
-k 7,7:指定排序的字段。默認(rèn)情況下,sort 命令會以整行作為排序的依據(jù),但是 -k 選項可以讓 sort 命令只以指定的字段作為排序的依據(jù)。在這里,-k 7,7 表示只以第7個字段作為排序的依據(jù)。

五、遇到問題

1. 管道模式執(zhí)行時,無法更新變量值

  IS_NORMAL=1
  df -BG | while read line
  do
    IS_NORMAL=0  
  done
  echo ${IS_NORMAL} 

上述代碼,最后輸出 IS_NORMAL 值始終為 1,無法修改為 0,原因:

在 bash 腳本中,管道符|會創(chuàng)建一個子 shell 來執(zhí)行管道符右側(cè)的命令。在這個例子中,while read line 循環(huán)就在一個子 shell 中執(zhí)行。因此,循環(huán)內(nèi)部對變量 IS_NORMAL 的修改在子 shell 中發(fā)生,不會影響到主 shell 中的變量。

要解決這個問題,可以使用進(jìn)程替代,將 while read line 循環(huán)作為主進(jìn)程來執(zhí)行。修改后代碼如下:

  IS_NORMAL=1
  while read line
  do
    IS_NORMAL=0  
  done < <(df -BG) 
  echo ${IS_NORMAL} 

六、補(bǔ)充說明

1. du 和 df 的區(qū)別

du 和 df 都是 Linux 系統(tǒng)中的命令,用于檢查磁盤空間使用情況,但他們的使用方式和顯示的信息有所不同。

(1) du 命令:du 是 "disk usage" 的縮寫,這個命令的主要作用是估算文件或者目錄在磁盤中占用的空間大小。它會遞歸地對目錄進(jìn)行掃描,然后將每個子目錄的大小都計算出來。

   舉例:du -sh /home

這個命令會顯示 /home 目錄的總大小。-s 參數(shù)表示只顯示總計,-h 參數(shù)表示以易讀的格式顯示大?。ɡ?K,M,G)。

(2)df 命令:df 是 "disk filesystem" 的縮寫,這個命令的主要作用是顯示磁盤的使用情況。它會顯示所有已掛載的文件系統(tǒng)的磁盤空間使用情況,包括總空間、已使用的空間、剩余的空間以及使用的百分比。

   舉例:df -h

這個命令會以易讀的格式顯示所有已掛載的文件系統(tǒng)的磁盤空間使用情況。-h 參數(shù)表示以易讀的格式顯示大?。ɡ?K,M,G)。

總的來說,du 和 df 的主要區(qū)別在于,du 是用來查看文件或目錄的大小,而 df 是用來查看磁盤的使用情況。

到此這篇關(guān)于Linux服務(wù)器磁盤空間占用情況分析與清理指南的文章就介紹到這了,更多相關(guān)Linux服務(wù)器磁盤空間占用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Gentoo 下安裝與配置Nginx+ MySQL + PHP (fastcgi) 環(huán)境步驟分享

    Gentoo 下安裝與配置Nginx+ MySQL + PHP (fastcgi) 環(huán)境步驟分享

    Gentoo 下安裝與配置Nginx+ MySQL + PHP (fastcgi) 環(huán)境步驟,需要的朋友可以參考下
    2013-02-02
  • Linux管理和清理日志文件的有效方法

    Linux管理和清理日志文件的有效方法

    在現(xiàn)代系統(tǒng)管理中,日志文件的管理是一個重要而復(fù)雜的任務(wù),日志文件不僅記錄了系統(tǒng)運(yùn)行狀態(tài),還可以幫助我們排查問題、分析性能、進(jìn)行審計等,文將詳細(xì)介紹在 Linux 系統(tǒng)中如何管理和清理日志文件,包括按時間批量刪除日志、保留日志文件以及其他有效的日志管理策略
    2024-10-10
  • linux如何實現(xiàn)一鍵部署nfs過程圖解

    linux如何實現(xiàn)一鍵部署nfs過程圖解

    這篇文章主要介紹了linux如何實現(xiàn)一鍵部署nfs過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • 總結(jié)Linux 6種日志查看方法

    總結(jié)Linux 6種日志查看方法

    在本篇文章里小編給大家整理的是關(guān)于Linux 6種日志查看方法,有需要的朋友們可以學(xué)習(xí)下。
    2020-02-02
  • 關(guān)于Linux搭建RabbitMQ集群環(huán)境圖文詳解

    關(guān)于Linux搭建RabbitMQ集群環(huán)境圖文詳解

    這篇文章主要介紹了關(guān)于Linux搭建RabbitMQ集群環(huán)境圖文詳解,RabbitMQ天然支持集群,集群是保證可靠性的一種方式,同時可以通過水平擴(kuò)展以達(dá)到增加消息吞吐量能力的目的,需要的朋友可以參考下
    2023-05-05
  • Linux deb包解壓、修改等操作方法代碼示例

    Linux deb包解壓、修改等操作方法代碼示例

    這篇文章主要介紹了Linux deb包解壓、修改等操作方法代碼示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • Linux下動態(tài)鏈接庫加載路徑及搜索路徑問題

    Linux下動態(tài)鏈接庫加載路徑及搜索路徑問題

    這篇文章主要介紹了Linux下動態(tài)鏈接庫加載路徑及搜索路徑問題,需要的朋友可以參考下
    2018-04-04
  • keepalived實現(xiàn)nginx高可用

    keepalived實現(xiàn)nginx高可用

    這篇文章主要為大家詳細(xì)介紹了keepalived實現(xiàn)nginx高可用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Linux gcc命令的具體使用

    Linux gcc命令的具體使用

    這篇文章主要介紹了Linux gcc命令的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 配置iptables,把80端口轉(zhuǎn)到8080的簡單方法

    配置iptables,把80端口轉(zhuǎn)到8080的簡單方法

    下面小編就為大家?guī)硪黄渲胕ptables,把80端口轉(zhuǎn)到8080的簡單方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,祝大家游戲愉快哦
    2016-12-12

最新評論