How to do display all pid number of a parent process id in unix.

ps ile pid (child)+ ppid number(parent) ve prosess’lere ait diğer  ekstra bilgileri almak gayet basit.

ps -o user,pcpu,pmem,pid,ppid,command axx –forest | grep  ‘apache’ | sort

apache    0.0 17.0 11944 32311  \_ /usr/sbin/httpd
apache    0.6 18.1 11946 32311  \_ /usr/sbin/httpd
apache    0.6 18.1 11948 32311  \_ /usr/sbin/httpd
apache    0.6 18.1 11953 32311  \_ /usr/sbin/httpd
apache    0.7 18.1 11945 32311  \_ /usr/sbin/httpd
apache    0.7 18.1 11952 32311  \_ /usr/sbin/httpd
apache    0.9 18.4 11949 32311  \_ /usr/sbin/httpd
apache    1.0 18.1 11947 32311  \_ /usr/sbin/httpd
apache    1.0 18.4 11950 32311  \_ /usr/sbin/httpd
apache    1.1 18.4 11951 32311  \_ /usr/sbin/httpd
apache    3.1 18.1 12150 32311  \_ /usr/sbin/httpd

Yukarıdaki komut; “apache” isimli kullanıcıya ait prosess,memory,pid(prosess id),ppid(parent prosess id) ve prosess’in bağlı olduğu forest’ları sort ederek gösterir. Ek olarak , PPID numarası bilinen bir prosess’in tüm child prosess’leri de aşağıdaki komut ile tespit edilebilir.

pstree -p 32311 -n

httpd(32311)ââ¬âpipelog(12421)

             ââhttpd(12422)
             ââhttpd(12423)
             ââhttpd(12424)
             ââhttpd(12425)
             ââhttpd(12426)
             ââhttpd(12427)
             ââhttpd(12428)
             ââhttpd(12429)
             ââhttpd(12430)
             ââhttpd(12431)

Share on Facebook

Listing all scheduled tasks on a server

Kayıtlı tüm kullanıcılara ait schedul task listesini verir.

#!/bin/bash
for i in `cat /etc/passwd | cut -d ‘:’ -f1 | sort |awk ‘{print $1} prin $0′ | uniq` ;
do
crontab -l -u $i
done
exit

Çıktının bir kısmı

[root@matrix tools]# sh cron.sh
no crontab for adm
no crontab for apache
no crontab for avahi-autoipd
no crontab for bin
no crontab for clamav
no crontab for daemon
no crontab for dbus
no crontab for ftp
no crontab for gopher
no crontab for hackedusr
no crontab for haldaemon
no crontab for halt
no crontab for lp
no crontab for mail
no crontab for mailnull
no crontab for mysql
no crontab for news
no crontab for nginx
no crontab for nobody
no crontab for nscd
no crontab for ntp
no crontab for operator
no crontab for oprofile

Bu entry’i girmemin  traji komik bir yanı oldu bugün.Önüme 28 adet SQL Query sorusu, sanırım ortalama 4 sayfa da linux ve database ile alakalı çeşitli sorular içeren bir (bash scripting de dahil) soru kitapçığı kondu.
Linux ile ilgili olan ilk soru, sistem üzerinde kayıtlı olan tüm kullanıcılara ait cron listesini veren bir script yazılması şeklindeydi.Diğer sorulara odaklanırken bu sorunun çözümünü muallak olarak yarım bıraktım.Fakat otobüs ile eve dönerken aklıma bu soru geldi ve istenen işlevi yapan scripti ancak ayaktayken telefonuma kodlayabildim.  :)
Fakat kağıt üzerinde yarımca kaldı.
“Kısacası hayat; insana her an, her bildiğiniz şeyi gösterebilme fırsatı tanımıyor bazen.”

Share on Facebook

don’t compress image with mod_deflate

Apache üzerinde mod_deflate ile compressing yapıyor ve image’ların compress edilmesini istemiyorsanız; location arasına yazılacak aşağıdaki syntax aracılığıyla, belirtilen image tiplerini compressing dışında tutabilirsiniz.Bu durumda seneryo şöyle olur, “AddOutputFilterByType DEFLATE”  ile izin verilen diğer  content compress edilerek istemciye yollanırken resim formatlı dosyalar compress edilmez.

<Location />

#Compressing Aktif
SetOutputFilter DEFLATE
\.(?:png|jpe?g|gif)$ no-gzip dont-vary
</Location>

Comressing işlemi, ciddi oranda cpu üzerinde aritmetik işlem yapan mekanizmaya sahip olduğu için sunucu’ya ait cpu fazlaca yorulur.Bu duruma istinaden istenmeyen type’lar bu tip direktifler ile devre dışı bırakılabilir ya da compressing ayri bir makine üzerinde yapılabilir.

