tmpfiles.d를 검색한 후 파일/디렉터리 삭제 옵션이 제한된 것 같습니다. shred와 같은 명령을 사용하여 임시 디렉터리를 완전히 삭제하고 싶습니다. tmpfiles.d 구성에서 스크립트를 트리거하는 방법이나 tmp 정리 중에 shred를 사용하는 숨겨진 메커니즘이 있습니까?
답변1
예! systemd-tmpfiles --remove
또는 로 구성된 디렉터리의 모든 내용과 D
또는 로 R
구성된 모든 파일 또는 디렉터리를 삭제하기 위해 호출됩니다 .r
R
에서 man systemd-tmpfiles
:
--remove
If this option is passed, the contents of directories marked with D or R,
and files or directories themselves marked with r or R are removed.
약간 덜 침해적이기 위해 접두사로 시작하는 디렉터리로만 필터링할 수 있습니다.
--prefix=path
Only apply rules with paths that start with the specified prefix. This option
can be specified multiple times.
--exclude-prefix=path
Ignore rules with paths that start with the specified prefix. This option
can be specified multiple times.
아니면 더 자주 청소할 수도 있습니다. --clean
만료된(사용 기간이 지난) 임시 파일만 삭제됩니다. 다음 예에서 실행하면 이전의 모든 항목이 systemd-tmpfiles --clean
삭제됩니다 ./run/screens
10d
# /usr/lib/tmpfiles.d/screen.conf
# Type Path Mode User Group Age Argument
d /run/screens 1777 root screen 10d -
이 사항은 이미 다음을 통해 매일 확인되고 있습니다 systemd-tmpfiles-clean.timer
.
$ systemctl cat systemd-tmpfiles-clean.{timer,service}
[Unit]
Description=Daily Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
[Timer]
OnBootSec=15min
OnUnitActiveSec=1d
# /lib/systemd/system/systemd-tmpfiles-clean.service
[Unit]
Description=Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
DefaultDependencies=no
Conflicts=shutdown.target
After=local-fs.target time-set.target
Before=shutdown.target
[Service]
Type=oneshot
ExecStart=systemd-tmpfiles --clean
SuccessExitStatus=DATAERR
IOSchedulingClass=idle
그것이 충분히 급진적이지 않다면 다음을 수행할 수 있습니다.
d /my/path 0755 user group 1h -
OnUnitActiveSec=1h
그리고 타이머 삽입을 만듭니다.
또는 서비스를 실행 중인 경우 에서 샌드박스 옵션을 확인하세요 man systemd.exec
. PrivateTmp=
, RemoveIPC=
및 같은 항목 DynamicUser=
은 더 이상 필요하지 않으면 삭제할 수 있습니다.