सवाल / Tmp निर्देशिका कैसे साफ़ की जाती है?


कैसा है /tmp निर्देशिका साफ हो गई? क्या यह स्वचालित है? यदि हां, तो इसे कितनी बार साफ किया जाता है?


262
2018-01-09 19:26


मूल


मेरी अस्थायी फ़ाइलें डिस्क पर कभी भी लिखी नहीं जाती हैं। वे एक रैम डिस्क पर लिखा है। मैंने रखा tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0 में / etc / fstab। - Anonymous


जवाब:


ध्यान दें! यह उत्तर कम से कम 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


178
2018-01-10 00:17



यह अब 14.04 के लिए सच नहीं है (स्क्रिप्ट अब मौजूद नहीं है)। - Martin Schröder
@ मार्टिन श्रोडर - स्क्रिप्ट मेरे सिस्टम पर मौजूद है और यह 14.04 का क्लीन इंस्टॉल है और टेंपररेपर मौजूद नहीं है! - Lance Holland
मैं अब आर्क लिनक्स का उपयोग कर रहा हूं इसलिए मैं सत्यापित नहीं कर सकता। माफ़ कीजिये। कृपया कोई इसे सत्यापित करें और मेरा जवाब टिप्पणी या संपादित करें। - lesmana
उबंटू में 16.04 tmpreaper को गैर-सुरक्षित के रूप में छोड़ दिया गया है कृपया देखें: fossies.org/linux/tmpreaper/debian/README.security - Tamerlaha
नहीं। उबंटू 16.04 में यह बस एक व्यवस्थित तंत्र द्वारा अधिग्रहण किया जाता है। उस दस्तावेज़ को पढ़ें, और आपको वास्तव में क्या मिलेगा यह एक स्पष्टीकरण है कि असुरक्षा का दावा करने वाले सुरक्षा विश्लेषण में त्रुटिपूर्ण क्यों है। - JdeBP


प्रत्येक बूट पर डिफ़ॉल्ट रूप से निर्देशिका को साफ़ कर दिया जाता है, क्योंकि TMPTIME डिफ़ॉल्ट रूप से 0 है।

यहां आप निम्न फ़ाइल में समय बदल सकते हैं:

/etc/default/rcS

TMPTIME कहते हैं कि दिन में टीएमपी डायर कितनी बार मंजूरी दे दी जाएगी


135
2018-01-09 19:35



प्रत्येक बूट पर समाशोधन एक मशीन के लिए आदर्श नहीं है जिसे किसी सर्वर की तरह कभी रिबूट नहीं किया जाता है। मेरे पास / tmp में 5 जीबी स्पेस लेने वाली 500,000 से अधिक फाइलें हैं क्योंकि मेरे सर्वर में 378 दिन अपटाइम हैं। मैं इसे रीबूट करने में अनिच्छुक हूं, बस इसलिए कि उन फ़ाइलों को रीबूट पर साफ़ करने में घंटों लगते हैं। - rjmunro
आपके मामले में आपको देना चाहिए tmpreaper एक अवसर। - qbi
एक सीआरओएन नौकरी आसानी से हल कर सकती है। - Ken Sharp
भी tmpwatch एक उपयुक्त उपकरण होना चाहिए। - ArekBulski
ऐसा लगता है कि उबंटू / systemd पहले से ही एक समाधान प्रदान करता है। मैं और कहूंगा .... systemd। - Ken Sharp


जबकि /tmp फ़ोल्डर लंबे समय तक फ़ाइलों को स्टोर करने के लिए एक जगह नहीं है, कभी-कभी आप चीजों को थोड़ा लंबा रखना चाहते हैं अगली बार जब आप रीबूट करेंगे, जो उबंटू सिस्टम पर डिफ़ॉल्ट है। मुझे पता है कि एक या दो बार मैंने कुछ डाउनलोड किया है /tmp परीक्षण के दौरान, परिवर्तन करने के बाद रीबूट किया गया और फिर मूल डेटा फिर से खो दिया। यदि आप अपना रखना चाहते हैं तो इसे बदला जा सकता है /tmp थोड़ी देर तक फाइलें।

बदल रहा है /tmp सफाई आवृत्ति

डिफ़ॉल्ट सेटिंग जो आपके सिस्टम को साफ़ करने के लिए कहती है /tmp रीबूट पर आयोजित किया जाता है /etc/default/rcS फ़ाइल। जिस मूल्य पर हम देखेंगे वह है TMPTIME

का वर्तमान मूल्य TMPTIME=0 फ़ाइल की उम्र के बावजूद रीबूट पर फ़ाइलों को हटाएं कहते हैं। इस मान को एक अलग (सकारात्मक) संख्या में बदलने से फ़ाइल में कितने दिन जीवित रह सकते हैं /tmp

TMPTIME=7

यह सेटिंग फाइलों को रहने की अनुमति देगी /tmp जब तक कि वे एक सप्ताह पुरानी न हों, और फिर उन्हें अगले रीबूट पर हटा दें। एक ऋणात्मक संख्या (TMPTIME=-1) सिस्टम को कुछ भी हटाने में कभी नहीं बताता है /tmp। यह संभवतः ऐसा कुछ नहीं है जिसे आप चाहते हैं, लेकिन उपलब्ध है।


59
2018-01-09 19:35



