कैसे साफ करें / tmp?


73
rizhas@rizhas-laptop:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda7        67G   58G  5,2G  92% /
none            4,0K     0  4,0K   0% /sys/fs/cgroup
udev            1,5G   12K  1,5G   1% /dev
tmpfs           303M  1,2M  302M   1% /run
none            5,0M     0  5,0M   0% /run/lock
none            1,5G  348K  1,5G   1% /run/shm
none            100M   80K  100M   1% /run/user
overflow        1,0M  1,0M     0 100% /tmp
overflow        1,0M  1,0M     0 100% /tmp

कैसे करें सफाई /tmp?


1
शायद यूनिक्स और लिनक्स पर उत्तर दिया गया है । यकीन नहीं होता है कि क्या इस सवाल को डुप्लिकेट बनाता है।
डीआरसी

nope @drc लेकिन अच्छा लगता है। मैंने अपना उत्तर अपडेट करने के लिए वहां से एक लिंक का उपयोग किया।
रिनविंड


जवाबों:


116

/ tmp को रिबूट पर साफ किया जाना चाहिए, लेकिन यदि आप रिबूट नहीं करते हैं (जो सर्वर के लिए सामान्य है), तो साफ नहीं होगा

find /tmp -ctime +10 -exec rm -rf {} +

10 दिनों से अधिक पुरानी सभी फ़ाइलों और फ़ोल्डरों को हटा देगा। आप इसे दैनिक क्रोन में जोड़ना चाह सकते हैं।


अपडेट करें

@Sfussenegger के नीचे दिए गए टिप्पणियों में इस कमांड के थोड़े अलग प्रारूप की सिफारिश की गई है जो आपकी आवश्यकताओं के लिए और आपके द्वारा संचालित सिस्टम के लिए बेहतर हो सकता है।

sudo find /tmp -type f -atime +10 -delete

यहां कमांड यह sudoसुनिश्चित करने के लिए उपयोग कर रही है कि सब कुछ हटा दिया गया है (या आप इसे रूट के रूप में चला सकते हैं), उन फाइलों पर काम कर रहे हैं जो 10 दिनों से अधिक समय तक एक्सेस नहीं किए गए हैं और केवल फाइलों को हटाते हैं , फ़ोल्डर्स नहीं । यह कमांड -deleteको निष्पादित करने से बचने के लिए भी उपयोग करता हैrm


2
निर्माण समय (-ctime) के बजाय आप एक्सेस टाइम (-atime) का उपयोग करना चाह सकते हैं - बेशक केवल तभी जब फाइल सिस्टम यह जानकारी रखता है (noatime in / etc / fstab के लिए जाँच करें)
sfussenegger

7
ठीक है, कृपया मेरे साथ रहें लेकिन एक और बात है: आप केवल फाइलों को खोजना चाहते हैं ( -type f)। अन्यथा आप पा सकते हैं कि एक निर्देशिका पेड़ के माता-पिता को कुछ समय में एक्सेस नहीं किया गया है और इसकी सभी सामग्री को हटा दें जो संभवतः अभी भी उपयोग में हो सकती हैं। तो अंतिम आदेश मैं sudo find /tmp -type f -atime +10 -delete
सुझाऊँगा

2
@sfussenegger, शायद आपका जवाब देने के लिए आपकी टिप्पणियों को बढ़ावा दे सकता है? मुझे लगता है कि यह टिप्पणियों में "छिपा हुआ" होने से बेहतर है।
जोनाथन

34

आप मान सकते हैं कि tmp निर्देशिका (/ tmp / / usr / tmp etc) के अंदर कुछ भी हटाया जा सकता है। इससे पहले कि आप उन सभी कार्यक्रमों और सेवाओं को रोकना शुरू कर दें, जिनका आप / tmp / के बाद से उपयोग कर रहे हैं, जिनका उपयोग कार्यक्रमों द्वारा अस्थायी रूप से उस सत्र में जानकारी संग्रहीत करने के लिए किया जा सकता है। तो एक करो sudo service mysql stopऔर sudo service apache2 stopअगर आपके पास एक mysql और / या अपाचे चल रहा है। / Tmp / निर्देशिका में फ़ाइलों का नाम ज्यादातर समय यह बताता है कि वे किस कार्यक्रम से संबंधित हैं।

