Khi chính xác tmpwatch xóa các tập tin tôi đặt trong / tmp?


14

CentOS 6.x

Tôi bối rối khi chính xác các tập tin tôi đặt trong / tmp / bị xóa.

/etc/cron.daily/tmpwatch có các mục sau:

#! /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" 30d /var/tmp
for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do
    if [ -d "$d" ]; then
        /usr/sbin/tmpwatch "$flags" -f 30d "$d"
    fi
done

Phần trong dòng 5 đọc -X '/tmp/hsperfdata_*' 10d /tmpdẫn đến tôi tin rằng các tệp tôi đặt trong / tmp / sẽ tồn tại trong 10 ngày (giả sử chúng không bị khóa trong khi xóa khóa học hoặc thư mục được gắn trên hệ thống tệp tmpfs).

Đúng không?

Câu trả lời:


8

Trên CentOS 6, dường như tmpwatchcăn cứ vào quyết định xóa khi tệp được truy cập lần cuối (atime). Nếu là 10 ngày (10 ngày) trở lên thì nó sẽ bị xóa khi tmpwatchchạy.

Từ tmpwatchtrang người đàn ông:

    By  default,  tmpwatch  dates  files  by their atime (access time), not 
    their mtime (modification time). If files aren't being removed when 
    ls -l implies they should be, use ls -u to examine their atime to see if 
    that explains the problem.

Cũng từ trang người đàn ông:

    The time parameter defines the threshold for removing files.  If the
    file has not been accessed for time, the file is removed.  The time 
    argument is a number with an optional single-character suffix specifying 
    the units: m for minutes, h for hours, d for days.  If no  suffix  is 
    specified, time is in hours.

6

Trên RHEL7 / CENTOS7, có một mục tiêu systemd chạy hàng ngày: systemd-tmpfiles-clean.timer(để thay thế /etc/cron.daily/tmpwatch). Các giá trị mặc định là cả OnBootSec=15minOnUnitActiveSec=1d. Trích dẫn trang web systemd.timer :

OnBootSec = xác định bộ hẹn giờ liên quan đến thời điểm máy được khởi động.

OnUnitActiveSec = xác định bộ định thời liên quan đến thời điểm đơn vị mà bộ định thời kích hoạt được kích hoạt lần cuối.

Vì vậy, / tmp hiện được làm sạch hàng ngày, đại khái vào giờ khi hệ thống khởi động: vì vậy thời gian không xác định . Đối với việc triển khai lớn, không phải tất cả các máy ảo đều thực hiện dọn dẹp đồng thời, tốt đẹp.

Đối với lịch sử, chạy:

$ journalctl  -u systemd-tmpfiles-clean
Mar 12 21:44:17 c7.klabs.be systemd[1]: Starting Cleanup of Temporary Directories...
Mar 12 21:44:18 c7.klabs.be systemd[1]: Started Cleanup of Temporary Directories.

Trong đó "Bắt đầu dọn dẹp" thực sự có nghĩa là "Hoàn thành".


Tmpwatch có khả năng sử dụng tốt fuser. Phiên bản systemd có thể làm điều đó?
CMCDragonkai

2
@CMCDragonkai, Vào tháng 4 năm 2015, Lennart Poettering (nhà phát triển SystemD) đã nói trên danh sách gửi thư của systemd-devel : "chúng tôi không hỗ trợ điều này [..] lặp đi lặp lại / Proc đơn giản là quá tệ. [..] ] " sau đó anh ấy đã thêm " kiểm tra atime [..] là đủ đầy đủ. Bạn có gặp trường hợp nào không? "
Franklin Piat

Vâng, tôi đã hỏi câu hỏi đó.
CMCDragonkai

1
@CMCDragonkai, tôi đã trích dẫn Lennart Poettering trong danh sách gửi thư. Trả lời anh ta (trong danh sách)!
Franklin Piat
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.