Linux

Centos’da Squid Cache Belleği Otomatik Temizlemek

Centos sunucuya kurduğunuz Squid proxy serverde cache bellek aşırı dolduğundan tıkanmalara sebep ola biliyor. Bu yüzden cache belleği silmek gerekiyor. Bunu kendiliğinden yapmasını sürekli girip cache belleği silip tekrar oluşturmamak için bir shell script hazırlayacağız. Bu scripti cron ile belirlediğimiz süre içerisinde otomatik çalışıp gerekli işlemleri yapmasını sağlayacağız. Önce herhangi bir editör aracılığı ile root dizini yada istediğiniz bir dizin altında scriptimizi oluşturalım.

[root@zulfumehmet /]# nano /root/squidct.sh

Centos 7

# squidct.sh squid cache bellek temizleme
# zulfu mehmet ozcifci info@zulfumehmet.com

systemctl stop squid
rm -rf /path/to/dir/cache/
rm -rf /var/spool/squid/
mkdir /var/spool/squid
chown squid:squid /var/spool/squid
restorecon -vr /var/spool/squid
squid -z
squid
systemctl start squid
systemctl status squid


Centos 6

# squidct.sh squid cache bellek temizleme
# zulfu mehmet ozcifci info@zulfumehmet.com

service squid stop
rm -rf /path/to/dir/cache/
rm -rf /var/spool/squid/
mkdir /var/spool/squid
chown squid:squid /var/spool/squid
restorecon -vr /var/spool/squid
squid -z
squid
service squid start
service squid status


Shell scriptimiz bu şekilde. Yaptığımız işlemler systemctl stop squid squidi durduruyoruz. Eski cache belleği siliyoruz. cache belleğimizin nerede olduğunu öğrenmek için.

[root@zulfumehmet /]# nano /etc/squid/squid.conf

Squid.conf dosyasını açıp aşağı satırlara baktığımızda cache belleğimizin yerini görebilirsiniz. /var/spool/squid dizini içinde yer alıyor.

Ardından sildiğimiz dizini oluşturuyoruz. Chown ile izin squid kullanıcısına izin veriyoruz. Kullanıcı adının squid olduğunu nereden biliyoruz bunun için dizini silmeden önce

[root@zulfumehmet /]# cd /var/spool/

[root@zulfumehmet spool]#ls -lh

chmod ile dizin izni veriyoruz squid -z ile chache belleği oluşturuyoruz, systemctl start squid squid çalıştırıyoruz ve status diyerek squidin durumunu öğreniyoruz.




Dosyamızı root dizini altında oluşturduk şimdi okuma ve yazma izni verelim dosyamıza. Yoksa çalıştıramayız scriptimizi.

[root@zulfumehmet /]# chmod 777 /root/squidct.sh

Artık dosyamızı hazır ve çalıştırabiliriz.


