tmpwatch ลบไฟล์ที่ฉันวางไว้ใน / tmp เมื่อใด


14

CentOS 6.x

ฉันสับสนเมื่อไฟล์ที่ฉันวางใน / 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" 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

ส่วนในบรรทัดที่ 5 ที่-X '/tmp/hsperfdata_*' 10d /tmpทำให้ฉันเชื่อว่าไฟล์ที่ฉันวางไว้ใน / tmp / จะยังคงอยู่เป็นเวลา 10 วัน (สมมติว่าพวกเขาไม่ได้ถูกล็อคระหว่างการลบแน่นอนหรือไดเรกทอรีถูกเมาท์บนระบบไฟล์ tmpfs)

ถูกต้องหรือไม่

คำตอบ:


8

บน CentOS 6 ดูเหมือนว่าtmpwatchจะเป็นการตัดสินใจว่าจะลบไฟล์เมื่อมีการเข้าถึงไฟล์ครั้งล่าสุด (atime) หากเป็นเวลา 10 วัน (10d) หรือมากกว่านั้นจะถูกลบเมื่อtmpwatchทำงาน

จากtmpwatchหน้าคน:

    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.

ยังมาจากหน้าคน:

    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

บน RHEL7 / CENTOS7 มีเป้าหมาย systemd ที่รันทุกวัน: systemd-tmpfiles-clean.timer(เพื่อแทนที่/etc/cron.daily/tmpwatch) ค่าเริ่มต้นมีทั้งและOnBootSec=15min OnUnitActiveSec=1dการอ้างอิงsystemd.timer manpage:

OnBootSec = กำหนดตัวจับเวลาสัมพันธ์กับเมื่อเครื่องถูกบูทขึ้น

OnUnitActiveSec = กำหนดตัวจับเวลาที่สัมพันธ์กับเมื่อหน่วยที่ตัวจับเวลากำลังเปิดใช้งานถูกเปิดใช้งานล่าสุด

ดังนั้น tmp / ทำความสะอาดทุกวันในขณะนี้ประมาณชั่วโมงเมื่อบูตระบบเพื่อให้เวลาที่จะไม่ได้กำหนด สำหรับการปรับใช้ขนาดใหญ่เครื่องเสมือนบางเครื่องอาจไม่ทำการล้างข้อมูลพร้อมกัน

สำหรับประวัติรัน:

$ 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.

โดยที่ "การเริ่มต้นการล้างข้อมูล" หมายถึง "สมบูรณ์"


tmpwatch มีความสามารถในการใช้ที่fuserดี รุ่น systemd สามารถทำเช่นนั้นได้หรือไม่?
CMCDragonkai

2
@CMCDragonkai, ในเดือนเมษายน 2015, Lennart Poettering (SystemD developper) กล่าวในรายการส่งเมล systemd-devel : "เราไม่สนับสนุนสิ่งนี้ [.. ] การวนซ้ำผ่าน / proc นั้นแย่เกินไป [.. ] เราอาจพิจารณา [ ] "จากนั้นเขาเพิ่ม" atime checks [.. ] น่าจะเพียงพออย่างเต็มที่คุณมีกรณีที่พวกเขาไม่ได้หรือไม่ "
Franklin Piat

ใช่ฉันถามคำถามนั้น
CMCDragonkai

1
@CMCDragonkai ฉันพูดถึง Lennart Poettering ในรายชื่อผู้รับจดหมาย ตอบกลับเขา (ในรายการ)!
แฟรงคลินปีติ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.