Linux Türevi Sistemlerde Süreç Yönetimi ( ps )

Merhabalar

Bu yazıda linux türevi sistemlerde çalışan ps komutunun kullanımına ve detaylarına değineceğim. Linux türevi sistemlerde çalışan ps komutu sistem üzerinde çalışan süreçleri görebilmenizi sağlar. Bunların arasından süreç kontrolü, süreç sorumlusu, süreç numarası, çalıştırılan komut, zaman, cpu, bellek gibi birçok bilgi görebilirsiniz.

NOT : Bu ps komutu /proc dizini içerisinden gerekli olan dosyaların içerisinden bilgileri alıp size çıktı olarak sunuyor.

Sistemde çalışan tüm süreçleri görebilmek için -e veya -A parametresi kullanılabilir.

root# ps -e
PID TTY TIME CMD
1  ? 00:00:01 systemd
2  ? 00:00:03 kthreadd
3  ? 00:00:03 ksoftirqd/0
5  ? 00:00:00 kworker/0:0H
7  ? 00:01:42 rcu_sched
8  ? 00:00:00 rcu_bh
9  ? 00:00:00 migration/0
10 ? 00:00:00 watchdog/0
11 ? 00:00:00 watchdog/1
12 ? 00:00:00 migration/1
13 ? 00:00:03 ksoftirqd/1
15 ? 00:00:00 kworker/1:0H
16 ? 00:00:00 watchdog/2
17 ? 00:00:00 migration/2
18 ? 00:00:51 ksoftirqd/2
20 ? 00:00:00 kworker/2:0H
21 ? 00:00:00 watchdog/3
22 ? 00:00:00 migration/3
23 ? 00:00:02 ksoftirqd/3
25 ? 00:00:00 sshd
...

Örneğin, bir PID ( Process ID ) numarasının üzerinde çalıştırdığı süreci görüntülemek isterseniz -p parametresi ile birlikte PID numarasını belirtebilirsiniz.

root# ps -p 25
PID TTY  TIME  CMD
25 pts/1 00:00:02 sshd

Örneğin, bir sürecin PID numarasını bulmak isterseniz ” grep ” komutunun yardımı ile aşağıdaki komut kullanılabilir. Aşağıdaki komut bütün süreçlere bakıcak ve süreçlerin içerisinde sshd kelimesi geçen süreçleri listeleyecektir. Aşağıda gördüğünüz gibi birçok süreç numarası var. Ben asıl süreç numarasını tespit etmek istiyorum o zaman ikinci komutu kullanarak tek süreç numarasını bulabilirim.

root# ps -e | grep sshd
850 ? 00:00:00 sshd
27509 ? 00:00:00 sshd
27510 ? 00:00:00 sshd
27512 ? 00:00:00 ssh
27513 ? 00:00:00 ssh
root# services ssh status
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled)
Active: active (running) since Fri 2015-06-12 08:16:35 EEST; 13h ago
Process: 2100 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
Main PID: 850 (sshd)
CGroup: /system.slice/ssh.service
├─ 850 /usr/sbin/sshd -D

Yukarıdaki örneğimizin aynısı sadece daha pratik bir komut. Aşağıdaki komutu kullanarak bir sürecin tek bir PID ( Process ID ) numarasını bulabilirsiniz.

root# pidof sshd
850
root# pidof 850
sshd

Sistem üzerinde çalışan süreçlerin hangi terminal üzerinde çalıştığını görmek isterseniz aşağıdaki komutu kullanabilirsiniz. Aşağıdaki t parametresini ps komutunun birçok parametresi ile birlikte kullanabilirsiniz.

root# ps -a t
PID  TTY  STAT TIME COMMAND
5847 pts/0 Ss 0:00 bash
5996 pts/1 S  0:00 su - root
6005 pts/1 S  0:00 sudo
14585 pts/0 S  0:00 su - root
14594 pts/3 S  0:00 su
27505 pts/2 S+ 0:00 ssh [email protected]
27508 pts/1 S+ 0:00 ssh localhost