[root@zulfumehmet ~]# cd /root
[root@zulfumehmet ~]# ./squidct.sh
2017/06/08 14:19:47 kid1| Set Current Directory to /var/spool/squid
2017/06/08 14:19:47 kid1| Creating missing swap directories
2017/06/08 14:19:47 kid1| /var/spool/squid exists
2017/06/08 14:19:47 kid1| Making directories in /var/spool/squid/00
2017/06/08 14:19:47 kid1| Making directories in /var/spool/squid/01
2017/06/08 14:19:47 kid1| Making directories in /var/spool/squid/02
2017/06/08 14:19:47 kid1| Making directories in /var/spool/squid/03
2017/06/08 14:19:47 kid1| Making directories in /var/spool/squid/04
2017/06/08 14:19:47 kid1| Making directories in /var/spool/squid/05
2017/06/08 14:19:47 kid1| Making directories in /var/spool/squid/06
2017/06/08 14:19:47 kid1| Making directories in /var/spool/squid/07
2017/06/08 14:19:47 kid1| Making directories in /var/spool/squid/08
2017/06/08 14:19:47 kid1| Making directories in /var/spool/squid/09
2017/06/08 14:19:47 kid1| Making directories in /var/spool/squid/0A
2017/06/08 14:19:47 kid1| Making directories in /var/spool/squid/0B
2017/06/08 14:19:47 kid1| Making directories in /var/spool/squid/0C
2017/06/08 14:19:47 kid1| Making directories in /var/spool/squid/0D
2017/06/08 14:19:47 kid1| Making directories in /var/spool/squid/0E
2017/06/08 14:19:47 kid1| Making directories in /var/spool/squid/0F
● squid.service - Squid caching proxy
Loaded: loaded (/usr/lib/systemd/system/squid.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2017-06-08 14:19:47 UTC; 21ms ago
Process: 2239 ExecStart=/usr/sbin/squid $SQUID_OPTS -f $SQUID_CONF (code=exited, status=0/SUCCESS)
Process: 2234 ExecStartPre=/usr/libexec/squid/cache_swap.sh (code=exited, status=0/SUCCESS)
Main PID: 2244 (squid)
CGroup: /system.slice/squid.service
├─2244 /usr/sbin/squid -f /etc/squid/squid.conf
└─2247 (squid-1) -f /etc/squid/squid.conf

Jun 08 14:19:47 zulfumehmet systemd[1]: Starting Squid caching proxy...
Jun 08 14:19:47 zulfumehmet systemd[1]: Started Squid caching proxy.
Jun 08 14:19:47 zulfumehmet squid[2244]: Squid Parent: will start 1 kids
Jun 08 14:19:47 zulfumehmet squid[2244]: Squid Parent: (squid-1) process...d
Hint: Some lines were ellipsized, use -l to show in full.
[root@zulfumehmet ~]#

Sciptimiz ile ön belleği sildik ve yerine boş bir ön bellek oluşturduk. Squid durumunu da aktif bir şekilde çalıştığını da gözlemledikten sonra artık bunu standarda bağlayalım. Örneğin her gün sabah saat 7 de kendiliğinden ön belleği temizlesin.

[root@zulfumehmet ~]# crontab -e

0 7 * * * /root/squidct.sh

Kuralımızı oluşturduk listeleyelim cron kurallarını.

[root@zulfumehmet ~]# crontab -l 




Herhangi bir sıkıntı yaşamadıysanız listede her gün saat 7 de oluşturmuş olduğumuz scripti görmeniz gerekiyor. Eğer belirli saat aralıklarıyla temizlemesini isterseniz örneğin 5 saate bir scriptimiz çalışmasını isterseniz aşağıdaki kuralı kullanabilirsiniz.

* */5 * * * /root/squidcth.sh

Cron ile ilgili ayrıntılı bilgi için www.zulfumehmet.com/linux-sistemlerde-cron/ makaleye bakabilirsiniz.

4 Yorumlar
  1. osman yılmaztürk 7 yıl önce
    Cevapla

    Hocam, virtualminde virtual memory (swap alanı) oluşturdum ama her gün doluyor ve serveri elle açıp kapatmak zorunda kalıyorum. Otomatik açılıp kapanması için cron tanımlamaya çalıştım ama ssh üzerinde yapamadım. Virtualmin panelde cron tanımlama bölümü var ama nasıl kullanıldığını anlayamadım. bu konuda yardımcı olabilir misiniz ?

    • Merhaba swap alanını temizlemek için sunucuyu neşetlerinize gerek yok. Bunun için komut satırına swapoff -a && swapon -a Yazmanız yeterlidir bu komuta Cron oluşturun tamam. Kolay gelsin

      • osman yılmaztürk 7 yıl önce
        Cevapla

        Çok teşekkürler ama ssh ile bağlanıp swapoff -a && swapon -a kodunu yazdığımda bellek ayrılamadı hatası alıyorum. Ayrıca cron oluşturamadım. webmin–>system–>scheduled cron jobs yolunda execute cron jobs alanında ne seçeceğimi bilemedim. Orayı boş bırakıp command alanına swapoff -a && swapon -a yazdığımda aşağıdaki hatayı veriyor. Failed to save cron job : The user ” is not allowed to access cron halbuki root olarak bağlıyım…

        Read more: https://www.zulfumehmet.com/centosda-squid-cache-bellegi-otomatik-temizlemek/#ixzz59ZhuWgc2

  2. osman yılmaztürk 7 yıl önce
    Cevapla

    Çok teşekkürler ama ssh ile bağlanıp swapoff -a && swapon -a kodunu yazdığımda bellek ayrılamadı hatası alıyorum. Ayrıca cron oluşturamadım. webmin–>system–>scheduled cron jobs yolunda execute cron jobs alanında ne seçeceğimi bilemedim. Orayı boş bırakıp command alanına swapoff -a && swapon -a yazdığımda aşağıdaki hatayı veriyor. Failed to save cron job : The user ” is not allowed to access cron halbuki root olarak bağlıyım…

Yorum Yaz

*E-mail adresiniz gizli kalacaktır.

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.

Öneriler

Yeni Makaleler