/tmp
디렉토리 는 어떻게 정리됩니까? 자동입니까? 그렇다면 얼마나 자주 정리합니까?
/tmp
디렉토리 는 어떻게 정리됩니까? 자동입니까? 그렇다면 얼마나 자주 정리합니까?
답변:
노트! 이 답변은 적어도 우분투 14.04 이후로 구식입니다. 현재 상황에 대한 다른 답변을보고 그들이 올바른 것으로 판명되면 격렬하게 찬성하십시오. 또한 의견을 게시하여 현재 정답에 대한 링크를 여기에 넣을 수 있습니다.
14.04의 경우 https://askubuntu.com/a/759048/1366을 참조 하십시오.
16.10의 경우 https://askubuntu.com/a/857154/453746을 참조 하십시오.
2011 년의 오래된 답변 :
정리 /tmp
는 upstart 스크립트에 의해 수행됩니다 /etc/init/mounted-tmp.conf
. 스크립트는 /tmp
마운트 될 때마다 upstart로 실행됩니다 . 실제로 그것은 모든 부팅에서 의미합니다.
스크립트는 대략 다음을 수행합니다. 파일 /tmp
이 $TMPTIME
며칠 이 지난 파일 은 삭제됩니다.
기본값 인 $TMPTIME
0은 모든 파일과 디렉토리 /tmp
가 삭제됨 을 의미합니다 . $TMPTIME
에 정의 된 환경 변수입니다 /etc/default/rcS
.
기본적으로 TMPTIME
0 이므로 디렉토리는 부팅 할 때마다 기본적으로 지워집니다 .
다음 파일에서 시간을 변경할 수 있습니다.
/etc/default/rcS
TMPTIME
tmp dir 영혼이 얼마나 자주 지워지는지를 말합니다.
tmpreaper
에는 기회를 주어야 합니다.
tmpwatch
적절한 도구 여야합니다.
그동안 /tmp
폴더에 파일을 장기 저장하는 장소가 아니다, 때때로 당신은보다 조금 더 일을 유지하려면 재부팅 다음에 우분투 시스템의 기본이다. /tmp
테스트 하는 동안 무언가를 다운로드 하고 변경 후 재부팅 한 다음 원래 데이터를 다시 잃어 버렸습니다. /tmp
파일을 조금 더 길게 유지하려면 변경할 수 있습니다 .
/tmp
정리 빈도 변경
/tmp
재부트시 시스템을 지우도록하는 기본 설정 은 /etc/default/rcS
파일에 유지 됩니다. 우리가 볼 가치는 TMPTIME
입니다.
TMPTIME=0
파일의 수명에도 불구하고 재부팅시 파일 삭제 의 현재 값은 다음과 같습니다 . 이 값을 다른 (양수) 숫자로 변경하면 파일이 생존 할 수있는 일수가 변경됩니다 /tmp
.
TMPTIME=7
이 설정을 사용하면 파일 /tmp
이 일주일이 될 때까지 머무른 다음 다음에 다시 부팅 할 때 파일을 삭제할 수 있습니다. 음수 ( TMPTIME=-1
)는 시스템에서 아무것도 삭제하지 않도록 지시합니다 /tmp
. 이것은 아마도 원하는 것이 아니지만 사용할 수 있습니다.
/etc/init/mounted-temp.conf
하는 선 start on mounted MOUNTPOINT=/tmp
이 있습니다.
/var/tmp
대신 파일을 넣으십시오 /tmp
.
우분투 16.10에서 이것을 확인하고 있습니다. / etc / default / rcS를 편집해도 더 이상 효과가 없으며 tmp의 파일은 파일에 넣은 내용에 관계없이 재부팅으로 지워집니다. 다른 사람들이 언급했듯이 tmpreaper는 더 이상 사용되지 않습니다.
정답은 Ubuntu 16.10에 새로운 설정이 있다는 것입니다. 매뉴얼 페이지 "tmpfiles.d"에 문서화 된 /etc/tmpfiles.d 폴더가 있습니다. 해당 폴더에 / tmp를 지 울지 여부를 제어하는 구성 파일을 배치해야합니다. 이것은 20 일이 지난 경우가 아니라면 / tmp에서 파일을 지울 때 재부팅을 중지하기 위해 수행하는 작업입니다.
#/etc/tmpfiles.d/tmp.conf
d /tmp 1777 root root 20d
파일을 삭제하지 않으려면 "20d"를 "-"로 바꾸십시오. 맨 페이지는 세부 사항으로 거의 뚫리지 않습니다.
새로운 설정의 장점은 시스템이 재부팅되지 않아도 파일 클리너가 계속 실행될 수 있다는 것입니다 (항상 서버에있는 경우). 그것은 큰 장점입니다.
man tmpfiles.d
d /tmp/ - - - 20d
systemctl start systemd-tmpfiles-clean
우분투 14.04에서이은에 의해 이루어집니다 tmpreaper
크론 매일 호출 (에서있는 /etc/cron.daily
). 프로그램을 통해 설정 가능 /etc/default/rcS
하고 /etc/tmpreaper.conf
.
재부팅 할 때마다 정리됩니다.
tmpreaper
.
A의 systemd
우분투 (15.10 및 이상),이는 사용 systemd에 의해 수행되는 systemd-tmpfiles-clean
서비스와 타이머를 :
$ systemctl cat systemd-tmpfiles-clean.service
# /lib/systemd/system/systemd-tmpfiles-clean.service
# 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=Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
DefaultDependencies=no
Conflicts=shutdown.target
After=local-fs.target time-sync.target
Before=shutdown.target
[Service]
Type=oneshot
ExecStart=/bin/systemd-tmpfiles --clean
IOSchedulingClass=idle
과
$ systemctl cat systemd-tmpfiles-clean.timer
# /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
종료시, 그렇지 않으면 하루에 한 번 실행됩니다. 정리 한 파일 /etc/tmpfiles.d
은 다른 답변 에서 언급 한대로 확장 할 수 있습니다 .
을 systemctl edit systemd-tmpfiles-clean.timer
사용하고 다양한 시스템 Timer
구성 옵션을 사용 하여 타이머 동작 자체를 변경할 수 있습니다 (참조 man 5 systemd.timer
).
/tmp
여전히 정리되지 않은 것입니다. 정리해야합니다. 수동 시작조차도 sudo systemctl start systemd-tmpfiles-clean
트릭을 수행하지 않습니다. 어떤 아이디어가 있습니까?
Ubuntu를 실행하는 서버 중 하나에는 / tmp에서 파일을 제거하는 스크립트가 있으며 야간에 실행됩니다.
스크립트는 다음과 같습니다
#!/bin/sh
# Clean file and dirs more than 3 days old in /tmp nightly
/usr/bin/find /tmp -type f -atime +2 -mtime +2 |xargs /bin/rm -f &&
/usr/bin/find /tmp -type d -mtime +2 -exec /bin/rm -rf '{}' \; &&
/usr/bin/find /tmp -type l -ctime +2 |xargs /bin/rm -f &&
/usr/bin/find -L /tmp -mtime +2 -print -exec rm -f {} \;
위의 내용을 파일 chmod 775 파일에 저장하고 cron 항목을 만들어 실행하십시오. 이것은 웹 서버이므로 명백한 이유로 재부팅하지 않습니다.
ln -s /usr /tmp/kaboom
도 나 ln -s /* /tmp/
...
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
/ etc / fstab에 넣었다 .