unix 檔案清理一例

2021-06-09 15:35:13 字數 1452 閱讀 7772

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 ,進行複查,確認無誤後,這個處理流程就全部完成了。

檔案加密技術一例

檔案加密技術一例 給檔案加密的技術很多,其中又分為不同等級,以適合不同場合的需要.這裡給出最簡單的檔案加密技術,即採用檔案逐字節與密碼異或方式對 檔案進行加密,當解密時,只需再執行一遍加密程式即可.下面是乙個例項程式,能對任意乙個檔案進行加密,密碼要求使用者輸入,限8位以內 當然你可以再更改 程式有...

《UNIX網路程式設計卷1》第一例及問題

unix網路程式設計卷1 一上來就給了乙個例子,新手不容易看懂,估計作者也沒有打算讓人看懂,作了詳盡的解釋。新手都想執行這個程式,我也是。首先,給的程式都是在unix下執行的。這裡有全書 我的環境是vmware workstation 12.5.0 ubuntu 16.04 lts,已經裝了gcc。...

演算法優化一例

本文將以排序演算法中的插入排序為例,介紹優化演算法,編制高效程式的方法。人們通常用於排序手中橋牌的方法是一次考慮一張牌,將它插入到已經排序過的牌的適當位置中 時刻讓它們保持有序 在計算機實現中,我們需要將較大的元素移到右邊,為插入的元素準備空間,然後再在空位置上插入該元素。該演算法的通常的乙個實現如...