Mar 01 2006

calisan prosesleri vur kir parcala

Category: Fedora,Linux/Unix,debian,shellFatih Ekrem Genc @ 11:00 pm

Cokca kullandigim ve faydali olduklarina inandigim bir düzine komut icin bir makale buldum. Hizlidan sizler icin cevireyim dedim. Makalenin asli almancadir ve cevrilirken hacamat edilircesine kisaltilmistir.http://www.linux-user.de/ausgabe/2006/03/092-zubefehl/index.html

ps komutu ile bulundugunuz sistemdeki calisan proses hakkinda bilgi edinebilirsiniz. shellinize (bu kelimeyi kabuk demeye alisamadim) sadece ps komutunu verdiginizde aktuel shelliniz tarasindan calistirilmis olan prosesleri gözlemlersiniz. eger ps x komutunu verirseniz. Sizin tararfinizdan calistirilmis tüm procesleri gözlemlersiniz.
ps x
PID TTY STAT TIME COMMAND
7331 ? S 0:00 sshd: fgenc@pts/1
7332 pts/1 Ss 0:00 -bash
7334 pts/1 R+ 0:00 ps x

yukaridada oldugu gibi sadece ssh ile sisteme baglanmisin bash(kullandigim shell yada kabuk) dogal olarak calisiyor. birde enson ps x komutunu calistirmisiz iste.

ps ile tüm kullanicilarin calistirdigi procesleri görmek icin a yi ve bu procesleri kimlerin calistirdigini gözlemliyebilmek icin u parametresini verebiliriz.
yani ps aux

Asagidaki örnek satirda apache2 serveri www-data kullanicisi tarafindan calistirilmis. durumu S yani (sleep) uyku modunda. dikkat ederseniz ps aux komutunun durum satirinda R var yani (run) calisir durumda. Diger olasi modlar D ve z. D (died) ölmüs proces. z Zombie yasiyor ama geri bilgi yoluyamiyor allahlik mod diyebiliriz. :P

root 14710 0.0 0.1 2980 1120 ? Ss Feb26 0:00 /usr/bin/dirmngr –daemon –sh
lp 14923 0.0 0.1 2592 1028 ? Ss Feb26 0:00 /usr/sbin/lpd -s
www-data 16520 0.0 1.4 20860 12908 ? S Feb26 0:10 /usr/sbin/apache2 -k start -DSSL
root 7369 0.0 0.1 2704 924 pts/1 R+ 17:55 0:00 ps aux

top komutu direk hic bir secenek eklemeden direk shellinize verebilirsiniz. size bilgisayarinizdaki prozeslerin aktuell durumlarini anlik olarak (realtime )iletir.

lsof bu komut ile hangi procesin o an hangi dosyayla ugrastigini ögrenebilirsiniz. Hic bir parametre vermeden direk lsof komutunu shelle verirseniz. tüm proceslerin hangi dosyalarla ilgilendigini inceleyebilirsiniz. (dikkat: hic bitmeyen soncuz cikti Ctrl- C ile sonlandir)

beli bir procesin yada araci kimin kullandigini ögrenmek icin
lsof /usr/sbin/mysqld
yada
lsof /dev/hda
komutun ciktisi
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
syslogd 1570 root 2w REG 3,8 514558 278534 /var/log/auth.log
syslogd 1570 root 3w REG 3,8 120102 278533 /var/log/syslog
syslogd 1570 root 4w REG 3,8 107197 278536 /var/log/daemon.log

kill komutu ile calisan proceslere bir cok islem yaptirabilirsiniz. neler yapabileceginiz görebilmek icin kill -l komutunu shellinize verin. killin kabul ettigi tüm parametreler listelenecektir.

1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD
18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN
22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO
30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1
36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5
40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9
44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13
52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9
56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5
60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1
64) SIGRTMAX

seklinde bir liste ile karsilacasaksiniz.

killin varsayilan (default iste ya) parametresi 15dir
hic bir parametre vermeden kill akabinda direk durdurman istediginiz programin proces numarasini verirseniz. Proces kendindeyse yani akli basindaysa durur. durmazsa kaba kuvet kullanmani gerekebilir yani. kill -9 (öldür gitsin)
SIGHUP: konfiguration betiklerini yeniden oku.
SIGTERM akili uslu bir sekilde kendini sonlandir
SIGKILL her ne olursa olsun dur intehar et gibi bisey :)
SIGSTOP 2 rekat bekle
SIGCONT simdi kaldigin yerden devam et

bir test yapalim shellimize ps verelim
ps
PID TTY TIME CMD
7365 pts/1 00:00:00 su
7366 pts/1 00:00:00 bash
7408 pts/1 00:00:00 lsof
7409 pts/1 00:00:00 lsof
7435 pts/1 00:00:00 lsof

7407 PID sahip lsof sonlandiralim sonlanmaz ise kill -9 ile öldürelim
kill 7408 shelle verin

kill 7408
root@mail:~# ps
PID TTY TIME CMD
7365 pts/1 00:00:00 su
7366 pts/1 00:00:00 bash
7408 pts/1 00:00:00 lsof
7409 pts/1 00:00:00 lsof
7584 pts/1 00:00:00 ps
root@mail:~# kill -9 7408
[1] Died lsof

kill 7408 sonuc vermeyince kill -9 7408 ile tamaman öldürdüm.

birde killall komutunuz var eger PID numaralari ile ugrasmak istemiyorsaniz. killall tam sizlik.
Direk procesin ismini verebilirsiniz. yani killall lsof seklinde. varsayilan olarak 15 komutunu yolar. ekistradan procesi kazircasina öldürmek istiyorsaniz killall -9 [prozesin adi] seklinde kullanilir.

örnek:
root@mail:~# killall -9 lsof
[2] Getötet lsof
[3] Getötet lsof
[4] Getötet lsof
[5]- Getötet lsof
[6]+ Getötet lsof /dev/hda8
root@mail:~#

hay mahsallah!!! kökünü kuruttu :P (bu arada Getötet almancada died anlamina geliyor)
Umarim isinize yarar bir dokuman oldu. Hayirli calismalar

Leave a Reply