← 아티클 목록

리눅스 tmp 자동 삭제 — systemd-tmpfiles로 /tmp 정리하기

2027-11-29#linux#systemd#운영

/tmp가 어느새 가득 차서 No space left on device가 뜬 경험, 한 번쯤 있습니다. 임시 파일을 만든 프로그램이 죽거나 정리를 안 하면 찌꺼기가 계속 쌓입니다. 직접 cron을 짜기 전에, 대부분의 배포판에 이미 들어 있는 systemd-tmpfiles를 쓰면 됩니다.

진단 — 무엇이 /tmp를 채우나

먼저 오래된 파일이 실제로 쌓여 있는지 확인합니다.

로컬 터미널
du -sh /tmp                          # 전체 크기
find /tmp -type f -mtime +10 | head  # 10일 이상 안 건드린 파일

오래된 파일이 많다면 자동 정리 대상입니다.

개념 — tmpfiles는 규칙 기반이다

systemd-tmpfiles는 설정 파일의 규칙을 읽어 파일·디렉터리를 생성하거나 오래된 것을 비웁니다. 기본 규칙은 /usr/lib/tmpfiles.d/에 있고, 사용자 규칙은 /etc/tmpfiles.d/에 둡니다. 같은 경로 규칙이 겹치면 /etc 쪽이 우선합니다.

규칙 한 줄의 형식은 타입 경로 모드 소유자 그룹 수명 입니다. 정리에서 핵심은 마지막 수명(age) 필드로, 이 시간보다 오래된 파일이 삭제 대상이 됩니다.

OUTPUT
d /tmp 1777 root root 10d

위 줄은 "/tmp를 디렉터리로 두되, 10일 넘게 손대지 않은 내용물은 비운다"는 뜻입니다. 타입 d는 디렉터리 자체는 유지하고 안의 항목만 정리합니다.

단계 — 안전하게 적용하기

단계명령목적
1cat /usr/lib/tmpfiles.d/tmp.conf기본 규칙 확인
2규칙 파일 작성/etc/tmpfiles.d/에 사용자 규칙
3systemd-tmpfiles --clean정리 한 번 실행
4타이머 확인자동 반복 동작 점검
  1. 기본값을 먼저 봅니다. 배포판이 이미 /tmp를 10일로 정리하고 있을 수 있습니다.

  2. 수명을 바꾸려면 /etc/tmpfiles.d/tmp.conf를 만들어 덮어씁니다. 예를 들어 7일로 줄이려면 d /tmp 1777 root root 7d 한 줄을 넣습니다.

  3. 즉시 적용 전에 무엇이 지워질지 확인합니다.

로컬 터미널
systemd-tmpfiles --clean --dry-run    # 어떤 파일이 대상인지만 출력
systemd-tmpfiles --clean              # 실제 정리 실행
  1. 평소에는 systemd-tmpfiles-clean.timer가 주기적으로 이 일을 합니다. 동작 중인지 확인합니다.
서버 터미널
systemctl status systemd-tmpfiles-clean.timer
systemctl list-timers | grep tmpfiles

타이머가 비활성이면 systemctl enable --now systemd-tmpfiles-clean.timer로 켭니다.

체크리스트

로컬 터미널
du -sh /tmp                              # 현재 크기
systemd-tmpfiles --clean --dry-run       # 삭제 대상 미리보기 (필수)
systemd-tmpfiles --clean                 # 한 번 정리
systemctl list-timers | grep tmpfiles    # 자동 타이머 동작 확인

주의할 점: 수명 필드를 너무 짧게 잡으면 빌드 중인 임시 파일이나 세션 데이터까지 지워질 수 있습니다. --dry-run으로 반드시 먼저 확인하세요.


systemd 유닛·타이머와 파일시스템 운영 감각을 명령어로 직접 익히고 싶다면 리눅스 트랙에서 회원가입 없이 무료로 실습할 수 있습니다.