您好,登錄后才能下訂單哦!
unix環境下,經常會遇到一種情況,就是存放日志的文件目錄滿了,需要進行清理。通常來說,日志文件具有一定的時效性,例如一周,超過一周的日志文件就可以進行清理(以應用日志為例,數據庫ARCH日志,以是否備份完成為標準)。 在windows環境下,我們可以用圖形界面,根據時間排序,然后用鼠標框選文件,然后按下delete鍵,多方便。可是在unix字符界面下,我們沒有鼠標,沒有框選,只能使用命令了,下面我們就介紹下如何通過命令簡單快速的實現我們的需求。 首先,我們來假設一個應用場景: 接到文件系統使用率告警,目前主機dbaleading1上的/u01目錄滿了,需要進行清理。 接到這個case后,首先做理論分解,該怎么去思考。 1. 首先,/u01目錄肯定有很多子目錄,必須得先找到是哪些子目錄占用了大部分的空間,如果要清理空間,肯定是清理占用空間多的。 2. 找到占用空間大的目錄后,需要知道該目錄中存放的是什么文件。 3. 根據文件,確定清理策略后(如保留7天,后綴為.log的應用過期日志文件),要根據策略,將需要清理的數據,篩選出來; 4. 對篩選出來的文件,進行清理。 理論分析清楚了以后,我們按照步驟,一步步來實現,過程很簡單,重要的是,我們在日常運維中,特別是重要系統中做操作的時候,一定要知道自己做的是什么,會有什么樣的影響,畢竟,我們是系統的最后一道防線。 1. 在windows下,我們可以點文件夾,右鍵,查看屬性,就可以知道文件夾大小,在unix字符界面下,我們采用sort排序的方式,命令如下: [root@dbaleading1 ~]# cd /u01 [root@dbaleading1 u01]# du -sk * | sort -n 有關具體命令的作用,語法等等,可以用 man工具查看,如unix下輸入 man du,就會出現du的命令手冊。 2. 假設發現/u01/log目錄占用空間比較大,則進入/u01/log目錄,使用 ls -ltr命令查看該目錄內的具體文件信息,如果仍然存在多個文件夾,則重復第一步。目前的場景,我們假設該目錄中,存放了大量的應用日志文件,以.log結尾。 3. 發現大量應用日志占用空間,根據策略,我們需要把7天前的日志文件給刪除了,這一步,我們使用find命令來實現,如下: [root@dbaleading1 ~]# find . -mtime +7 |xargs ls -lrt 在這個命令中,主命令是 find . -mtime +7 ,其意義是在當前目錄中,尋找創建時間大于7天前的文件,管道命令|xargs ls -lrt的作用,是把這些文件按照時間順序排列好,然后顯示出來。 4. 如果第3步中的文件經過確認,可以刪除的,那么,把管道命令中的ls命令替換成刪除命令就可以了,如下: [root@dbaleading1 ~]# find . -mtime +7 |xargs rm -fr 5. 完成清理后,我們再通過命令 df -m ,進行復查,確認無誤后,這個處理流程就全部完成了。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。