關於 Linux 的 /tmp 暫存目錄,必需知道的特性
警告:放在 Linux 的 /tmp 目錄下的檔案與目錄,預設是會被自動清理的。
若是不知道或沒注意到這個特性而把重要檔案暫時放在 /tmp 目錄下,可能會發生慘案的。
在 RHEL\CentOS\Fedora 作業系统家族中,是由 tmpwatch 程式來處理的,安裝的檔案參考下列指令的查詢結果:
1 2 3 4 5 6 7 8 9 10 11 | [root@bestlong.idv.tw ~]# rpm -ql tmpwatch /etc/cron.daily/tmpwatch /usr/bin/tmpwatch /usr/sbin/tmpwatch /usr/share/doc/tmpwatch-2.9.17 /usr/share/doc/tmpwatch-2.9.17/COPYING /usr/share/doc/tmpwatch-2.9.17/ChangeLog /usr/share/doc/tmpwatch-2.9.17/NEWS /usr/share/doc/tmpwatch-2.9.17/README /usr/share/man/man8/tmpwatch.8.gz [root@bestlong.idv.tw ~]# |
因為設定了 /etc/cron.daily/tmpwatch 所以會由 cron 服務每日定時執行一次,看一下程式碼內容:
1 2 3 4 5 6 7 8 9 10 11 12 13 | [root@bestlong.idv.tw ~]# cat /etc/cron.daily/tmpwatch #! /bin/sh flags=-umc /usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \ -x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \ -X '/tmp/hsperfdata_*' 10d /tmp /usr/sbin/tmpwatch "$flags" 30d /var/tmp for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do if [ -d "$d" ]; then /usr/sbin/tmpwatch "$flags" -f 30d "$d" fi done [root@bestlong.idv.tw ~]# |
可以看到指令中有 10d /tmp 的部份,簡單的解釋就是超過 10 天沒有存取的就會被清理。想進一步了解請服用 man tmpwatch 可以增進知識。
身為系統管理者,如果不喜歡或不需要系統自動清理的功能,可以將 /etc/cron.daily/tmpwatch 內容清空,讓程式變成空包彈,也可以直接刪除或更直接將 tmpwatch 整個移除。