Bir kullanıcının çalıştırdığı süreçleri görüntülemek isterseniz ps komutunun -u parametresini kullanabilirsiniz. Başka bir seçenek ise pgrep komutuda aynı işlevi görmektedir. Tabi ps komutu ile pgrep komutu aralarında avantajları ve dezavantajları bulunmaktadır.

root# ps -u root
PID TTY TIME CMD
1 ? 00:00:02 systemd
2 ? 00:00:00 kthreadd
3 ? 00:00:03 ksoftirqd/0
5 ? 00:00:00 kworker/0:0H
7 ? 00:01:52 rcu_sched
8 ? 00:00:00 rcu_bh
9 ? 00:00:00 migration/0
10 ? 00:00:00 watchdog/0
11 ? 00:00:00 watchdog/1
...
root# pgrep -lu root
1 systemd
2 kthreadd
3 ksoftirqd/0
5 kworker/0:0H
7 rcu_sched
8 rcu_bh
9 migration/0
10 watchdog/0
11 watchdog/1

Sistemde çalışan süreçlerin süreç numarasını ( PID ) öğrenmek istersek aşağıdaki komuttan faydalanabiliriz. Örneğin, pgrep chrome komutu ile chrome servisine ait süreç numalarına bakabiliriz.

root# pgrep chrome
2487
2498
2499
2501
2504
2523
2530
2555
2566
2976

Aşağıdaki komut yardımıyla çalışan süreçlerin farklı zamanlayıcı bilgilerini görebilirsiniz.

root# ps -a -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 14585 5847 0 80 0 - 16360 - pts/1 00:00:00 su
4 S 0 14594 14585 0 80 0 - 5923 - pts/0 00:00:00 bash
0 R 0 28140 14594 0 80 0 - 2670 - pts/3 00:00:00 ps
0 S 0 14564 6005 0 80 0 - 4214 -  pts/1 00:00:00 man

Birden fazla PID ( Process ID ) numarasına ait süreçleri görüntülemek isterseniz -p parametresini kullanabilirsiniz. Birden fazla PID numarası eklemek için PID numaralarının aralarına virgül bırakabilirsiniz.

root# ps -f -p 25023,2409,1072,847,15,1
UID PID PPID C STIME TTY TIME CMD
root 1   0  0  08:16 ? 00:00:02 /sbin/init
root 15  2  0  08:16 ? 00:00:00 [kworker/1:0H]
root 1072 1 0  08:16 ? 00:00:11 /usr/sbin/NetworkManager --no-daemon
root 847 1 0 08:16 ? 00:00:00 /usr/sbin/ModemManager
ali 2409 1  0  08:17 ? 00:00:08 nm-applet
ali 25023 2504 0 19:57 ? 00:00:01 /opt/google/chrome/chrome

Mesela, sistem süreçleri çalışırken hangi sürecin daha fazla cpu ve memory tükettiğini görmek isterseniz aşağıdaki komutu kullanabilirsiniz.

root# ps aux --sort=pcpu,+pmem

Herhangi bir PID numarasına ait sürecin detaylarını görüntülemek isterseniz aşağıdaki komut kullanılabilir.

root# ps -v -p 5842
PID  TTY  STAT TIME  MAJFL TRS DRS RSS %MEM COMMAND
5842 pts/0 Sl  50:08 1164  170 3509401 1016040 26.4 xfce4-terminal

Güvenlik için aşağıdaki komutlar süreçler ile ilgili birçok bilgi vermektedir. Aşağıdaki komutlara benzer komutları görmek için ps aracının man sayfasına bakabilirsiniz. Süreçler arasında dikkatinizi çeken ilginç bir süreç var ise google ‘da araştırma yaparak süreç hakkında daha fazla bilgi alabilirsiniz ve ona göre davranabilirsiniz.

1. ps -eo euser,ruser,suser,fuser,f,comm,tty,cpu,start

2. ps axZ

3. ps -eM

