Linux
Linux + /tmp 下的文件和文件夾清理
在我所有的 Red Hat Linux 機器版本 7.2 上,我們看到 systemd-tmpfiles-clean.service 處於非活動狀態:
systemctl status systemd-tmpfiles-clean.service ● systemd-tmpfiles-clean.service - Cleanup of Temporary Directories Loaded: loaded (/usr/lib/systemd/system/systemd-tmpfiles-clean.service; static; vendor preset: disabled) Active: inactive (dead) since Wed 2018-12-19 14:47:14 UTC; 12min ago Docs: man:tmpfiles.d(5) man:systemd-tmpfiles(8) Process: 34231 ExecStart=/usr/bin/systemd-tmpfiles --clean (code=exited, status=0/SUCCESS) Main PID: 34231 (code=exited, status=0/SUCCESS) Dec 19 14:47:14 master02.uridns.com systemd[1]: Starting Cleanup of Temporary Directories... Dec 19 14:47:14 master02.uridns.com systemd[1]: Started Cleanup of Temporary Directories.
奇怪的是,我們看到了 下的文件和文件夾
/tmp
,而且似乎每隔一段時間就會執行一次清理。我在 crontab 或 cronjob 上進行了搜尋,但沒有找到其他清理工作。
我在這裡錯過了什麼嗎?
是否有可能儘管服務處於非活動狀態,但每隔幾週就會執行一次清理?
systemctl enable systemd-tmpfiles-clean.service The unit files have no [Install] section. They are not meant to be enabled using systemctl. Possible reasons for having this kind of units are: 1) A unit may be statically enabled by being symlinked from another unit's .wants/ or .requires/ directory. 2) A unit's purpose may be to act as a helper for some other unit which has a requirement dependency on it. 3) A unit may be started when needed via activation (socket, path, timer, D-Bus, udev, scripted systemctl call, ...).
我們還看到了一些非常舊的文件夾,如
ls -ltr total 137452 drwxr-xr-x 3 root root 33 Jun 13 2017 Tools drwx--x--x 3 root root 16 Oct 12 09:33 systemd-private-74982d8a24254a1d8b8ec3b5c0d80a9b-httpd.service-QZqGLA drwx--x--x 3 root root 16 Oct 12 10:02 systemd-private-74982d8a24254a1d8b8ec3b5c0d80a9b-rtkit-daemon.service-BTcGY1 drwx--x--x 3 root root 16 Oct 12 10:02 systemd-private-74982d8a24254a1d8b8ec3b5c0d80a9b-vmtoolsd.service-mQ1SXc drwxr-xr-x 2 ambari ambari 18 Oct 12 12:02 hsperfdata_ambari drwx--x--x 3 root root 16 Oct 12 12:17 systemd-private-74982d8a24254a1d8b8ec3b5c0d80a9b-cups.service-PnKaq8 drwx--x--x 3 root root 16 Oct 12 12:17 systemd-private-74982d8a24254a1d8b8ec3b5c0d80a9b-colord.service-DNn470 -rwxr-xr-x 1 root root 83044 Nov 18 17:27 Spark_Thrift.log drwxr-xr-x 2 zookeeper hadoop 18 Nov 18 17:28 hsperfdata_zookeeper -rwxr-xr-x 1 root root 379 Nov 18 17:37 requests.txt -rwxr-xr-x 1 root root 137348 Nov 22 14:50 pp -rwxr-xr-x 1 root root 344 Nov 26 15:24 yy prwx--x--x 1 root root 0 Nov 29 21:26 hogsuspend -rwxr-xr-x 1 root root 1032 Dec 3 10:55 aa
從我的機器:
more /lib/systemd/system/systemd-tmpfiles-clean.timer # This file is part of systemd. # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. [Unit] Description=Daily Cleanup of Temporary Directories Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8) [Timer] OnBootSec=15min OnUnitActiveSec=1d
規則是:
more /usr/lib/tmpfiles.d/tmp.conf # This file is part of systemd. # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # See tmpfiles.d(5) for details # Clear tmp directories separately, to make them easier to override v /tmp 1777 root root 10d v /var/tmp 1777 root root 30d # Exclude namespace mountpoints created with PrivateTmp=yes x /tmp/systemd-private-%b-* X /tmp/systemd-private-%b-*/tmp x /var/tmp/systemd-private-%b-* X /var/tmp/systemd-private-%b-*/tmp
你可以問 systemd 一個單元的觸發器是什麼:
systemctl show -p TriggeredBy systemd-tmpfiles-clean
這將表明該服務是由計時器
systemd-tmpfiles-clean
觸發的。systemd-tmpfiles-clean.timer
這被定義為# SPDX-License-Identifier: LGPL-2.1+ # # This file is part of systemd. # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. [Unit] Description=Daily Cleanup of Temporary Directories Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8) [Timer] OnBootSec=15min OnUnitActiveSec=1d
因此,該服務每天執行,並根據
tmpfiles.d
配置清理目錄。有關詳細資訊,請參閱相關的手冊頁。