欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

一、檢查要求

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

(1)磁盤使用率 > 90%

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

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

二、解決辦法

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

腳本代碼如下:

#!/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)鍵代碼說(shuō)明:

df -BG :命令用于報(bào)告文件系統(tǒng)的磁盤空間使用情況,-BG 選項(xiàng)表示以 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ù)檢查要求,判斷磁盤空間占用是否存在占用過(guò)多的情況

執(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" 的縮寫,這個(gè)命令用于估算文件或目錄在磁盤上所占用的空間。
-s: 這個(gè)選項(xiàng)告訴 du 命令僅顯示總計(jì)大小,而不列出每個(gè)子目錄或文件的大小。
-h: 這個(gè)選項(xiàng)讓 du 以易讀的格式顯示大?。ɡ?,自動(dòng)選擇 KB、MB、GB 等單位)。
-r: 這個(gè)選項(xiàng)讓 sort 命令以降序排列結(jié)果(默認(rèn)是升序)。

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

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

如果你刪除了一個(gè)仍被進(jìn)程使用的文件,你可以通過(guò)重啟進(jìn)程或者重啟系統(tǒng)來(lái)確保所有的文件描述符都被關(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 命令會(huì)以字符串方式進(jìn)行排序,但是 -n 選項(xiàng)會(huì)讓 sort 命令以數(shù)值方式進(jìn)行排序。
-r:以逆序方式進(jìn)行排序。默認(rèn)情況下,sort 命令會(huì)以升序方式進(jìn)行排序,但是 -r 選項(xiàng)會(huì)讓 sort 命令以降序方式進(jìn)行排序。
-k 7,7:指定排序的字段。默認(rèn)情況下,sort 命令會(huì)以整行作為排序的依據(jù),但是 -k 選項(xiàng)可以讓 sort 命令只以指定的字段作為排序的依據(jù)。在這里,-k 7,7 表示只以第7個(gè)字段作為排序的依據(jù)。

五、遇到問(wèn)題

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

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

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

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

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

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

六、補(bǔ)充說(shuō)明

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

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

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

   舉例:du -sh /home

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

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

   舉例:df -h

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

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

到此這篇關(guān)于Linux服務(wù)器磁盤空間占用情況分析與清理指南的文章就介紹到這了,更多相關(guān)Linux服務(wù)器磁盤空間占用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(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)管理中,日志文件的管理是一個(gè)重要而復(fù)雜的任務(wù),日志文件不僅記錄了系統(tǒng)運(yùn)行狀態(tài),還可以幫助我們排查問(wèn)題、分析性能、進(jìn)行審計(jì)等,文將詳細(xì)介紹在 Linux 系統(tǒng)中如何管理和清理日志文件,包括按時(shí)間批量刪除日志、保留日志文件以及其他有效的日志管理策略
    2024-10-10
  • linux如何實(shí)現(xiàn)一鍵部署nfs過(guò)程圖解

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

    這篇文章主要介紹了linux如何實(shí)現(xiàn)一鍵部署nfs過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    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天然支持集群,集群是保證可靠性的一種方式,同時(shí)可以通過(guò)水平擴(kuò)展以達(dá)到增加消息吞吐量能力的目的,需要的朋友可以參考下
    2023-05-05
  • Linux deb包解壓、修改等操作方法代碼示例

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

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

    Linux下動(dòng)態(tài)鏈接庫(kù)加載路徑及搜索路徑問(wèn)題

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

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

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

    Linux gcc命令的具體使用

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

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

    下面小編就為大家?guī)?lái)一篇配置iptables,把80端口轉(zhuǎn)到8080的簡(jiǎn)單方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,祝大家游戲愉快哦
    2016-12-12

最新評(píng)論