root# ps -eo euser,ruser,suser,fuser,f,comm,tty,cpu,start
EUSER RUSER SUSER FUSER F COMMAND TT CPU STARTED
ali ali ali ali  0 xfce4-terminal  ? - 09:04:07
ali ali ali ali  0 gnome-pty-helpe ? - 09:04:08
ali ali ali ali  0 bash pts/0 - 09:04:08
ali ali ali ali  1 chrome ? - 10:29:45
ali ali ali ali  0 vmware-tray ? - 10:43:23
ali ali ali ali  0 gvfsd-burn  ? - 11:24:16
ali ali ali ali  0 dconf-service ? - 11:24:17
root root root root  4 su   pts/0 - 13:53:04
root root root root  4 bash pts/0 - 13:53:09
ali ali ali ali 1 chrome ? - 13:54:49
root root root root 1 kworker/0:1 ? - 15:16:15
ali ali ali ali 1 chrome ? - 17:15:01
ali ali ali ali 1 chrome ? - 18:00:50
ali ali ali ali 0 bash pts/2 - 18:42:01
root root root root 1 kworker/1:0 ? - 18:54:15
ali ali ali ali 1 chrome ? - 19:00:02
ali ali ali ali 1 chrome ? - 19:25:55
ali ali ali ali 1 chrome ? - 19:34:20
root root root root 1 kworker/1:1 ? - 19:50:54
ali ali ali ali 0 mousepad ? - 20:36:18

Aşağıdaki komutu kullanarak en fazla memory,cpu kullanan süreçlerin süreç numarası, kullanıcı vb. birçok bilgiyi anlık olarak izleyebilirsiniz.

root# watch -n 1 'ps -e -o pid,uname,cmd,pmem,pcpu --sort=-pmem,-pcpu | head -15'
PID USER  CMD                       %MEM  %CPU
5842 root xfce4-terminal            26.6  6.3
2523 ali /opt/google/chrome/chrome - 5.9  3.8
26094 ali /opt/google/chrome/chrome - 5.5  21.3
2487 ali /opt/google/chrome/chrome - 5.1  8.0
2976 ali /opt/google/chrome/chrome - 5.0  1.8
25608 ali /opt/google/chrome/chrome - 5.0  8.0
27102 ali /opt/google/chrome/chrome - 3.3  1.0
5316 ali /opt/google/chrome/chrome - 2.9  1.5
23170 ali /opt/google/chrome/chrome - 2.8  0.1
26675 ali /opt/google/chrome/chrome - 2.6  0.2
26308 ali /opt/google/chrome/chrome - 2.6  0.1
5489 ali /opt/google/chrome/chrome - 2.5  1.2
26868 ali /opt/google/chrome/chrome - 2.5  0.2
27898 ali /opt/google/chrome/chrome - 2.5  0.4

Linux / Unix Sistemlerde Kill Komutu ile Süreçleri Öldürmek

kill-bill

Linux / Unix sistemlerde kill komutu durmuş ve duraklamış cevap vermeyen süreçler için kullanılmaktadır. Kill komutu ile süreçlere belirli sinyaller göndererek kapanlamalarını sağlayabilirsiniz. Eğer herhangi bir sinyal ifadesi verilmediyse varsayılan olarak SIGTERM sinyali kullanılır.

 

 

Bir süreç numarasını ( PID ) öldürmek için,

root# kill 2250

Birden fazla süreç numarasını öldürmek için,

root# kill 2250 9892 2590 5420

Bir süreci öldürmek için,

root# kill chrome

Özel olarak öldürmek istediğiniz bir süreç ailesi var ise aşağıdaki komut kullanılabilir. Bütün chrome süreçleri öldürmek için,

root# pkill chrome

Örneğin, Ali kullanıcısına ait kullanılan ssh sürecini öldürmek için aşağıdaki birinci komut kullanılabilir. İkinci komut ise ssh sürecine ait PID numarası ve sadece verilen PID numarasını öldürür.

root# kill -9 -u ali ssh
root# kill -9 -u ali 850

Bir süreci kill komutu ile öldüremezseniz -9 ( SIGKILL ) numarasını kullanarak daha öldürücü bir sinyal göndererek öldürebilirsiniz.

root# kill -9 ssh

Daha fazla bilgi için aşağıdaki komut kullanılabilir.

root# man ps

 

Tagged with: , , , , , , , , , , , , , , , , ,

Leave a Reply

Your email address will not be published. Required fields are marked *

*

8 − six =

Archives

Tweets