/ Tmp nasıl temizlenir?


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

Nasıl temizlenir /tmp?


1
Muhtemelen Unix ve Linux'ta cevap verdi . Bunun bu soruyu bir kopya yapıp yapmadığından emin değil.
drc

@drc yok ama iyi bul. Cevabımı güncellemek için oradan bir bağlantı kullandım.
Rinzwind


Yanıtlar:


116

/ tmp'nin yeniden başlatıldığında temizlenmesi gerekiyor, ancak yeniden başlatmazsanız (sunucular için normal), temizleme gerçekleşmeyecek

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

10 günden eski tüm dosya ve klasörleri siler. Günlük cronu eklemek isteyebilirsiniz.


GÜNCELLEME

Aşağıdaki yorumlarda @sfussenegger, bu komutun gereksinimlerinize ve üzerinde çalıştığınız sisteme daha iyi uyması için biraz farklı bir format önerir.

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

Burada komut sudoher şeyin silindiğinden (veya root olarak çalıştırılabildiğinden) emin olmak için kullanıyor, 10 günden uzun süredir erişilmeyen dosyalar üzerinde çalışıyor ve sadece klasörleri değil dosyaları siliyor . Ayrıca komut -deleteçalıştırmak zorunda kalmamak için kullanılırrm


2
oluşturma zamanı yerine (-ctime) erişim zamanını (-saat) yerine kullanmak isteyebilirsiniz - tabii ki sadece dosya sistemi bu bilgileri
saklarsa

7
tamam, lütfen yanımda ol ama bir şey daha var: sadece dosya aramak istiyorsun ( -type f). Aksi takdirde, bir dizin ağacının ebeveyni bir süredir erişilemediğini bulabilir ve potansiyel olarak kullanımda olabilecek tüm içeriğini silebilirsiniz. Bu yüzden tavsiye ederim ki son emirsudo find /tmp -type f -atime +10 -delete
sfussenegger

2
@sfussenegger, belki de yorumlarınızı bir cevaba iletebilir mi? Bence yorumlarda "gizlenmekten" daha iyidir.
Jonathan

34

Bir tmp dizini içindeki (/ tmp / / usr / tmp vb.) Herhangi bir şeyin silinebileceğini varsayabilirsiniz. Silme işlemine başlamadan ÖNCE / tmp / kullandığınız tüm programları ve hizmetleri durdurun, programlar tarafından o oturum için geçici olarak bilgi depolamak için kullanılabilir. Öyleyse, a sudo service mysql stopve sudo service apache2 stopeğer çalışan bir mysql ve / veya apache varsa. / Tmp / dizinindeki dosyaların ismi çoğu zaman hangi programa ait oldukları hakkında ipucu verir.

Yani komut satırından ...

cd /tmp/
pwd
sudo rm -r *

/ tmp / dizinini boşaltır ve tüm dosyaları ve alt dizinleri siler. Doğru yazmaya dikkat edin. pwdOradaki komut gerekli değildir ama göstermelidir /tmp.

Eğer etkileşimli olarak istiyorsanız (silmeyi onaylamanız gerekir):

cd /tmp/
sudo rm -ri *

Ayrıca, yeniden başlatmanın burada gösterildiği gibi / tmp'yi temizleyeceğini de unutmayın: / tmp dizini nasıl temizlenir? Bu nedenle eğer / tmp / bir yeniden başlatma işleminden sonra dosyalarla doluysa, bu dosyaların nereden kaynaklandığını araştırmanız gerekir.

Ayrıca, / tmp için 1 Mb'nin çok fazla alan olmadığını belirtmek isterim. MySQL kullanıyor musunuz? Bunun nasıl düzeltileceği hakkında https://unix.stackexchange.com/a/76058/10017 adresine bakın (thanks @drc)


2
"herhangi bir zarar vermeden" son yeniden başlatmadan önce gelen dosyalar için geçerlidir. Aksi halde mevcut bir program tarafından kullanılıyor olabilir ve (bu program için) sorunlara yol açabilir ... örneğin / tmp içinde dosya oluşturan komut dosyalarım var ve ardından bir sonraki işlem (ler) i yapmak için tekrar okudum . aralarında silinmek / bunları kesmek programın eylemlerini bozacaktır (ve bu dosyaların ne için kullanıldığına bağlı olarak tehlikeli sonuçlara yol açabilir)
Olivier Dulac