तो कमांड लाइन से ...

cd /tmp/
pwd
sudo rm -r *

/ tmp / निर्देशिका को खाली करेगा और सभी फ़ाइलों और उपनिर्देशिकाओं को हटा देगा। इसे सही ढंग से टाइप करने के लिए सावधान रहें। pwdवहाँ की आज्ञा आवश्यक नहीं है, लेकिन दिखानी चाहिए /tmp

यदि आप इसे अंतःक्रियात्मक रूप से चाहते हैं (तो आपको हटाने की पुष्टि करने की आवश्यकता है):

cd /tmp/
sudo rm -ri *

यह भी ध्यान देने योग्य है कि एक रिबूट स्पष्ट / tmp aswell के रूप में यहाँ दिखाया गया है: / tmp निर्देशिका को कैसे साफ किया जाता है? तो अगर / tmp / एक रिबूट के बाद फाइलों से भरा है, तो आपको यह जांचने की आवश्यकता है कि उन फ़ाइलों की उत्पत्ति कहां से हुई है।

मैं यह भी बताना चाहूंगा कि 1 एमबी / टैम्प के लिए बहुत अधिक जगह नहीं है। क्या आप MySQL का उपयोग कर रहे हैं? इसे ठीक करने के तरीके पर https://unix.stackexchange.com/a/76058/10017 देखें (धन्यवाद @drc)


2
"बिना किसी नुकसान के" अंतिम रिबूट से पहले डेटिंग फ़ाइलों के लिए सच है। अन्यथा यह एक वर्तमान कार्यक्रम द्वारा उपयोग में लाया जा सकता है और (उस कार्यक्रम के लिए) समस्याएँ पैदा कर सकता है ... उदाहरण के लिए मेरे पास स्क्रिप्ट्स हैं जो / tmp में फाइल बनाते हैं, और फिर उन्हें प्रोसेसिंग के अगले चरण (ओं) को पढ़ने के लिए फिर से पढ़ते हैं। । बीच-बीच में उन्हें हटाना / छिन्न-भिन्न करना कार्यक्रम की क्रियाओं को बाधित करेगा (और यहां तक ​​कि खतरनाक नतीजे भी दे सकता है, यह निर्भर करता है कि उन फाइलों का उपयोग किसके लिए किया जाता है)
ओलिवियर दुलैक

... इसलिए who –b(अंतिम बूट की तारीख) का उपयोग करना, और फिर बूटिंग के समय एक फ़ाइल / बूटटाइम बनाना ( touch ....... /boottime), किसी को एक सुरक्षित करने की अनुमति देगा find /tmp -type f \( ! -newer /boottime \) -delete \;, केवल अंतिम बूट से पुरानी फ़ाइलों को हटा देना
ओलिवियर ड्यूलैक

क्या मुझे उत्तर का विस्तार करने के लिए इन टिप्पणियों का उपयोग करना चाहिए? माइंड यू: / tmp यहाँ शायद mysql से है।
रिनविंड

4
mktempमेरी स्क्रिप्ट में नियमित रूप से उपयोग करने वाले व्यक्ति के रूप में, मैं "बिना किसी नुकसान के" बयान से पूरी तरह असहमत हूं।
hytromo

2
यदि /tmpअंतिम रिबूट से पुराना कुछ भी है, तो स्टार्टअप स्क्रिप्ट ने अपना काम नहीं किया है।
साइमन रिक्टर

10

