Khi nào / tmp được xóa?


143

Tôi đang đưa các tập tin khác nhau vào /tmp, và tôi tự hỏi về các quy tắc xóa chúng?

Tôi đang tưởng tượng nó khác nhau đối với các bản phân phối khác nhau và tôi đặc biệt quan tâm đến các phiên bản máy tính để bàn Ubuntu và Fedora.

Nhưng một cách tốt đẹp để tìm hiểu sẽ là một điều tuyệt vời.

Thậm chí tốt hơn sẽ là một cách tốt đẹp để kiểm soát nó! (Một cái gì đó như 'mỗi ngày vào lúc 3 giờ sáng, xóa bất kỳ /tmptệp nào cũ hơn 60 ngày, nhưng không xóa thư mục khi khởi động lại')


Câu trả lời:


155

Điều đó phụ thuộc vào phân phối của bạn. Trên một số hệ thống, nó chỉ bị xóa khi khởi động, một số khác có cronjobs đang xóa các mục cũ hơn n giờ.

  • Trên các hệ thống giống như Debian: khi khởi động (quy tắc được xác định trong /etc/default/rcS).
  • Trên các hệ thống giống như RedHat: theo độ tuổi (RHEL6, nó /etc/cron.daily/tmpwatchgiống như RHEL7 và RedHat với systemd được cấu hình /usr/lib/tmpfiles.d/tmp.conf, được gọi bởi systemd-tmpfiles-clean.service).
  • Trên Gentoo /etc/conf.d/bootmisc.

19
Và bất kể khi nào điều này xảy ra, khoảnh khắc an toàn duy nhất thường là khi khởi động, ngay sau khi cài đặt nó, vì các quy trình đang chạy có thể có các tệp bị khóa ở đó và không nên xóa chúng.
thích nghi

Ngoài ra còn có các gói có sẵn có thể loại bỏ chúng định kỳ.
Phường Samuel Edwin

2
Trên các hệ thống giống RedHat có systemd (centos7 / rhel7), nó được cấu hình trong /usr/lib/tmpfiles.d/tmp.conf. Nó được gọi bởi mục tiêu của systemd systemd-tmpfiles-clean.service.
Franklin Piat

1
Trên Debian kế thừa, bạn có thể xem xét tmpreapergói, đó là phiên bản rẽ nhánh của tmpwatch.
Věroš K.

Ubuntu 19.04:cat: /etc/default/rcS: No such file or directory
Boris

24

Trên CentOS (và tôi giả sử Fedora), có một công việc trong /etc/cron.d Daily được gọi tmpwatch. Thao tác này /usr/sbin/tmpwatchsẽ xóa các tệp không được truy cập trong số giờ đã chỉ định, nghĩa là hành vi mặc định là kiểm tra atimetệp để đánh giá xem có được sử dụng gần đây không.

http://linux.die.net/man/8/tmpwatch

Các bản phân phối khác (và cài đặt) có thể có / tmp được gắn dưới dạng tmpfs, là một hệ thống tệp trong bộ nhớ. Điều này sẽ được xóa khi khởi động.


Tôi không có cái này trên CentOS 7.4.
Kevin Lemaire

@KevinLemaire Chức năng đã được chuyển sang dịch vụ systemd. list.centos.org/pipermail/centos/2014-Oc/10/147155.html
cjc

Nếu bạn không tìm thấy tệp tmpwatch, bạn có thể tải xuống tmpwatch bằng cách sử dụngyum install tmpwatch
Ng Sek Long

Tôi có thể tải tmpwatch trên các bản phát hành khác không? Âm thanh tuyệt vời. Tôi đang ở trên distro dựa trên debian
Jonathan

sudo find /tmp -type f -atime +10 -deletesẽ xóa các tệp tmp không được truy cập trong 10 ngày, sử dụng cẩn thận
Jonathan

13

Trên Ubuntu 11.10 mà tôi đang sử dụng, có một mới nổi kịch bản trong /etc/init/mounted-tmp.conf. Sự khởi đầu của nó nói điều này:

# mounted-tmp - Clean /tmp directory
#
# Cleans up the /tmp directory when it does not exist as a temporary
# filesystem.

description "Clean /tmp directory"

start on (mounted MOUNTPOINT=/tmp) or (mounted MOUNTPOINT=/usr)

Bạn có thể đọc chi tiết hơn, tuy nhiên nói chung /tmpđược làm sạch khi nó được gắn hoặc /usrđược gắn. Điều này thường xuyên xảy ra khi khởi động, vì vậy việc /tmpdọn dẹp này chạy trên mọi khởi động.

Trong /etc/default/rcSbạn đã TMPTIMEthiết lập, được sử dụng trong tập lệnh init ở trên để cung cấp hai findlệnh ở cuối - về cơ bản kiểm soát việc xóa tệp dựa trên thời gian của chúng (đã sửa đổi, thay đổi, truy cập).


5

Trên RHEL 6.2, các tệp trong / tmp sẽ bị xóa bởi tmpwatch nếu chúng không được truy cập trong 10 ngày.

Tệp /etc/cron.daily/tmpwatch xác định cách gọi 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

Các đối số -x là các tệp được loại trừ. Đối số thứ 2 đến cuối cùng là thời gian chờ đợi sau lần truy cập cuối cùng. Đối số cuối cùng là thư mục để kiểm tra.


5

Từ Fedora 18 trở đi, /tmpđược gắn trên tmpfs(tức là RAM) theo mặc định và do đó bị tắt khi tắt nguồn.

Hành vi này có thể bị vô hiệu hóa bằng cách phát hành systemctl mask tmp.mountvà khởi động lại (và được kích hoạt lại bằng cách phát hành systemctl unmask tmp.mountvà khởi động lại), sau đó /tmpsẽ được gắn trên /hệ thống tệp và có thể được kiểm soát bởi /usr/lib/tmpfiles.d/tmp.confcác cài đặt.

Xem http://fedoraproject.org/wiki/Features/tmp-on-tmpfsman tmpfiles.dđể biết thêm chi tiết về từng trường hợp.


3

Trên openSUSE 13.2, hành vi xóa có thể được kiểm soát với biến sau trong sysconfig.

  • MAX_DAYS_IN_TMP
  • MAX_DAYS_IN_LONG_TMP
  • TMP_DIRS_TO_CLEAR
  • LONG_TMP_DIRS_TO_CLEAR
  • OWNER_TO_KEEP_IN_TMP
  • CLEAR_TMP_DIRS_AT_BOOTUP

Bạn có thể sửa đổi các biến này bằng cách (cách sử dụng của từng biến cũng có thể được tìm thấy ở đó)

  1. Chỉnh sửa /etc/sysconfig/crontập tin theo cách thủ công trong dòng lệnh.
  2. Mở Yast và điều hướng vào Hệ thống -> / etc / sysconfig Editor -> System -> Cron

2

Thậm chí tốt hơn sẽ là một cách tốt đẹp để kiểm soát nó! (Một cái gì đó như 'mỗi ngày vào lúc 3 giờ sáng, xóa bất kỳ tệp / tmp nào cũ hơn 60 ngày, nhưng không xóa thư mục khi khởi động lại')

Sắp xếp các tệp tempy mà bạn không muốn xóa khi khởi động trong / var / tmp

Đó là những gì nó dành cho :-)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.