... öyleyse, who –b(son önyükleme tarihini) kullanarak ve ardından önyükleme ( touch ....... /boottime) sırasında tarihli bir dosya / boottime oluşturmak , birisinin güvenli olmasını sağlar find /tmp -type f \( ! -newer /boottime \) -delete \;, yalnızca son önyüklemeden daha eski olan dosyaları siler
Olivier Dulac

Bu yorumları cevabı genişletmek için kullanabilir miyim? Dikkat: Buradaki / tmp muhtemelen mysql'dendir.
Rinzwind

4
mktempSenaryolarımda düzenli olarak kullanan bir kişi olarak “zararsız” ifadesine kesinlikle katılmıyorum.
hytromo

2
Eğer /tmpson yeniden daha eski olan her şeyi içerir, daha sonra başlangıç komut işlerini yapmadım.
Simon Richter

10

tmpreaperProgram temizlemek için kullanılabilir / tmp periyodik. Bu program, belirli bir zaman diliminde erişilmemiş her şeyi, genellikle iki hafta siler. Bunun düzgün çalışması için, üzerinde bulunduğu dosya sisteminin atimesetkin seçeneği olması gerekir . Yaptığınız göründüğü bir tmpfs kullanıyorsanız , o zaman iyi olmalısınız.

Tabii ki, yeniden başlatma da temizler / tmp , ancak bu çok sıkıcı olurdu.


Bunun Ubuntu ve Debian'da standart bir seçenek olmadığı şaşırtıcı. / Tmp'yi dolduran göreceli olarak imtiyazsız kullanıcı işlemleriyle karşılaşmam oldukça yaygındır.
adaçayı

1
Evet, ancak sistem yöneticisi tarafından ayarlanması gereken bir politika. Verilerinin saklanmasını bekleyen, uzun süredir devam eden hizmetleriniz varsa, "temerrüt etmemek" yerine varsayılan herhangi bir tehlike mevcut değildir.
Simon Richter

7

Dizin /tmpgeçici demektir.

Bu dizin geçici verileri saklar. Ondan herhangi bir şeyi silmenize gerek yoktur; içerdiği veriler her yeniden başlatma işleminden sonra otomatik olarak silinir.

Hala içinde bulunan verileri silmek istiyorsanız,

sudo rm -r /tmp/*

ondan silmek, bunlar geçici dosyalar olduğundan herhangi bir soruna neden olmaz.


9
Yeniden
başlattıktan

5
Bunun “herhangi bir soruna yol açmayacağı” doğru değil. Bunu daha önce bilmeden ve temelde makinemi bağlamak için yapmıştım.
Kyle Strand,


4

Gibi bir komutu çalıştırmadan önce dikkatli olun rm -r ./*. Bir kez çalıştırdığınızda, verileri kurtarmak çok zor veya imkansız olacaktır.

Hepsi silinecek. Sildiğiniz dizinin doğru olduğundan emin olun.

İşleri halletmenin daha güvenli bir yolu var.

# sudo rm -r /tmp/*

Bu şekilde, yanlışlıkla bu komutu kabuğunuzun içinden çalıştırdığınızda history, yanlış dosyaları silmez (onları sakladığınız sürece /tmp).


2

/tmpÇünkü dizin, her açılışta varsayılan olarak temizlendi TMPTIMEolan 0varsayılan olarak.


1

Linux dosya sistemindeki “/ tmp” bağınız taşma olarak monte edilmişse (genellikle 1 MB boyutunda), bunun nedeni “/ tmp” 'ı kendi bölümü olarak belirtmemeniz ve kök dosya sisteminizin dolduğunu ve “/ tmp” olduğunu geri dönüş olarak remounted. Alanı temizledikten sonra bunu düzeltmek için, geri dönüşün bağlantısını kesin ve orijinal noktasında yeniden birleşmesi gerekir:

sudo umount overflow

cihaz meşgulse kullanın

sudo umount -l overflow
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.