Squid: WARNING! Your cache is running out of filedescriptors
Feb 5 09:06:19 fw squid[2911]: client_side.cc(2699) WARNING! Your cache is running out of filedescriptors
Feb 5 09:06:37 fw squid[2911]: client_side.cc(2699) WARNING! Your cache is running out of filedescriptors
loglarda yukaridaki gibi uyari mesajlari aliyorsaniz,
Fedora ‘da;
/etc/init.d/squid stop vim /etc/squid/squid.conf max_filedesc 4096 vim /etc/init.d/squid scripten once herhangi bir satira ulimit -HSn 4096 satirini ekliyoruz. /etc/init.d/squid start
Debian ‘da;
vim /etc/defaults/squid SQUID_MAXFD=4096 /etc/init.d/squid/restart
islemlerini yaparak sorunu cozebilirsiniz.
iptables ile squid yonlendirmeleri
Belki cok bilindik bir konu ama gene yazayim.
Firewall + Squid ayni makinada ise ;
NOT : -i => ici bakan interface
iptables -t nat -A PREROUTING -i eth4 -p tcp –dport 80 -j REDIRECT –to-port 3128
Firewall + Squid farkli makinada ise;
iptables -t nat -A PREROUTING -i eth4 -p tcp –dport 80 -j DNAT –to 192.168.4.1:3128
Sevgiyle.
ag karti ustunde link var mi? yok mu ?
Birden fazla ethernet kartli bir linux makinaniz var ise hangi ethernette link var hangisinde yok bulmak biraz zor olabilir. Bunun icin asagidaki paketleri kullanabilirsiniz.
yum -y install mii-tool
mii-tool ciktisi;
[root@mail ~]# mii-tool
eth0: negotiated 100baseTx-FD flow-control, link ok
Alternatif olarak ethtool kullanabilirsiniz. Ag karti ustundeki tum istatistikleri veriyor.
yum -y install ethtool
[root@mail ~]# ethtool eth0
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: MII
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: pumbg
Wake-on: d
Current message level: 0x00000001 (1)
Link detected: yes
sevgiyle.
Crontab ve Zamanlanmış Görevler
Crontab, kısaca zamanlanmış görevlerdir. Belirlediğimiz zaman süreçlerinde çalışmasını istediğimiz komut ya da scriptleri otomatik olarak çalışmasını sağlayan servistir.
Crontab aşağıdaki tabloda belirtilmiş olduğu gibi toplam 7 süreçten oluşur.
Alan | Mana |
---|---|
1 | Dakika (0-59) |
2 | Saat (2-24) |
3 | Gün (1-31) |
4 | Ay (1-12, Jan, Feb, …) |
5 | Haftanın günleri (0-6) 0=Sunday, 1=Monday … or Sun, Mon, Tue, Wed, Thur, Fri |
6 | Komutu veya scripti çalıştırma hakkına sahip olan kullanıcı |
7 | Çalışacak komut ya da scriptler |
Bir crontab dosyasında aşağıdaki gibi satır bulunur. Yukarıdaki tabloyu bakarak aşağıda ne yaptığımızı anlayabilirsiniz.
0 2 * * * root /home/murat/script.sh , dakika 0, saat 2, hergün, heray, haftanın hergünü, root kullanıcısı ve script.sh betik dosyası, Hergün saat 2:00 ‘da script.sh betiğinin çalışağını söylüyoruz.
# Dakika Saat Gün Ay Haftanın Gün Kullanıcı Script
0 8 * * Sun root /root/yedek.sh
root kullanıcı hakkı ile /root/yedek.sh dosyası her pazar günü saat 8:00 ‘da çalışacaktır.
Yukarıdaki satırın bulunduğu dosya /var/spool/cron dizini altındadır. Burada sadece root adı altında bir dosya bulunur(root kullanıcısı ile düzenliyorsak) ve bunu düzenleyerek crontab dosyamızı ayarlarız. Diğer bir yol ise benim en çok tercih etmiş olduğum crontab -e komutudur. Bu komutla direk /var/spool/cron/root dosyasını düzenlemiş oluyoruz.
crontab fonksiyonları
Kolsolda crontab –help yazarak kullanabileceğimiz fonksiyonları görebilirsiniz.
crontab -e : crontab dosyasını düzenler
crontab -l : crontab dosyasında bulunan zamanlanmış görevleri listeler
crontab -r : crontab dosyasını temizler.
Crontab ‘la zamanlanmış görevler yazmak zor geliyor ise /etc/ altında bulunan hazır cronları kullanabilirsiniz.
/etc/cron.hourly
/etc/cron.daily
/etc/cron.weekly
/etc/cron.mountly
Hazır zamanlanmış cronları kullanmak için yapmanız gereken, scriptinizi hazırlamak ve bu dizinlerin altına çalışma izniyle birlikte kopyalamaktır.
Crontab ‘ın ana konfigürasyon dosyası /etc/crontab altındadır. Burada cron ile ilgili mesajların hangi eposta adresine gideceğini, hazır zamanlanmış görevlerin hangi zamanda çalışacağı gibi ayarlara ulaşabilirsiniz.
/etc/crontab çıktısı,
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
Crontab ile ilgili örnekler
# Her saatte bir ram çıktısını /tmp/ram dosyasına yazıyor
0 * * * * /usr/bin/free > /tmp/ram
# 2:00, 3:00, 4:00 saatlerinde script calısıyor (2-4 gibi yazarsak aralık belirtmiş oluruz)
0 2-4 * * * /root/test.sh
# Her ayın 1 ve 15’de saat 6.30 ‘da script calısıyor
30 6 1,15 * * /root/yedek.sh
# Her 5 dk bir mrtg scripti calışıyor
*/5 * * * * /root/mrtg.sh
# Her cumartesi saat 11 ‘de disk.sh çalıştırılıyor
* 11 * * Sat /root/disk.sh
# Her 2 saatte bir script çalışıyor
* */2 * * * /root/test.sh
Sanırım uzun bir cron anlatımı oldu.Umarım anlatabilmiş ve yardımcı olabilmişimdir.
Sevgiyle Murat Uğur EMİNOĞLU
Squid ve Apache ayni sunucuda
Tekrardan selamlar, squid ve apache ‘yi ayni makina ustunde kurmus iseniz apache ‘de ufak bir degisiklikle her ikisinide kullanabilirsiniz.
Yapmaniz gereken,
vim /etc/apache2/ports.conf
Listen 8080 satirini ekliyoruz. (veya hangi porttan calismasini istiyorsak)
/etc/init.d/apache2 restart
http://192.160.1.1:8080 girerek calistigini gorebilirsiniz. Bunu neden kullaniyorum diye sorarsaniz sarg ve mrtg icin 🙂
Kolay gelsin.
Murat.
Biraz Sed
Bugunlerde squid ile ugrastigim icin sagdan soldan hazir blacklistler indirdim.. Bu blacklist domainlerin sadece test.com seklinde eklendigini fark ettim, dogal olarak www.test.com yazdiginizda sayfa aciliyor. Bunun icin test.com ‘u .test.com olarak degistirmem gerekmektedir. Binlerce domaini bu sekilde degistirmek biraz sacma olurdu 🙂 Bende sed ‘i biraz karistirayim dedim, kullanimi basit ve ozel bir editor oldugunu anladim.
Simdi sed ile binlerce domainin onune nasil . isareti koyacagimizi aciklayalim.
sed ‘s/^/./g’ /etc/squid3/conf/video > /etc/squid3/conf/videoyeni
Eger degisiklik yapacaginiz dosyada ip adresleride var ise,
sed ‘s/^[a-z]/./g’ /etc/squid3/conf/video > /etc/squid3/conf/videoyeni
Bu kadar aciklamaya iki satirlik komut 🙂
Sevgiyle..
Murat.
IPv6 getaddrinfo ‘fw.local’ error: Name or service not known
Proftp kurmus ve yeniden baslatirken basliktaki gibi hata aliyor ve caninizi sıkıyorsa,
vim /etc/hosts dosyasini acip,
::1 ip6-localhost ip6-loopback satirina hostname adinizi eklemeniz kafi olacaktir.
Ornek :
::1 ip6-localhost ip6-loopback fw.local
Sevgiyle.
Squid ile Bearshare engelleme
Birden lazim oldu, bende bearshare ‘i kurup squid ustunden geciriyim belki birseyler cikartir dedim ve asagidaki log u onume doktu. Geriye sadece .bearshare.com domain olarak engellemek kaldi 🙂
1200082648.742 1628 192.168.1.201 TCP_MISS/200 4570 POST http://login.bearshare.com/registration/account.php? – DIRECT/207.232.22.51 text/xml
vim /etc/squid3/squid.conf (squid2 kullaniyorsaniz /etc/squid/ altinda.)
acl bearshare dstdomain .bearshare.com
http_access deny bearshare
Sevgiyle.
Gecerli editoru degistirmek,
set | grep -i EDITOR
ciktisindan varsayilan editorunuzu edinebilirsiniz.
export EDITOR=/usr/bin/vim
ile varsayilan editoru vim yapabilirsiniz.
Sevgiyle.
/bin/rm: Argument list too long.
Gecenlerde 800 tane eposta iletisi silmeye kalktigim zaman /bin/rm: Argument list too long. ciktisi donduruyordu ve dosyalar silinmiyordu. Yapmaniz gereken sadece ls | xargs rm komutunu calistirmak..
🙂 sevgiyle.