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시간의 청소 간격이 사실상 하루에 한 번으로 제한된다는 의미라고 생각합니다.

타이머 간격을 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

관련 정보