답변:
질문에 대답하려면 :
/tmp
자동으로 비워 질 예정 : 예/tmp
정기적으로 수동으로 파일을 삭제해야합니까? 아니오 , 시스템에서 처리합니다.스스로에게 물어볼 수있는 경우 :
/tmp
(등 흔적을 제거 할 필요 공간) 어떤 이유 : 그것은 의존 , 읽어 .파일 시스템 계층 표준 (FHS) 상태 :
/ tmp 디렉토리는 임시 파일이 필요한 프로그램에 사용 가능해야합니다.
프로그램은 / tmp의 파일 또는 디렉토리가 프로그램 호출간에 유지된다고 가정해서는 안됩니다.
/var/tmp/
가 유사한 목적을 하지만, 안 재부팅시 삭제.
그것은됩니다 보장되지 것을 /tmp/
또는 /var/tmp/
정기적으로 정리됩니다. 대부분의 시스템은 때때로 일부 정리를 수행하지만 배포 및 설정에 따라 달라질 수 있습니다. 의 코멘트 를 참조하십시오 mike
.
/ tmp 에서 파일을 삭제해야하는 경우 먼저 파일이 사용 중인지 확인하십시오. 당신은 이것을 쉽게 할 수 있습니다 :
lsof /tmp/file_to_delete
권한이있는 경우 프로세스 이름, PID 및 파일 유형과 같이 해당 파일에 대한 핸들을 보유하고있는 프로세스가 표시됩니다. 실제로 모든 프로세스를 표시하려면 sudo
사용자 root 앞에 추가 하거나 실행하십시오 .
lsof +D /tmp
/tmp
( +D
) 아래 에 현재 열려 있는 모든 파일 과 디렉토리 가 표시됩니다 . 물론 이러한 파일을 삭제해서는 안됩니다.
실제로 열려있는 파일을 삭제할 때 (권한이있는 경우) 파일 시스템 네임 스페이스에서 액세스 할 수 없지만 파일 핸들이 열려있는 프로세스에는 여전히 존재합니다. 해당 핸들을 닫은 후에는 해당 프로세스에 대해 더 이상 파일에 액세스 할 수 없으며, 프로세스가 파일을 더 이상 열지 않으면 결국 삭제됩니다. 프로세스는 파일이 후속 open
호출 간에도 존속한다고 가정해서는 안되지만 프로그래머는 느슨하며 알 수 없습니다. 따라서 일부 프로그램에서 여전히 사용중인 파일을 삭제 하는 것이 영리 하지 않습니다 .
나는 이것이 운영 체제에 달려 있다고 생각합니다. 재부팅시 / tmp가 일반적으로 지워지고 실제로 어떤 파일이 활성화되어 있는지 알지 못하기 때문에 세션 중반에 시스템을 정리하는 것이 안전하지 않을 것이라고 생각합니다.
용감한 경우 특정 연령보다 오래된 파일을 삭제하는 명령을 crontab에 던지려고 할 수 있지만 여전히 사용중인 파일을 삭제하면 문제가 발생할 수 있습니다. 당신은 같은 명령을 시도 할 수 있습니다 (나는 그것을 시도하지 않았습니다)
/ tmp -type f -ctime +10 -exec rm {} + 찾기
이론적으로 10 일보다 오래된 / tmp 아래의 모든 파일을 제거합니다.
-r
그에게
/ tmp 및 / var / tmp 디렉토리는 정상적인 스케줄에 따라 정리됩니다. 배포판에 따라 다를 수 있습니다. CentOS 시스템 (RedHat 복제본)에는 매일 스케줄 에 따라 tmp 디렉토리 클리너 인 tmpwatch 를 실행하도록 예약 된 cron 작업이 있습니다 . / var / tmp의 파일은 / tmp /의 파일보다 조금 더 오래 사용할 수 있습니다. 또한 모든 프로세스가 새로운 프로세스이기 때문에 파일을 열어 두는 것이 아무것도 없다는 것을 알고 재부팅 할 때 / tmp를 제거하는 스크립트를 보았습니다 (그러나 명시 적으로 / var / tmp는 아닙니다).
예, / tmp는 기본 스크립트를 유지 관리합니다. 이 유지 보수 시간이 지나면 여전히 채워질 수 있습니다. 수동으로 정리하도록 선택한 경우 최상의 sysadmin 관행이주의해야합니다. Sysadmin lore는 n00b sysadmins가 간단한 find
스크립트를 실행할 때 삭제 된 필요한 시스템 파일을 가리키는 / tmp의 심볼릭 링크에 대해 설명합니다 .
CentOS에는 주어진 시간 동안 액세스되지 않은 파일을 재귀 적으로 제거 하는 작업이 /etc/cron.daily
호출 tmpwatch
됩니다. 일반적으로 / tmp와 같은 임시 보유 공간에 사용되는 디렉토리를 정리하는 데 사용됩니다.
이것은 /etc/cron.daily/tmpwatch
스크립트입니다
#! / bin / sh flags = -umc / usr / sbin / tmpwatch "$ flags"-x /tmp/.X11-unix -x /tmp/.XIM-unix \ -x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \ -X '/ tmp / hsperfdata_ *'10d / tmp / usr / sbin / tmpwatch "$ flags"30 일 / var / tmp / var / {cache / man, catman} / {cat?, X11R6 / cat?, local / cat?}에서 d의 경우; 해야 할 것 [-d "$ d"] 인 경우; 그때 / usr / sbin / tmpwatch "$ flags"-f 30d "$ d" fi 끝난
/tmp
실행중인 프로세스가 해당 디렉토리에서 파일에 액세스 할 수 있으므로 시스템을 재부팅 할 때만 디렉토리 내용이 삭제됩니다.
에서 컨텐츠를 제거 할 수 있습니다 /tmp/
. 그러나 그렇게하는 문제는 정기적으로 쓰는 서비스가 /tmp/
있고 파일을 삭제하면 다시 시작될 때까지 서비스가 중단되거나 중단 될 수 있다는 것입니다.
FHS는 정의 /tmp
하고, "종종 시스템 재부팅 사이에 유지되지, (또한은 / var / tmp를 참조) 임시 파일"등의 디렉토리를 /var/tmp
"임시 파일이 재부팅 사이에 보존 할"로.
오늘날 /tmp
많은 GNU / Linux 배포판에서 기본적으로 RAM 파일 시스템 (tmpfs)으로되어 있지만 (선택적임) /tmp
사실상 비 영구적입니다.
(Arguibly) 응용 프로그램은 임시 파일을 적절하게 관리해야하며, 여기에는 사용이 끝나면 삭제하는 것이 포함되며 관리자가 파괴적인 삭제를 예약하지 않아도됩니다.
/tmp
처리하거나 종료 할 때 파일 정리 작업을 훨씬 더 잘 수행 할 수 있지만 /tmp
프로그램의 비정상 종료 (충돌) 후에 파일이 남아있는 문제가 여전히 있습니다 .
데비안 (또는 우분투와 같은 파생어)을 실행하고 있다면 / etc / default / rcS 파일을보고 TMPTIME
환경 변수를 조정해야 합니다. 정의에 따르면 / tmp에있는 내용은 다음에 다시 부팅 할 때 여기서 수행 할 작업이 없습니다.
나는 추천한다
TMPTIME
서버 에서 변수 사용배포판은 물론 다르지만 임시 파일은 시스템에서 기본적으로 자동 관리 될 것으로 기대합니다. 크론 작업이나 systemd-tmpfiles-clean 서비스를 사용했을 것입니다. 디스크 공간이 걱정된다면 각 루트 폴더가 차지하는 공간을 살펴 보는 유용한 명령입니다.
du -hs /* | sort -h
시스템이 임시 파일을 관리하기 위해 systemd 서비스를 사용하고 있는지 확인하려면 다음을 시도하십시오.
systemctl status systemd-tmpfiles-clean
맨 아래에는 서비스가 마지막으로 실행 된 시간을 알려주는 다음과 같은 내용이 표시됩니다.
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-07-18 15:43:36 IST; 18h ago
Docs: man:tmpfiles.d(5)
man:systemd-tmpfiles(8)
Process: 30495 ExecStart=/usr/bin/systemd-tmpfiles --clean (code=exited, status=0/SUCCESS)
Main PID: 30495 (code=exited, status=0/SUCCESS)
Jul 18 15:43:36 host-name systemd[1]: Starting Cleanup of Temporary Directories...
Jul 18 15:43:36 host-name systemd[1]: Started Cleanup of Temporary Directories.
이 서비스는 정리가 완료되는 즉시 종료됩니다. 타이머 서비스는 정기적으로 트리거해야합니다. 당신은 그것을 확인할 수 있습니다 :
systemctl status systemd-tmpfiles-clean.timer
그리고 다음과 같은 것을 기대해야합니다.
systemd-tmpfiles-clean.timer - Daily Cleanup of Temporary Directories
Loaded: loaded (/usr/lib/systemd/system/systemd-tmpfiles-clean.timer; static; vendor preset: disabled)
Active: active (waiting) since Tue 2018-07-03 10:56:59 IST; 2 weeks 1 days ago
Docs: man:tmpfiles.d(5)
man:systemd-tmpfiles(8)
Jul 03 10:56:59 host-name systemd[1]: Started Daily Cleanup of Temporary Directories.
Jul 03 10:56:59 host-name systemd[1]: Starting Daily Cleanup of Temporary Directories.
파일 정리를 담당하는 실제 서비스를 다시 살펴보면 모든 파일이 실행되고 있음을 알 수 있습니다.
/usr/bin/systemd-tmpfiles --clean
따라서 해당 명령을 직접 실행하거나 올바르게 수행하려면 다음을 수행하십시오.
systemctl start systemd-tmpfiles-clean
시스템에 적절한 명령을 실행합니다. 그러나이 명령은 "지금 모든 임시 파일 삭제"명령이 아닙니다. 실제로 삭제되는 항목과시기를 제어하여 응용 프로그램이 임시 파일을 개별적으로 구성 할 수 있도록하는 여러 구성 파일이 있습니다.
임시 파일의 일반적인 처리 방법을 찾아 볼 /usr/lib/tmpfiles.d/tmp.conf
수있는 곳은 다음과 같습니다.
# Clear tmp directories separately, to make them easier to override
v /tmp 1777 root root 10d
v /var/tmp 1777 root root 30d
시스템 공간이 계속 부족한 경우 다음과 같이 짧은 시간으로 변경할 수 있습니다.
v /tmp 1777 root root 12h
v /var/tmp 1777 root root 1d
무엇을하고 있는지 확인하려면 man tmpfiles.d
설명서를 읽으십시오. 다시, 여기에 제시된 접근 방식이 CentOS (RedHat 기반) 및 Ubuntu 시스템과 관련이 있다는 것을 알았지 만 다른 배포판에 대해서는 많이 알지 못합니다.
/tmp
재부팅 후 정리되지만, 마운트 된 파일 시스템에 따라 다릅니다. 무엇합니까df -h
말은?