Share on Facebook

Time Based Data Processing Speed Test over the Linux

İşletim sistemleri, verilerin bir kısmını işlenmek üzere “filo” algoritması aracılığıyla byte byte hafıza’nın stack segmentinde tutar.Sonrasında ilgili veriler, process edilmek üzere önce önbellek ardından cpu’nun temel işlem döngüsüne sokulmak üzere sıraya alınır.Günümüz operating sistemleri, process ettiği her işlemi (executing,reading,writing) bir süreliğine bellek içerisine depolar.Dolayısıyı ile aynı işlem belli bir süre içerisinde tekrar çalıştırılmak istendiğinde; işlenmek istenen veri, depolanan bellek üzerinden çağrılır. Böylece cpu üzerindeki processing time’da azaltılmış olur.Bu işlemler tamamen sistem kaynakları’nın performasını artırmak adına tasarlanmıştır.Dolayısı ile veriler depolanmak durumundadır.Aksi halde processing süresi uzayan her işlem, hafıza üzerinde yeteri miktarda alan allocate edemez ve virtual disk(swap) üzerinde kendine yer edinmeye başlar.Zira bu durum, belleğe oranla yapılan işlemlerin daha da uzamasına sebep olacaktır.

Konuyu biraz daha netleştirmek adına, find komutu ile örnek bir execution işlemi yapalım.Amacımız bir dizinde bulunan tüm “.txt” uzantılı dosyaların ne kadar bir süre zarfında listeleneceğini tespit etmek olsun.Komut başına eklenen “time”, sadece ilgili işlemin ne kadar bir zaman diliminde tamamlandığını gösterecektir.

[root@x ~]# time find . -type f -name “*.txt” -exec ls -l {} \; > /dev/null

real    0m0.616s
user    0m0.044s
sys     0m0.095s

Aynı komut, ikinci defa çalıştırıldığında ciddi oranda processing süresinde azalma meydana geldiği detayları ile gözlemleniyor.

[root@x ~]# time find . -type f -name “*.txt” -exec ls -l {} \; > /dev/null

real    0m0.284s
user    0m0.039s
sys     0m0.087s

Not:

Time, linux üzerinde halihazırda bulunan bir komuttur. Temel işlevi; real,user ve sys(system)bazlı bir verinin ne kadar zaman diliminde read,execute veya write edildiğini belirtmektir.

[root@x ~]# ldd /usr/bin/time
        linux-vdso.so.1 =>  (0x00007fff6bb78000)
        libc.so.6 => /lib64/libc.so.6 (0x00000038ff400000)
        /lib64/ld-linux-x86-64.so.2 (0x00000038ff000000)

[root@x ~]# rpm -qi time
Name        : time                         Relocations: /usr
Version     : 1.7                               Vendor: CentOS
Release     : 27.2.2                        Build Date: Sat 24 May 2008 03:44:24 PM EEST
Install Date: Sat 19 Feb 2011 03:36:54 AM EET      Build Host: builder15.centos.org
Group       : Applications/System           Source RPM: time-1.7-27.2.2.src.rpm
Size        : 20321                            License: GPL
Signature   : DSA/SHA1, Sun 15 Jun 2008 05:04:20 PM EEST, Key ID a8a447dce8562897
Summary     : A GNU utility for monitoring a program’s use of system resources.
Description :
The GNU time utility runs another program, collects information about
the resources used by that program while it is running, and displays
the results.

Benzeri testleri, read ve/veya write processing yaparak da gözlemlemek mümkün.Özellikle çalıştırılacak veya işlenecek bir verinin zaman süreçlerini incelemede fazlasıyla işe yarayacaktır.

Share on Facebook

Toplam HTTP Bağlantı Sayısı

HTTP 80 üzerinden sağlanmış toplam bağlantı sayısını gösterir.

for http in `netstat -antp | awk ‘{if($4 ~/80/) print $0}’ | uniq | sort -k 5 | wc -l`
do

echo Total HTTP Connection: $http

done

Share on Facebook

İstenilen zaman dilimine ait logları listelemek.

messages.1 isimli dosyada “Jan 8″  ile başlayan tüm loglar, 3.kolonda bulunan time değerlerine göre sort edilir.

awk  ‘{if($1 ~/Jan/) if($2 ~/8/) print $0}’ messages.1 | sort -k 3 |more

Share on Facebook

Grep !

L ile başlayıp, ‘ux’ ile bitmiş tüm string değerleri ayırıp alt alta listeler.

grep -i ‘^L.*ux’ test.txt |  uniq

Share on Facebook