जब वास्तव में tmpwatch मैं / tmp में मौजूद फ़ाइलों को साफ़ करता है?


14

सेंटोस 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जब कोई फ़ाइल आखिरी बार एक्सेस की गई थी, तो उसे डिलीट करने का निर्णय लेना आधार है। यदि यह 10 दिन (10 डी) या उससे अधिक हो गया है, तो इसे 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-tmpfiles-clean.timer(बदलने के लिए /etc/cron.daily/tmpwatch)। डिफ़ॉल्ट मान दोनों हैं OnBootSec=15minऔर OnUnitActiveSec=1d। का हवाला देते हुए systemd.timer मैनपेज:

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। क्या सिस्टम वर्जन ऐसा कर सकता है?
CMCDragonkai

2
@CMCDragonkai, अप्रैल 2015 को, Lennart Poettering (SystemD developper) ने systemd-devel मेलिंग सूची पर कहा : "हम इसका समर्थन नहीं करते हैं [..] के माध्यम से पुनरावृत्ति करना / बस बहुत बुरा है। [...] हम इस पर विचार कर सकते हैं [अन्यथा] ] " तो उन्होंने कहा " Atime जाँच [..] पूरी तरह से पर्याप्त होना चाहिए। क्या आपके पास एक मामला है जहाँ वे नहीं हैं? "
फ्रैंकलिन पिआट

हाँ, मैंने वह प्रश्न पूछा।
CMCDragonkai

1
@CMCDragonkai, मैं मेलिंग सूची में लेन्नर्ट पोएटरिंग को उद्धृत कर रहा था। उसे उत्तर दें (सूची में)!
फ्रैंकलिन पिआट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.