अच्छे खर्च। लेकिन किस स्क्रिप्ट में क्लीनअप कमांड है? मैंने देखा है /etc/init/mounted-temp.conf, लेकिन यह लाइन है start on mounted MOUNTPOINT=/tmp जो मुझे लगता है कि यह लागू नहीं है। - enzotib
अगर आप फ़ाइल को स्वचालित रूप से हटा नहीं चाहते हैं, तो इसे अंदर रखें /var/tmp के बजाय /tmp। - Gilles
जब आपकी मशीन दुर्घटनाग्रस्त हो जाती है, संभवतः ओओएम के कारण आप फ़ाइलों को खोना नहीं चाहते हैं (वीडियो फ्रेम प्रदान करते हैं)। निश्चित रूप से समस्या को ठीक करने के लिए एक बेहतर समाधान होगा। :-) - Ken Sharp
क्या यह सिगविन के अंदर किया जा सकता है? - CMCDragonkai


मैं इसे उबंटू 16.10 पर देख रहा हूं। मैं प्रमाणित कर सकता हूं कि संपादन / आदि / डिफ़ॉल्ट / आरसीएस का अब कोई प्रभाव नहीं पड़ता है और टीएमपी में फ़ाइलों को रीबूट द्वारा मिटा दिया जाता है चाहे आप उस फ़ाइल में जो भी डालते हैं। जैसा कि दूसरों का उल्लेख है, tmpreaper अब उपयोग नहीं किया जाता है।

मुझे लगता है कि सही जवाब यह है कि उबंटू 16.10 में एक नया सेटअप है। एक फ़ोल्डर /etc/tmpfiles.d है, जो मैन पेज "tmpfiles.d" में प्रलेखित है। उस फ़ोल्डर में, किसी को कॉन्फ़िगरेशन फ़ाइल को यह नियंत्रित करने के लिए रखना चाहिए कि / tmp मिटाया जाना है या नहीं। यह वही है जो मैं रीबूट को / tmp में फ़ाइलों को मिटाने से रोकने के लिए कर रहा हूं जब तक कि वे 20 दिन पुराने न हों:

#/etc/tmpfiles.d/tmp.conf

d /tmp 1777 root root 20d

"20d" को "-" से बदलें यदि आप कभी भी फाइलों को हटा नहीं चाहते हैं। यह मेरा सबसे अच्छा प्रयास है, कि मनुष्य पृष्ठ विस्तार से लगभग अभेद्य है।

नए सेटअप का लाभ यह है कि फ़ाइल क्लीनर अभी भी चलाया जा सकता है भले ही सिस्टम रीबूट नहीं किया गया हो (जैसे सर्वर पर हमेशा के मामले में)। यह एक बड़ा प्लस है, मुझे लगता है।


29
2017-12-05 04:10



man tmpfiles.d - Martin Schröder
मैंने पाया कि आप हाइफ़न का उपयोग कर मूल फ़ाइल अनुमतियों और मालिक को संरक्षित कर सकते हैं: d /tmp/ - - - 20d - Dave Yarwood
ध्यान देने योग्य भी: आप सफाई कार्य को मैन्युअल रूप से चलाकर अपनी कॉन्फ़िगरेशन का परीक्षण कर सकते हैं: systemctl start systemd-tmpfiles-clean - Dave Yarwood


उबंटू 14.04 में यह किया जाता है tmpreaper, जिसे क्रोन द्वारा दैनिक कहा जाता है (से /etc/cron.daily)। कार्यक्रम के माध्यम से कॉन्फ़िगर किया जा सकता है /etc/default/rcS तथा /etc/tmpreaper.conf


26
2018-04-19 12:00



मेरे सिस्टम पर, tmpreaper /etc/cron.daily में नहीं था - लेकिन मैं इसे apt-get के साथ स्थापित करने में सक्षम था - Joe Germuska


14.04 से पहले:

हर बार जब आप रीबूट करते हैं तो इसे साफ़ किया जाता है।


10
2018-01-09 19:34



14.04+ के साथ दिखाई देता है यह केवल "प्रति बूट" स्क्रिप्ट FWIW नहीं, tmpreaper का उपयोग करता है - rogerdpack
मेरे 14.04 सिस्टम सभी रीबूट पर साफ करते हैं। कभी भी सुना नहीं tmpreaper। - Ken Sharp
क्या होगा यदि आपने कभी सिस्टम को रीबूट नहीं किया है? - phuclv


उबंटू चलाने वाले हमारे सर्वरों में से एक पर, हमारे पास / 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 {} \;

बस उपरोक्त सामग्री को फ़ाइल chmod 775 फ़ाइल में सहेजें और इसे चलाने के लिए क्रॉन प्रविष्टि बनाएं। चूंकि यह एक वेब सर्वर है, इसलिए हम इसे स्पष्ट कारणों से रीबूट नहीं करना चाहते हैं।


5
2017-09-28 04:54



आप का उपयोग बंद बेहतर हो सकता है tmpwatch। - poolie
अंतिम पंक्ति बेहद खतरनाक है। आम तौर पर, हर कोई दौड़ने में सक्षम है ln -s /usr /tmp/kaboom या और भी ln -s /* /tmp/ ... - Daniel Alder


में systemd उबंटू (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, और विभिन्न systemd का उपयोग कर Timer विन्यास विकल्प (देखें man 5 systemd.timer)।


3
2017-12-06 17:11