/tmp
निर्देशिका को कैसे साफ किया जाता है? क्या यह स्वचालित है? यदि हां, तो इसे कितनी बार साफ किया जाता है?
/tmp
निर्देशिका को कैसे साफ किया जाता है? क्या यह स्वचालित है? यदि हां, तो इसे कितनी बार साफ किया जाता है?
जवाबों:
ध्यान दें! यह उत्तर कम से कम ubuntu 14.04 से पुराना है। वर्तमान स्थिति के लिए अन्य उत्तर देखें और यदि वे सही साबित होते हैं तो उन्हें उग्र रूप से बढ़ावा दें। टिप्पणी भी पोस्ट करें ताकि मैं वर्तमान सही उत्तर के लिए लिंक यहां डाल सकूं।
14.04 के लिए https://askubuntu.com/a/759048/1366 देखें
16.10 के लिए https://askubuntu.com/a/857154/453746 देखें
2011 से पुराना उत्तर:
ऊपर की /tmp
पटकथा द्वारा सफाई की जाती है /etc/init/mounted-tmp.conf
। स्क्रिप्ट को ऊपर की ओर से चलाया जाता है, हर बार /tmp
मुहिम शुरू की जाती है। व्यावहारिक रूप से इसका मतलब है कि हर बूट पर।
स्क्रिप्ट लगभग निम्नलिखित कार्य करती है: यदि कोई फ़ाइल दिनों /tmp
से पुरानी है तो $TMPTIME
उसे हटा दिया जाएगा।
डिफ़ॉल्ट मान $TMPTIME
0 है, जिसका अर्थ है कि हर फ़ाइल और निर्देशिका /tmp
हट जाती है। $TMPTIME
एक पर्यावरण चर में परिभाषित किया गया है /etc/default/rcS
।
प्रत्येक बूट पर डिफ़ॉल्ट रूप से निर्देशिका साफ़ हो जाती है, क्योंकि TMPTIME
डिफ़ॉल्ट रूप से 0 है।
यहाँ आप निम्न फ़ाइल में समय बदल सकते हैं:
/etc/default/rcS
TMPTIME
कहते हैं कि दिनों में कितनी बार tmp dir sould को साफ़ किया जाता है
tmpreaper
एक मौका देना चाहिए ।
tmpwatch
एक उपयुक्त उपकरण भी होना चाहिए।
हालांकि /tmp
फ़ोल्डर लंबे समय तक फ़ाइलों को संग्रहीत करने के लिए एक जगह नहीं है, कभी-कभी आप अगली बार रिबूट करने की तुलना में चीजों को थोड़ी देर रखना चाहते हैं , जो कि उबंटू सिस्टम पर डिफ़ॉल्ट है। मुझे पता है कि एक या दो बार मैंने /tmp
परीक्षण के दौरान कुछ डाउनलोड किया है , परिवर्तन करने के बाद रिबूट किया और फिर से मूल डेटा खो दिया। इसे बदला जा सकता है यदि आप अपनी /tmp
फ़ाइलों को थोड़ा लंबा रखना चाहते हैं ।
/tmp
क्लीनअप फ्रीक्वेंसी बदलना
डिफ़ॉल्ट सेटिंग जो आपके सिस्टम को /tmp
रिबूट पर साफ़ करने के लिए कहती है, वह /etc/default/rcS
फ़ाइल में होती है। हम जिस मान को देखेंगे TMPTIME
।
TMPTIME=0
कहने का वर्तमान मूल्य फ़ाइल की उम्र के बावजूद रिबूट पर फ़ाइलों को हटा दें। इस मान को एक अलग (पॉजिटिव) नंबर में बदलने से फ़ाइल के जीवित रहने के दिनों की संख्या बदल जाएगी /tmp
।
TMPTIME=7
यह सेटिंग फ़ाइलों को /tmp
तब तक रहने की अनुमति देती है जब तक कि वे एक सप्ताह पुरानी न हों, और फिर उन्हें अगले रिबूट पर हटा दें। एक नकारात्मक संख्या ( TMPTIME=-1
) सिस्टम को बताती है कि वह कभी भी कुछ भी नहीं हटा सकता है /tmp
। यह संभवतः ऐसा कुछ नहीं है जो आप चाहते हैं, लेकिन उपलब्ध है।
/etc/init/mounted-temp.conf
, लेकिन इसमें वह रेखा start on mounted MOUNTPOINT=/tmp
है जो मुझे लगता है कि यह लागू नहीं है।
/var/tmp
इसके बजाय उसे रख दें /tmp
।
मैं इसे Ubuntu 16.10 पर जाँच रहा हूँ। मैं यह प्रमाणित कर सकता हूं कि संपादन / आदि / डिफ़ॉल्ट / आरसीएस का अब कोई प्रभाव नहीं पड़ता है और tmp की फ़ाइलों को उस फ़ाइल में कोई फर्क नहीं पड़ता कि आप क्या डालते हैं, रिबूट द्वारा मिटा दिया जाता है। जैसा कि दूसरों ने उल्लेख किया है, अब tmpreaper का उपयोग नहीं किया जाता है।
मुझे लगता है कि सही उत्तर यह है कि Ubuntu 16.10 में एक नया सेटअप है। मैन पेज "tmpfiles.d" में प्रलेखित एक फ़ोल्डर /etc/tmpfiles.d है। उस फ़ोल्डर में, किसी को यह नियंत्रित करने के लिए एक कॉन्फ़िगरेशन फ़ाइल रखनी चाहिए कि क्या / tmp को मिटाना है। जब तक वे 20 दिन पुराने नहीं हो जाते, तब तक मैं रिबूट को फ़ाइलों को मिटाने से रोकने के लिए कर रहा / रही हूँ:
#/etc/tmpfiles.d/tmp.conf
d /tmp 1777 root root 20d
"20d" को "-" से बदलें यदि आप कभी नहीं चाहते कि फाइलें हटाई जाएं। यह मेरा सबसे अच्छा प्रयास है, वह आदमी पृष्ठ विस्तार के साथ लगभग अभेद्य है।
नए सेटअप का लाभ यह है कि एक फाइल क्लीनर अभी भी चल सकता है, भले ही सिस्टम रिबूट न हो (जैसा कि सर्वर पर हमेशा होता है)। मुझे लगता है कि एक बड़ा प्लस है।
man tmpfiles.d
d /tmp/ - - - 20d
systemctl start systemd-tmpfiles-clean
उबंटू में 14.04 यह द्वारा किया जाता है tmpreaper
, जिसे क्रोन (से /etc/cron.daily
) द्वारा दैनिक कहा जाता है । कार्यक्रम के माध्यम से /etc/default/rcS
और कॉन्फ़िगर किया जा सकता है /etc/tmpreaper.conf
।
हर बार रिबूट करने के बाद यह साफ हो जाता है।
tmpreaper
।
एक systemd
Ubuntu (15.10 और नए) में, यह सिस्टमड द्वारा systemd-tmpfiles-clean
सेवा और टाइमर का उपयोग करके किया जाता है :
$ systemctl cat systemd-tmpfiles-clean.service
# /lib/systemd/system/systemd-tmpfiles-clean.service
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
DefaultDependencies=no
Conflicts=shutdown.target
After=local-fs.target time-sync.target
Before=shutdown.target
[Service]
Type=oneshot
ExecStart=/bin/systemd-tmpfiles --clean
IOSchedulingClass=idle
तथा
$ systemctl cat systemd-tmpfiles-clean.timer
# /lib/systemd/system/systemd-tmpfiles-clean.timer
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Daily Cleanup of Temporary Directories
Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
[Timer]
OnBootSec=15min
OnUnitActiveSec=1d
इसलिए systemd-tmpfiles-clean
शटडाउन पर चलता है, और प्रति दिन एक बार अन्यथा। एक अन्य उत्तर/etc/tmpfiles.d
में उल्लिखित फ़ाइलों का उपयोग करके इसे साफ किया जा सकता है ।
आप systemctl edit systemd-tmpfiles-clean.timer
विभिन्न सिस्टमड Timer
कॉन्फ़िगरेशन विकल्पों (देखें man 5 systemd.timer
) का उपयोग करके टाइमर व्यवहार को स्वयं बदल सकते हैं ।
/tmp
अभी भी सफाई नहीं हुई है । और मुझे इसे साफ करने की आवश्यकता है। यहां तक कि मैनुअल स्टार्ट भी sudo systemctl start systemd-tmpfiles-clean
ट्रिक नहीं करता है। कोई विचार क्यों?
उबंटू चलाने वाले हमारे एक सर्वर पर, हमारे पास / tmp में फ़ाइलों को हटाने के लिए एक स्क्रिप्ट है और यह रात को चलती है।
स्क्रिप्ट है:
#!/bin/sh
# Clean file and dirs more than 3 days old in /tmp nightly
/usr/bin/find /tmp -type f -atime +2 -mtime +2 |xargs /bin/rm -f &&
/usr/bin/find /tmp -type d -mtime +2 -exec /bin/rm -rf '{}' \; &&
/usr/bin/find /tmp -type l -ctime +2 |xargs /bin/rm -f &&
/usr/bin/find -L /tmp -mtime +2 -print -exec rm -f {} \;
बस ऊपर दी गई सामग्री को फ़ाइल को 775 फ़ाइल में सहेजें और इसे चलाने के लिए क्रोन प्रविष्टि बनाएँ। चूंकि यह एक वेब सर्वर है, हम इसे स्पष्ट कारणों से रिबूट नहीं करना चाहते हैं।
ln -s /usr /tmp/kaboom
या ln -s /* /tmp/
...
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
/ etc / fstab में डाला ।