/ tmp dizini nasıl temizlenir?

262

/tmp dizini nasıl temizlendi? Otomatik mi Eğer öyleyse, ne sıklıkla temizlenir?

    
sordu Olivier Lalonde 09.01.2011 20:26

8 cevap

178

Not! Bu cevap en azından 14.04'ten beri modası geçmiş. Mevcut durum için diğer cevaplara bakın ve eğer doğru olduklarını ispatlarlarsa öfkeli bir şekilde onları kışkırtın. Ayrıca yorum gönder, böylece mevcut doğru cevabı buraya bağlayabilirim.

14.04 için bkz. İşte

16.10 için bkz. İşte

2011'den eski cevap:

/tmp 'nin temizlenmesi, /etc/init/mounted-tmp.conf dizini komut dosyası tarafından yapılır. Komut, her zaman /tmp 'nin takılı olduğu upstart tarafından çalıştırılır. Pratik olarak bu her botta demektir.

Komut dosyası kabaca aşağıdakileri yapar: /tmp dosyasındaki bir dosya $TMPTIME gününden daha eskiyse silinir.

$TMPTIME 'nin varsayılan değeri 0'dır, yani /tmp içindeki her dosya ve dizin silinir. $TMPTIME , /etc/default/rcS cinsinden tanımlanmış bir ortam değişkeni.

    
verilen cevap lesmana 10.01.2011 01:17
134

Her önyüklemede dizin varsayılan olarak temizlenir, çünkü TMPTIME varsayılan olarak 0'dır.

Buradan, aşağıdaki dosyadaki saati değiştirebilirsiniz:

/etc/default/rcS

TMPTIME , tmp dizininin günler içinde ne kadar sık ​​temizleneceğini söylüyor

    
verilen cevap Max Ruf 09.01.2011 20:35
58

/tmp klasörü dosyaları uzun süreli depolamak için bir yer olmasa da, bazen Ubuntu sistemlerinde varsayılan olan şeyleri yeniden başlattığınızda bir süre daha uzun tutmak istersiniz. . Bir ya da iki kez, test sırasında /tmp 'ya bir şey indirdiğimi, değişiklik yaptıktan sonra yeniden başlattığımı ve orijinal verileri tekrar kaybettiğimi biliyorum. Bu, /tmp dosyalarınızı biraz daha uzun tutmak istiyorsanız değiştirilebilir.

/tmp Temizleme Sıklığını Değiştirme

Sisteminizin, yeniden başlatma sırasında /tmp değerini temizlemesini bildiren varsayılan ayar /etc/default/rcS dosyasında tutulur. Bakacağımız değer TMPTIME .

TMPTIME=0 değerinin geçerli değeri, dosyanın yaşına rağmen yeniden başlatma sırasında silme dosyaları olduğunu söylüyor. Bu değeri farklı (pozitif) bir sayıya değiştirmek, bir dosyanın /tmp cinsinden hayatta kalabileceği gün sayısını değiştirir.

TMPTIME=7

Bu ayar, dosyaların bir hafta öncesine kadar /tmp oranında kalmasına ve ardından bir sonraki yeniden başlatma işleminde silinmesine olanak tanır. Negatif bir sayı ( TMPTIME=-1 ), sistemin /tmp cinsinden hiçbir şeyi silmemesini söyler. Bu muhtemelen istediğiniz bir şey değil, ancak kullanılabilir.

    
verilen cevap hhlp 09.01.2011 20:35
28

Bunu Ubuntu 16.10'da kontrol ediyorum. Düzenleme / etc / default / rcS'nin artık hiç bir etkisi olmadığını ve bu dosyaya ne yazdığınız önemli değil, tmp'deki dosyaların yeniden başlatılarak silinebileceğini onaylayabilirim. Başkalarının da belirttiği gibi, tmpreaper artık kullanılmamaktadır.

Doğru cevap, Ubuntu 16.10'un yeni bir kurulumu olduğunu düşünüyorum. "Tmpfiles.d" man sayfasında belgelenen bir klasör /etc/tmpfiles.d vardır. Bu klasörde, / tmp'nin silinip silinmeyeceğini kontrol etmek için bir yapılandırma dosyası yerleştirilmelidir. Bu, 20 günlük olmadıkça yeniden başlatma dosyalarını / tmp içindeki dosyaları silmeyi durdurmak için yaptığım şey:

#/etc/tmpfiles.d/tmp.conf

d /tmp 1777 root root 20d

Dosyaların hiçbir zaman silinmesini istemiyorsanız "20d" yi "-" ile değiştirin. Bu benim en iyi çabam, bu adam sayfasının detaylarıyla neredeyse aşılamaz.

Yeni kurulumun avantajı, sistem yeniden başlatılmasa bile (her zaman sunucuda olduğu gibi) bir dosya temizleyicinin çalışabilmesidir. Bu büyük bir artı, bence.

    
verilen cevap pauljohn32 05.12.2016 05:10
26

Ubuntu 14.04'te bu, günlük olarak adlandırılan tmpreaper tarafından yapılır. cron ( /etc/cron.daily 'den). Program /etc/default/rcS ve /etc/tmpreaper.conf yoluyla yapılandırılabilir.

    
verilen cevap Martin Schröder 19.04.2016 14:00
10

14.04'ten önce:

Yeniden başlattığınız her seferde temizlenir.

    
verilen cevap Utku Demir 09.01.2011 20:34
5

Ubuntu çalıştıran sunucularımızdan birinde, / tmp içindeki dosyaları kaldırmak için bir komut dosyası var ve her gece çalışıyor.

Komut dosyası:

#!/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 {} \;

Yukarıdaki içeriği chmod 775 dosyasına kaydedin ve dosyayı çalıştırmak için bir cron girişi oluşturun. Bu bir web sunucusu olduğundan, açık nedenlerle yeniden başlatmak istemiyoruz.

    
verilen cevap Paul 28.09.2011 06:54
3

systemd Ubuntu'da (15.10 ve daha yeni), bu systemd-tmpfiles-clean hizmetini ve zamanlayıcıyı kullanarak systemd tarafından yapılır:

$ 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

Dolayısıyla, systemd-tmpfiles-clean , kapatıldığında ve başka şekilde günde bir kez çalışır. Temizlediği dosyalar başka bir cevapta belirtilen /etc/tmpfiles.d kullanılarak genişletilebilir.

Zamanlayıcı davranışını systemctl edit systemd-tmpfiles-clean.timer kullanarak ve çeşitli systemd Timer yapılandırma seçeneklerini kullanarak değiştirebilirsiniz (bkz. man 5 systemd.timer ).

    
verilen cevap muru 06.12.2017 18:11

Etiketlerdeki diğer soruları oku