私のすべての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
答え1
デバイスのトリガーが何であるかを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
構成に応じてディレクトリをクリーンアップします。詳細については、関連マニュアルページを参照してください。
答え2
systemd-tmpfiles-clean.service
によって開始されましたsystemd-tmpfiles-clean.timer
。確認タイマーを使用できますsystemctl list-timers
。
少なくともUbuntu 16.04では、systemd-tmpfiles-clean.timer
定義は次のようになります。
# Use `systemctl cat systemd-tmpfiles-clean.timer` to get your corresponding file
#
# /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
したがって、タイマーはsystemd-tmpfiles-clean.service
開始後15分ごとに開始され、その後は24時間ごとに開始されます。
詳細については、およびをsystemd.timer(5)
参照してください。systemd.service(5)
systemd.unit(5)
答え3
ここにあるほとんどの説明の問題は、ファイルだけでなく、フォルダやフォルダ内のすべてのサブフォルダ(ファイルを含む)を削除するために使用する方法を扱っていないことです。
例/home/user/.cache/
:ツールにすべてのフォルダなどを削除するように指示する方法/.cache/folder1/subfolder1
はfolder2/subfolder1
?
コマンドを実行するとフォルダが空でないというエラーが発生します/.cache/*
。たとえば、次のようになります。
# Delete User Space Temp Files
r /home/user/.cache/*
実行中:
# env SYSTEMD_LOG_LEVEL=debug systemd-tmpfiles --remove
エラーが表示され、実際にはトップレベルフォルダのファイルを除いて何も削除されません。