Yetersiz TMP alanları otomatik silinsin: tmpwatch + cronjob

Sunucunuzda yeterli olmayan bir tmp alanı kullanımınız varsa bunu devamlı izlemeniz ve dolma noktasına geldiğinde de boşaltmanız gerekir.

Bazı durumlarda ki bu başıma geldi (vmware VPS açılmıyor sorununa çözüm (tmp.secure’: directory not empty)) vmware ile yapılandırılan sunucularda tmp dolduktan sonra sunucu ile iletişiminiz kesiliyor ve tekrar tekrar restart atmanıza rağmen virtual sunucunuz açılmayabiliyor. Bu sorunu anlayana kadar çok zaman harcadım, isde bunun için bu konuyu hazırlamak ve doğabilecek sorunlara öncesinde hazır olmak istiyorum ki aynı şey bu yazıyı okuyanlar içinde geçerli…

Öncelikle tmp durumunu izlemek için sunucumuza tmpwatch uygulamasını kurmamız gerekiyor.

SSH ile sunucumuzun terminaline bağlanalım ve aşağıdaki kodu çalıştıralım:

yum -y install tmpwatch

Kullanımı:

Öncelikle tmp de en çok yer kaplayan klasörü belli saat aralıklarında silebilirsiniz yada komple tmp dizinini belli saatler aralığında silebilirsiniz. Örneğin 1 saat arayla tmp dizinini sildirmek isterseniz aşağıdaki kodu uygulayın:

crontab -e

Sonrasında ı harfine basarak düzenleme moduna geçelim ve en alta gelip aşağıdaki kodu ekleyelim:

0 */1 * * * /usr/sbin/tmpwatch -am 1 /tmp

Sonrasında esc aşağıdakini yazarak uygulamadan kaydederek çıkın:

:wq

2. yöntem: tmpwatch parametreleri

Bazı tmpwatch parametreleri ile belli bir gün aralığında kullanılmayan dosyaları silebilirsiniz.

Örnek olarak tmp klasörünün içinde 30 gündür erişilmeyen ve kullanılmayan dosyaların silinmesini istiyorsanız aşağıdaki kodu çalıştırın:

tmpwatch 30d /tmp/

Detaylı doküman, parametreler ile ilgili.

TMP klasörünü boşaltmanın dezavantajları:

Geçici olarak bu dizini kullanan uygulamalarda düzensizlik meydana gelebilir. Örneğin PHP session kayıt yeri tmp dizini belirlenmiş ise tmp klasörünün boşaltılması sitelerinize giren kullanıcıların oturumlarının sonlanmasına neden olabilir. Tekrar giriş yapmaları gerekecektir.

Benim önerim TMP klasörünü saat başı yada belirlediğiniz saatlerde temizlemek yerine TMP klasöründe en çok yer kaplayan klasörleri belirleyin ve o klasörleri silin. Örneğin Nginx kullanan sistemlerde oluşturulan tmp dosyaları TMP klasöründe saklanmaktadır ve otomatik olarak kendini temizlemez, buda zamanla sistemin şişmesine neden olur. Yukardaki cron jop koduna Nginx tmp klasörünün yolunu belirtirseniz örnek aşağıda yer alacak, o zaman sadece çok fazla yer kaplayan klasörleri temizlemiş olursunuz:

0 */1 * * * /usr/sbin/tmpwatch -am 1 /tmp/nginx_client

Sizin kullandığınız sunucuda nginx tmp dizini farklı yerde olabilir, ona göre bu kısmı düzelterek kaydedin: /tmp/nginx_client

Silme işlemleri için cronjob a eklenen saat bölümünde değişiklik yapabilirsiniz, bu konuda daha fazla bilgiyi ben cronjob ile ilgili yazı hazırlayana kadar internetten araştırarak görebilirsiniz…

Alternatif yöntem: tmp boyutunu artırmak

Aşağıdaki kodları sırayla uygulayarak tmp alan boyutunu artırabilirsiniz:

umount -l /tmp mv /usr/tmpDSK /usr/eskitmpDSK nano /scripts/securetmp

Sonrasında aşağıdaki gibi bir alan var bu alanın karşısında ki sayıyı artırarak tmp boyutunu artırabilirsiniz.

my $tmpdsksize = 512000;

512000 örnek rakamdır, sizde farklılık gösterebilir. Örneğin tmp boyutunu 8Gb yapmak siterseniz, aşağıdaki ayarı yapın:

my $tmpdsksize = 8192000;

TMP alanları otomatik olarak silmek için tmpwatch uygulamasını kullanabiliriz. İşte bu konuyla ilgili detaylı bilgiler:

Tmpwatch Nedir?

Tmpwatch, geçici dosya ve klasörlerin kullanılmadığı zamanlarda silinmesini sağlayan bir araçtır. Bu araç, belirli bir süre boyunca kullanılmayan dosyaları tespit eder ve onları temizler.

Tmpwatch Nasıl Kurulur?

