systemd-tmpfiles-cleanタイマーを編集するには?

systemd-tmpfiles-cleanタイマーを編集するには?

Apache PrivateTmpファイルのクリーンアップ間隔をデフォルトの30日から6時間に変更しようとしています。/etc/tmpfiles.d/tmp.conf編集するのではなく、オーバーライドファイルを設定する必要がある時間間隔を編集するために読んだので、/usr/lib/tmpfiles.d/tmp.conf次の行を使用してファイルを作成しました。

# override the default cleanup intervals
v /tmp 1777 root root 6h
v /var/tmp 1777 root root 6h

これで実行すると、systemd-tmpfiles --clean予想されるファイルが削除されるため、この部分が機能します。

ただし、1dに設定され/usr/lib/systemd/system/systemd-tmpfiles-clean.timerています。OnUnitActiveSecこれは、6時間の清掃間隔が事実上1日1回に制限されるという意味だと思います。

タイマー間隔を6時間以下に変更できますが、このファイルを直接編集する必要がありますか、それとも上書きファイルを作成する必要がありますか/etc/tmpfiles.d

修正する:tmp.confこの質問は重複して表示されますが、リンクされた質問には同じオーバーレイファイルを使用する必要があるかどうかについては表示されません。

解決策:明らかに質問が重複しているため、これを回答として投稿することはできません。しかし、これはタイマー間隔を変更するためにオーバーレイファイルを作成する方法です。

既存のタイマーファイルを適切なオーバーレイディレクトリにコピーします。

sudo cp /usr/lib/systemd/system/systemd-tmpfiles-clean.timer /etc/systemd/system

新しいコピーを編集します(1d値を1hに変更)。

sudo nano /etc/systemd/system/systemd-tmpfiles-clean.timer

新しいタイマーファイルのロード:

sudo systemctl daemon-reload

新しいタイマー間隔がロードされていることを確認してください。

sudo systemctl list-timers

答え1

この回答は少し遅れましたが、他の人が偶然発見した場合に備えてここに残しておきます。

systemdオーバーレイの仕組みの基本的なメカニズムを理解することが重要だと思います。あなたのソリューションは、低レベルの実装の詳細と手動で上書きを作成する方法を理解していることを示しています。これは良いことです。

完璧さとベストプラクティスを広げるために、組み込みsystemctl関数を使用してオーバーライドを生成する必要があります(コメントで@muruが述べたように)。たとえば、

sudo systemctl edit systemd-tmpfiles-clean.timer

たとえば、これはファイルに対する権限を正しく設定し、基本的な抽象化に依存してエラーが発生する可能性を減らします。

デバイスを構成するコンポーネントを表示するには、systemctl cat次のコマンドを使用します。

sudo systemctl cat systemd-tmpfiles-clean.timer 

# /usr/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

# /etc/systemd/system/systemd-tmpfiles-clean.timer.d/override.conf
[Timer]
# reset existing triggers
OnBootSec=
OnUnitActiveSec=
# add new triggers
OnBootSec=15min
OnUnitActiveSec=60min

関連情報