1. 程式人生 > 實用技巧 >雲伺服器部署LAMP

雲伺服器部署LAMP

https://www.cnblogs.com/yychuyu/p/13804696.html

tmpwatch命令清除舊檔案

我們知道系統裡面常常會有一些忘記刪除的長時間不用而且確實沒有用處的檔案,如果不去處理,這些無用的檔案會越來越多,浪費許多系統資源。在不知道檔名的情況下,很難去檢查某一目錄下到底是哪些檔案長時間沒有被訪問,同時刪除這些檔案。我們今天就介紹一款非常實用的工具來完成這一工作————tmpwatch

tmpwatch 是什麼

tmpwatch 能夠迴圈地刪除指定目錄下指定時間內沒有被訪問的檔案,這一命令常常用於清理臨時檔案目錄,比如/tmp或者/var/tmp這類目錄。

它只清除指定目錄下的空目錄、普通檔案和符號連結檔案,也不會影響其他目錄,而且會避開那些屬於root使用者的系統相關關鍵檔案的。

預設設定下,tmpwatch命令依據檔案的atime(access time)而非mtime(modify time)來刪除檔案。如果你想改變它的刪除依據,可以在使用這個命令時加上你想修改的引數。

注意:千萬不要在根目錄底下執行tmpwatch或者tmpreaper命令,因為系統可沒有任何機制阻止你在根目錄下執行此命令。

怎樣在 Linux 上安裝 tmpwatch

各種 Linux 發行版本的安裝命令都有些略微差別,具體的安裝方法見下文。

如果你的 Linux 發行版本是 REHL/CentOS 6 的話,可以使用yum命令來安裝 tmpwatch,示例如下:

$ sudo yum install -y tmpwatch

如果你使用的 Linux 發行版本是 Debian 或者 Ubuntu ,則需要使用apt或者apt-get命令來安裝 Tmpreaper,示例如下:

$ sudo apt-get install tmpreaper

如果你使用的是 openSUSE,則應使用zypper命令安裝 tmpwatch:

$ sudo zypper install -y tmpwatch

如果 Linux 發行版本是 Fedora,則應使用dnf命令安裝 tmpwatch:

$ sudo dnf install -y tmpwatch

說明:在以 Debian 為基礎的 Linux 系統,是用tmpreaper

命令代替tmpwatch的,若你使用的系統是以 Debian 為基礎的Linux 版本,則將下文的示例中的tmpwatch換為tmpreaper即可。

tmpwatch命令的關鍵選項和引數

  • atime(File Last Access Time):檔案最後一次被訪問的時間;
  • mtime(File Last Modify Time):檔案內容最後一次被修改的時間;
  • ctime(File Last Change Time):檔案元資料最後一次被修改的時間,即檔案相關屬性被修改的時間,多數情況下 mtime 和 ctime 值相同,但是諸如檔案所有者、許可權、所屬組這類不涉及內容的屬性被修改時則只會影響 ctime;
  • dirmtime(Directory Last modification time):目錄最後一次被修改的時間。

這些時間引數用來設定刪除檔案的條件閾值:

  • d:單位為天;
  • h:單位為小時;
  • m:單位為分鐘;
  • s:單位為秒。

tmpwatch命令刪除一段時間內沒有被訪問的檔案

如前所述,tmpwatch命令的預設選項是atime,而預設的單位引數則是h,所以如果你確實要按以小時為單位計算的訪問時間來刪除檔案,那麼你不用加任何特殊的選項或則引數字尾,可以直接是用這個命令。如下例所示,即為刪除/tmp目錄下過去5小時內沒有被訪問的檔案:

# tmpwatch 5 /tmp

下面這個示例是刪除/home/daygeek/Downloads目錄下過去十小時內沒有修改過內容的檔案,注意,如果要按mtime來刪除檔案,需要在命令中加上-m的選項:

# tmpwatch -m 10 /home/daygeek/Downloads

刪除以其他單位計算的某段時間內沒有被訪問的檔案

如果你要以天為單位,則需要加上d的字尾,如下為刪除30天內沒有被訪問的檔案:

# tmpwatch 30d /home/daygeek/Downloads

刪除一段時間內未被使用的所有檔案

如果你想不僅僅刪除普通檔案、符號連結檔案、空目錄檔案,而是想刪除指定目錄下某段時間內沒有被訪問的所有檔案,則需要加上選項-a,如下為刪除指定目錄下12小時未被修改內容的所有檔案:

# tmpwatch -am 12 /tmp

將某些目錄排除在刪除操作外

如下命令可以讓那些十小時內沒有被修改過內容的目錄不被刪除:

# tmpwatch -am 10 --nodirs /home/daygeek/Downloads

將特定路徑排除在刪除操作外

下面的命令刪除/home/daygeek/Downloads目錄下所有十小時內沒有修改內容的檔案,但是/home/daygeek/Downloads/Movies路徑下卻不受影響,即該路徑下十小時內沒修改的檔案也不會被刪除:

# tmpwatch -am 10 --exclude=/home/daygeek/Downloads/Movies /home/daygeek/Downloads

將特定格式的檔案排除在刪除操作外

下面所示的命令為刪除指定檔案下的所有10小時內未被改動的檔案,除了pdf格式的檔案:

# tmpwatch -am 10 --exclude-pattern='*.pdf' /home/daygeek/Downloads

預演tmpwatch的效果

下面這條命令即是對tmpwatch的功能效果進行預演:

# tmpwatch -t 5h /home/daygeek/Downloads

tmpwatch設定一個定時任務週期性地執行刪除操作

要完成這個任務,會在/etc/cron.daily/tmpreaper目錄下留下一個cronjob檔案,這個檔案是按照/etc/timereaper.conf的設定工作的,你可以按自己的需求設定它。

如下所示的設定,能在每天上午10點時刪除指定目錄下,十五天沒被訪問的檔案:

# crontab -e

0 10 * * * /usr/sbin/tmpwatch 15d /home/daygeek/Downloads

關於tmpwatch命令的介紹就到這裡了,希望本篇文章對各位讀者能有幫助,關於這個命令,你如果還有什麼疑問或者其他想法,歡迎留言討論