Tmpwatch uygulamasını kurmak için aşağıdaki adımları izleyebilirsiniz:

  1. Sunucuya SSH ile bağlanın.
  2. Aşağıdaki komutu çalıştırarak tmpwatch uygulamasını yükleyin:
    yum -y install tmpwatch
    

Tmpwatch Nasıl Kullanılır?

Tmpwatch’u kullanarak TMP alanını temizlemek için iki yöntem vardır:

Yöntem 1: Tmp Dizinini Belirli Aralıklarla Temizleme

Tmp dizinini belirli bir aralıkta temizlemek için tmpwatch komutunu cronjob’a ekleyebilirsiniz. Örneğin, her saat başı tmp dizinini temizlemek için aşağıdaki adımları izleyebilirsiniz:

  1. Sunucuya SSH ile bağlanın.
  2. crontab -e komutunu çalıştırarak crontab düzenleyicisini açın.
  3. En alta gelin ve aşağıdaki kodu ekleyin:
    0 */1 * * * /usr/sbin/tmpwatch -am 1 /tmp
    
  4. Kaydetmek ve çıkmak için ESC tuşuna basın, ardından :wq yazıp Enter tuşuna basın.

Artık tmpwatch her saat başı /tmp dizinindeki kullanılmayan dosyaları silecektir.

Yöntem 2: Tmp Dizininde Belirli Günlerde Kullanılmayan Dosyaları Silme

Tmp dizininde belirli bir süre boyunca kullanılmayan dosyaları silmek için tmpwatch komutunu kullanabilirsiniz. Örneğin, 30 gün boyunca kullanılmayan dosyaları silmek için aşağıdaki adımları uygulayabilirsiniz:

  1. Sunucuya SSH ile bağlanın.
  2. Aşağıdaki komutu çalıştırarak tmp dizinindeki 30 gündür kullanılmayan dosyaları silin:
    tmpwatch 30d /tmp/
    

Bu komut, 30 gündür erişilmeyen ve kullanılmayan dosyaları /tmp dizininden kaldıracaktır.

Tmpwatch Parametreleri

Tmpwatch, farklı parametreler kullanarak daha özelleştirilmiş temizleme ayarları yapmanıza olanak tanır. Detaylı parametreler ve kullanımı ile ilgili bilgiye Tmpwatch belgelerinden ulaşabilirsiniz.

TMP Klasörünü Boşaltmanın Dezavantajları:
TMP klasörünü otomatik olarak temizlemek, geçici olarak bu dizini kullanan uygulamalarda düzensizliklere neden olabilir. Örneğin, PHP session kayıt yeri olarak TMP dizini belirlenmişse, TMP klasörünün boşaltılması kullanıcı oturumlarının sonlanmasına ve tekrar giriş yapmaları gerektiğine yol açabilir.

Bu nedenle, önerim, TMP klasöründe en çok yer kaplayan klasörleri belirleyip onları temizlemektir. Örneğin, Nginx kullanan sistemlerde oluşturulan tmp dosyaları TMP klasöründe saklanır ve otomatik olarak temizlenmez, bu da zamanla sistemin şişmesine neden olabilir. Yukarıdaki cronjob koduna Nginx tmp klasörünün yolunu belirtirseniz (örneğin /tmp/nginx_client), yalnızca çok fazla yer kaplayan klasörleri temizlemiş olursunuz.

Dolayısıyla, TMP klasörünü temizlemek yerine, en çok yer kaplayan klasörleri belirleyerek temizlemek daha iyidir.

Alternatif Yöntem: Tmp Alanın Boyutunu Artırmak

TMP alanının boyutunu artırmak için aşağıdaki adımları izleyebilirsiniz:

  1. Sunucuya SSH ile bağlanın.
  2. Aşağıdaki komutu çalıştırarak /tmp’yi geçici olarak ayrı bir yerde bulunan /usr/tmpDSK dosyasına taşıyın:
    umount -l /tmp
    mv /usr/tmpDSK /usr/eskitmpDSK
    
  3. /scripts/securetmp dosyasını düzenlemek için aşağıdaki komutu çalıştırın:
    nano /scripts/securetmp
    
  4. Aşağıdaki satırı bulun ve tmpdsksize değerini artırarak tmp alanının boyutunu ayarlayın:
    my $tmpdsksize = 512000;
    
    Örneğin, tmp boyutunu 8GB yapmak isterseniz, aşağıdaki gibi düzenleyin:
    my $tmpdsksize = 8192000;
    
  5. Kaydedin ve çıkın.

Artık TMP alanının boyutu ayarladığınız değere göre artırılmış olacaktır.

TERİMLER:

  • TMP alanı: Sunucuda geçici dosyaların depolandığı alan.
  • tmpwatch: Kullanılmayan geçici dosyaları temizlemek için kullanılan bir araç.
  • cronjob: Belirli zaman aralıklarında komutları çalıştırmak için kullanılan program.