tmpreaperकार्यक्रम को साफ करने के लिए किया जा सकता / tmp समय-समय पर। यह प्रोग्राम उन सभी चीज़ों को हटा देता है, जिन्हें किसी निश्चित समय सीमा में एक्सेस नहीं किया गया है, आमतौर पर दो सप्ताह। इसके लिए ठीक से काम करने के लिए, यह जिस फाइल सिस्टम पर है, वह atimesविकल्प सक्षम होना चाहिए। यदि आप एक tmpfs का उपयोग करते हैं , जो यह प्रतीत होता है कि आप कर रहे हैं, तो आपको ठीक होना चाहिए।

बेशक, रिबूटिंग भी साफ़ करता है / tmp , लेकिन यह उबाऊ होगा।


यह मेरे लिए आश्चर्यजनक है कि यह उबंटू और डेबियन में एक मानक विकल्प नहीं है। मेरे लिए अपेक्षाकृत अनपेक्षित उपयोगकर्ता प्रक्रियाओं में भाग लेना / tmp भरना काफी सामान्य है।
ऋषि

1
हां, लेकिन यह एक नीति है जिसे सिस्टम प्रशासक द्वारा निर्धारित करने की आवश्यकता है। यदि आपके पास लंबे समय तक चलने वाली सेवाएं हैं जो अपने डेटा को रखने की अपेक्षा करती हैं, तो कोई भी डिफ़ॉल्ट लेकिन "कोई सफाई नहीं" खतरनाक होगा।
साइमन रिक्टर

7

निर्देशिका का /tmpअर्थ है अस्थायी।

यह निर्देशिका अस्थायी डेटा संग्रहीत करती है। आपको इसमें से कुछ भी हटाने की आवश्यकता नहीं है, इसमें मौजूद डेटा हर रिबूट के बाद स्वचालित रूप से हटा दिया जाता है।

फिर भी अगर आप इसमें मौजूद डेटा को डिलीट करना चाहते हैं

sudo rm -r /tmp/*

इसे हटाने से कोई समस्या नहीं होगी क्योंकि ये अस्थायी फ़ाइलें हैं।


9
वे इस अर्थ में अस्थायी हैं कि रिबूट करने के बाद उनकी ज़रूरत नहीं है, इसका मतलब यह नहीं है कि उन्हें अभी ज़रूरत नहीं है या कि उन्हें 5mins में ज़रूरत नहीं होगी
डैनियल सेरोडियो

5
यह सच नहीं है कि यह "किसी भी समस्या का कारण नहीं होगा।" इससे पहले कि मैं बेहतर जानता था और मूल रूप से मेरी मशीन को ठीक करने के बाद मैंने ऐसा किया।
काइल स्ट्रैंड


4

जैसे कमांड चलाने से पहले सावधान रहें rm -r ./*। एक बार जब आप इसे चलाते हैं, तो किसी भी डेटा को पुनर्प्राप्त करना बहुत मुश्किल या असंभव होगा।

सभी को हटा दिया जाएगा। सुनिश्चित करें कि आप जिस निर्देशिका को हटा रहे हैं वह सही है।

चीजों को संभालने का एक सुरक्षित तरीका है।

# sudo rm -r /tmp/*

इस प्रकार, जब आप गलती से इस कमांड को अपने शेल के अंदर से चलाते हैं history, तो यह गलत फ़ाइलों को हटा नहीं देगा (जब तक कि आप उन्हें नहीं रख रहे हैं /tmp)।


2

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


1

यदि आपका "/ tmp" एक linux फाइलसिस्टम पर आरोहित होता है, जो अतिप्रवाह (अक्सर 1MB पर आकार) के रूप में माउंट किया जाता है, तो यह संभव है कि आप "/ tmp" को अपने स्वयं के विभाजन के रूप में निर्दिष्ट न करें और आपका रूट फाइल सिस्टम भर गया हो और "/ tmp" था वापसी के रूप में। स्थान खाली करने के बाद इसे ठीक करने के लिए, बस फ़ॉलबैक को अनमाउंट करें और इसे अपने मूल बिंदु पर रीमाउंट करें:

sudo umount overflow

अगर डिवाइस उपयोग में व्यस्त है

sudo umount -l overflow
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.