Linux Öğreniyorum Serisi 6
Linux’ta Süreç (Process) Yönetimi
Merhabalar,
Linux Öğreniyorum serimizin önceki makalelerinde Linux sistemlerinin temel yapısından ve güvenlik mekanizmalarından bahsettik. Hatırlayacak olursak:
Linux Dizin Hiyerarşisi ve Başlangıç Dosyaları – Dosya sisteminin mantığını ve kabuk başlatma dosyalarını inceledik.
Dosya ve Dizin İzinleri – Linux sisteminde şifreleme ve izin yapılarını detaylandırdık.
Özel İzinler (setuid, setgid, sticky bit) – Kullanıcılar arasında izinlerin nasıl kullanılacağını açıkladık.
ACL (Access Control List) – Daha spesifik izin düzenlemeleri yapmayı sağlayan ACL yapısını ele aldık.
SELinux – Linux sistemlerinde zorluğuyla bilinen SELinux güvenlik politikasını anlamlandırdık.
Bugün ise, Linux’ta Süreç Yönetimi ve Görev Planlama konusuna odaklanacağz. Linux sistemleri üzerinde çalışan süreçlerin nasıl yönetildiğini, önceliklerini belirlemeyi ve zamanlanmış görevlerin nasıl planlandığını adım adım inceleyeceğiz. Her aşamada test ortamında çalıştırılacak örnekler ve detaylı analizler bulunacak.
Süreçleri (Çalışan Programları) Listeleme ve Takip Etme
Bir Linux sisteminde birden fazla süreç (proses) aynı anda çalışmaktadır. ps komutu, şu an çalışan süreçleri listelemek için kullanılır. Sistemdeki tüm süreçleri, bağlı oldukları kullanıcı fark etmeksizin listelemek için ps aux veya ps -ef kullanılır.
[asiye@instance-20241019-1038 ~]$
[asiye@instance-20241019-1038 ~]$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.2 0.2 108076 16512 ? Ss 07:20 0:01 /usr/lib/systemd/systemd –switched-root –system –deserialize 2
root 2 0.0 0.0 0 0 ? S 07:20 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 07:20 0:00 [pool_workqueue_]
root 4 0.0 0.0 0 0 ? I< 07:20 0:00 [kworker/R-rcu_g]
root 5 0.0 0.0 0 0 ? I< 07:20 0:00 [kworker/R-rcu_p]
root 6 0.0 0.0 0 0 ? I< 07:20 0:00 [kworker/R-slub_]
root 7 0.0 0.0 0 0 ? I< 07:20 0:00 [kworker/R-netns]
root 8 0.0 0.0 0 0 ? I 07:20 0:00 [kworker/0:0-events]
root 9 0.0 0.0 0 0 ? I< 07:20 0:00 [kworker/0:0H-events_highpri]
root 10 0.0 0.0 0 0 ? I 07:20 0:00 [kworker/u8:0-events_unbound]
root 11 0.0 0.0 0 0 ? I< 07:20 0:00 [kworker/R-mm_pe]
root 12 0.0 0.0 0 0 ? I 07:20 0:00 [kworker/u8:1-events_unbound]
root 13 0.0 0.0 0 0 ? I 07:20 0:00 [rcu_tasks_kthre]
root 14 0.0 0.0 0 0 ? I 07:20 0:00 [rcu_tasks_rude_]
root 15 0.0 0.0 0 0 ? I 07:20 0:00 [rcu_tasks_trace]
root 16 0.0 0.0 0 0 ? S 07:20 0:00 [ksoftirqd/0]
root 17 0.0 0.0 0 0 ? S< 07:20 0:00 [pr/ttyS0]
root 18 0.0 0.0 0 0 ? I 07:20 0:00 [rcu_preempt]
root 19 0.0 0.0 0 0 ? S 07:20 0:00 [migration/0]
root 20 0.0 0.0 0 0 ? S 07:20 0:00 [idle_inject/0]
root 22 0.0 0.0 0 0 ? S 07:20 0:00 [cpuhp/0]
root 23 0.0 0.0 0 0 ? S 07:20 0:00 [cpuhp/1]
…
[asiye@instance-20241019-1038 ~]$
Burada PID sürecin kimliğini, %CPU ve %MEM sürecin kaynak tüketimini, COMMAND ise çalışan programı belirtir. Komut çıktısında olan sütun isimlerinin ne anlama geldiğini aşağıya ekledim.
USER → Süreci çalıştıran kullanıcı.
PID → Sürecin benzersiz kimlik numarası.
%CPU → Sürecin CPU kullanım yüzdesi.
%MEM → Sürecin RAM kullanım yüzdesi.
VSZ → Sürecin sanal bellek kullanımı (kilobayt cinsinden).
RSS → Sürecin fiziksel RAM kullanım miktarı.
TTY → Sürecin bağlı olduğu terminal (eğer yoksa ? işareti görülür).
STAT → Sürecin durumu:
R → Çalışıyor (Running)
S → Uyuyor (Sleeping)
D → Kesintiye uğramayan uyku (Uninterruptible Sleep)
Z → Zombi süreç (Zombie)
T → Durdurulmuş (Stopped)
START → Sürecin başlatılma zamanı.
TIME → Sürecin toplam CPU süresi.
COMMAND → Çalıştırılan komut.
“ps -ef” komutuyla UNIX stilinde bir çıktı alabiliriz.
[asiye@instance-20241019-1038 ~]$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 07:20 ? 00:00:02 /usr/lib/systemd/systemd –switched-root –system –deserialize 28
root 2 0 0 07:20 ? 00:00:00 [kthreadd]
root 3 2 0 07:20 ? 00:00:00 [pool_workqueue_]
root 4 2 0 07:20 ? 00:00:00 [kworker/R-rcu_g]
root 5 2 0 07:20 ? 00:00:00 [kworker/R-rcu_p]
root 6 2 0 07:20 ? 00:00:00 [kworker/R-slub_]
root 7 2 0 07:20 ? 00:00:00 [kworker/R-netns]
root 9 2 0 07:20 ? 00:00:00 [kworker/0:0H-events_highpri]
root 11 2 0 07:20 ? 00:00:00 [kworker/R-mm_pe]
root 12 2 0 07:20 ? 00:00:00 [kworker/u8:1-events_unbound]
root 13 2 0 07:20 ? 00:00:00 [rcu_tasks_kthre]
root 14 2 0 07:20 ? 00:00:00 [rcu_tasks_rude_]
root 15 2 0 07:20 ? 00:00:00 [rcu_tasks_trace]
root 16 2 0 07:20 ? 00:00:00 [ksoftirqd/0]
root 17 2 0 07:20 ? 00:00:00 [pr/ttyS0]
root 18 2 0 07:20 ? 00:00:00 [rcu_preempt]
root 19 2 0 07:20 ? 00:00:00 [migration/0]
root 20 2 0 07:20 ? 00:00:00 [idle_inject/0]
root 22 2 0 07:20 ? 00:00:00 [cpuhp/0]
root 23 2 0 07:20 ? 00:00:00 [cpuhp/1]
root 24 2 0 07:20 ? 00:00:00 [idle_inject/1]
root 25 2 0 07:20 ? 00:00:00 [migration/1]
root 26 2 0 07:20 ? 00:00:00 [ksoftirqd/1]
root 28 2 0 07:20 ? 00:00:00 [kworker/1:0H-events_highpri]
root 30 2 0 07:20 ? 00:00:00 [kdevtmpfs]
root 31 2 0 07:20 ? 00:00:00 [kworker/R-inet_]
root 32 2 0 07:20 ? 00:00:00 [kauditd]
root 33 2 0 07:20 ? 00:00:00 [khungtaskd]
Buradaki farklar şunlardır.
UID → Kullanıcı kimliği (User ID).
PPID → Ana sürecin kimlik numarası (Parent Process ID).
C → CPU kullanım yüzdesi.
ps aux BSD formatında, ps -ef ise UNIX formatında çıktı verir.
Belli bir kullanıcıya ait süreçleri listelemek için “ps -u user_name” kullanılır.
[asiye@instance-20241019-1038 ~]$ ps -u asiye | more
PID TTY TIME CMD
3210 pts/0 00:00:00 bash
3842 pts/0 00:00:00 ps
3843 pts/0 00:00:00 more
[asiye@instance-20241019-1038 ~]$
ps komutu, Linux’taki süreçlerin o anki durumunu görüntülemek için kullanılır. Ancak ps çıktısının dinamik olmadığını unutmayalım. Yani sadece komutun çalıştırıldığı anda var olan süreçleri gösterir.
Belirli bir sürecin sistemde olup olmadığını görmek için PID kullanabiliriz, “ps -p 3210” gibi.
[asiye@instance-20241019-1038 ~]$ ps -p 3210
PID TTY TIME CMD
3210 pts/0 00:00:00 bash
[asiye@instance-20241019-1038 ~]$
[asiye@instance-20241019-1038 ~]$ ps aux | grep chron
chrony 1063 0.0 0.0 84596 2852 ? S 07:21 0:00 /usr/sbin/chronyd -F 2
asiye 6641 0.0 0.0 3876 1920 pts/0 S+ 07:56 0:00 grep –color=auto chron
[asiye@instance-20241019-1038 ~]$ ps aux | grep ‘[c]hron’
chrony 1063 0.0 0.0 84596 2852 ? S 07:21 0:00 /usr/sbin/chronyd -F 2
[asiye@instance-20241019-1038 ~]$
Komut satırında ps aux | grep chron komutunu çalıştırdığımızda, sistemde çalışan chron kelimesini içeren tüm süreçler listelenir. Ancak bu komut çalıştırıldığında, grep komutu da kendisini bir süreç olarak çalıştırdığı için çıktıya dahil edilir. Örneğin, aşağıdaki satırda görüldüğü gibi grep süreci de listelenmiştir:
asiye 6641 0.0 0.0 3876 1920 pts/0 S+ 07:56 0:00 grep –color=auto chron
Bu durumu önlemek ve sadece gerçek chron süreçlerini görmek için grep ‘[c]hron’ kullanılır. Buradaki köşeli parantez grep’in kendisini filtrelemesini engellemek için kullanılır. ‘[c]hron’ ifadesi, kabuk tarafından olduğu gibi algılanır ve grep sürecinin kendisi arama sonuçlarında görünmez. Böylece yalnızca chronyd süreci listelenir ve gereksiz satırlar çıktıda yer almaz. Bu yöntem, pgrep komutu gibi belirli bir süreci bulmak için grep kullanıldığında yaygın olarak tercih edilir.
Süreçlerin hiyerarşik ilişkisini (ebeveyn-çocuk ilişkisini) görmek için, “ps -ef –forest” komutu kullanılır.
[asiye@instance-20241019-1038 ~]$ ps -ef –forest
UID PID PPID C STIME TTY TIME CMD
root 2 0 0 07:20 ? 00:00:00 [kthreadd]
root 3 2 0 07:20 ? 00:00:00 \_ [pool_workqueue_]
root 4 2 0 07:20 ? 00:00:00 \_ [kworker/R-rcu_g]
root 5 2 0 07:20 ? 00:00:00 \_ [kworker/R-rcu_p]
root 6 2 0 07:20 ? 00:00:00 \_ [kworker/R-slub_]
root 7 2 0 07:20 ? 00:00:00 \_ [kworker/R-netns]
root 9 2 0 07:20 ? 00:00:00 \_ [kworker/0:0H-events_highpri]
root 11 2 0 07:20 ? 00:00:00 \_ [kworker/R-mm_pe]
root 13 2 0 07:20 ? 00:00:00 \_ [rcu_tasks_kthre]
root 14 2 0 07:20 ? 00:00:00 \_ [rcu_tasks_rude_]
root 15 2 0 07:20 ? 00:00:00 \_ [rcu_tasks_trace]
root 16 2 0 07:20 ? 00:00:00 \_ [ksoftirqd/0]
root 17 2 0 07:20 ? 00:00:00 \_ [pr/ttyS0]
root 18 2 0 07:20 ? 00:00:00 \_ [rcu_preempt]
root 19 2 0 07:20 ? 00:00:00 \_ [migration/0]
root 20 2 0 07:20 ? 00:00:00 \_ [idle_inject/0]
root 22 2 0 07:20 ? 00:00:00 \_ [cpuhp/0]
root 23 2 0 07:20 ? 00:00:00 \_ [cpuhp/1]
root 24 2 0 07:20 ? 00:00:00 \_ [idle_inject/1]
root 25 2 0 07:20 ? 00:00:00 \_ [migration/1]
[asiye@instance-20241019-1038 ~]$
Hangi sürecin en fazla CPU kullandığını görmek için, “ps aux –sort=-%cpu | head -10” komutunu kullanabiliriz.
[asiye@instance-20241019-1038 ~]$ ps aux –sort=-%cpu | head -10
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
setroub+ 1500 3.8 1.2 316488 96136 ? SNsl 07:21 1:34 /usr/bin/python3 -Es /usr/sbin/setroubleshootd -f
mongod 1245 0.3 1.6 2579812 130560 ? Ssl 07:21 0:07 /usr/bin/mongod -f /etc/mongod.conf
root 1056 0.2 1.4 323792 117596 ? Ssl 07:21 0:05 /usr/bin/python3 /usr/lib/python3.9/site-packages/oci_utils/impl/ocid_main.py –no-daemon
root 1 0.1 0.2 108076 16512 ? Ss 07:20 0:02 /usr/lib/systemd/systemd –switched-root –system –deserialize 28
dbus 1050 0.1 0.0 5152 2816 ? S 07:21 0:03 dbus-broker –log 4 –controller 9 –machine-id 01f188662cc64708a3195a2288505d84 –max-bytes 536870912 –max-fds 4096 –max-matches 131072 –audit
root 1611 0.1 0.7 210912 62616 ? Ssl 07:21 0:03 /usr/bin/python3 -Es /usr/share/setroubleshoot/SetroubleshootPrivileged.py
root 2 0.0 0.0 0 0 ? S 07:20 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 07:20 0:00 [pool_workqueue_]
root 4 0.0 0.0 0 0 ? I< 07:20 0:00 [kworker/R-rcu_g]
[asiye@instance-20241019-1038 ~]$
Hangi sürecin en fazla bellek kullandığını görmek için, “ps aux –sort=-%mem | head -10” komutunu kullanabiliriz.
[asiye@instance-20241019-1038 ~]$ ps aux –sort=-%mem | head -10
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
mongod 1245 0.3 1.6 2579812 130560 ? Ssl 07:21 0:08 /usr/bin/mongod -f /etc/mongod.conf
root 1056 0.2 1.4 323792 117596 ? Ssl 07:21 0:05 /usr/bin/python3 /usr/lib/python3.9/site-packages/oci_utils/impl/ocid_main.py –no-daemon
setroub+ 1500 3.8 1.2 316488 96136 ? SNsl 07:21 1:36 /usr/bin/python3 -Es /usr/sbin/setroubleshootd -f
root 1611 0.1 0.7 211044 62872 ? Ssl 07:21 0:03 /usr/bin/python3 -Es /usr/share/setroubleshoot/SetroubleshootPrivileged.py
root 1054 0.0 0.5 125928 40052 ? Ssl 07:21 0:00 /usr/bin/python3 -s /usr/sbin/firewalld –nofork –nopid
polkitd 1125 0.0 0.3 2579416 24500 ? Ssl 07:21 0:01 /usr/lib/polkit-1/polkitd –no-debug
root 1117 0.0 0.2 256500 19968 ? Ssl 07:21 0:00 /usr/sbin/NetworkManager –no-daemon
root 1 0.1 0.2 108076 16512 ? Ss 07:20 0:02 /usr/lib/systemd/systemd –switched-root –system –deserialize 28
root 927 0.0 0.1 27804 15232 ? Ss 07:20 0:01 /usr/lib/systemd/systemd-journald
[asiye@instance-20241019-1038 ~]$
Zombi süreçleri bulmak için, “ps aux | awk ‘{ if ($8 == “Z”) print $2 }’” komutunu kullanabiliriz.
[asiye@instance-20241019-1038 ~]$ ps aux | awk ‘{ if ($8 == “Z”) print $2 }’
[asiye@instance-20241019-1038 ~]$
ps komutu süreçleri statik olarak görüntülemek için kullanılır.
ps aux tüm süreçleri listeler.
ps -ef UNIX formatında listeleme yapar.
grep ile filtreleme belirli süreçleri izlemeye yardımcı olur.
Hiyerarşik süreç ilişkileri için ps -ef –forest kullanılır.
Eğer ps komutunun çıktısını belirli aralıklarla yenileyerek görmek istiyorsanız, watch komutunu kullanabilirsiniz, “watch -n 2 “ps aux –sort=-%cpu | head -10″”.
Every 2.0s: ps aux –sort=-%cpu | head -10 instance-20241019-1038: Sun Mar 2 08:09:45 2025
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
setroub+ 1500 3.8 1.2 316488 96136 ? SNsl 07:21 1:53 /usr/bin/python3 -Es /usr/sbin/setroubleshootd -f
mongod 1245 0.3 1.6 2582788 130944 ? Ssl 07:21 0:09 /usr/bin/mongod -f /etc/mongod.conf
root 1056 0.2 1.4 323792 117596 ? Ssl 07:21 0:05 /usr/bin/python3 /usr/lib/python3.9/site-packages/oci_utils/impl/
root 1 0.1 0.2 108076 16512 ? Ss 07:20 0:03 /usr/lib/systemd/systemd –switched-root –system –deserialize 2
dbus 1050 0.1 0.0 5152 2816 ? S 07:21 0:03 dbus-broker –log 4 –controller 9 –machine-id 01f188662cc64708a
root 1611 0.1 0.8 212100 64792 ? Ssl 07:21 0:04 /usr/bin/python3 -Es /usr/share/setroubleshoot/SetroubleshootPriv
root 2 0.0 0.0 0 0 ? S 07:20 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 07:20 0:00 [pool_workqueue_]
root 4 0.0 0.0 0 0 ? I< 07:20 0:00 [kworker/R-rcu_g]
Bir betik içinde ps komutunu sürekli çalıştırmak için while döngüsü kullanılabilir. Her 2 saniyede bir en çok CPU tüketen süreçleri listeler. Ekranı temizleyerek sadece güncel süreci gösterir.
[asiye@instance-20241019-1038 ~]$ while true; do ps aux –sort=-%cpu | head -10; sleep 2; clear; done
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
setroub+ 1500 3.8 1.2 316488 96136 ? SNsl 07:21 2:04 /usr/bin/python3 -Es /usr/sbin/setroubleshootd -f
mongod 1245 0.3 1.6 2582788 131072 ? Ssl 07:21 0:10 /usr/bin/mongod -f /etc/mongod.conf
dbus 1050 0.1 0.0 5152 2816 ? S 07:21 0:03 dbus-broker –log 4 –controller 9 –machine-id 01f188662cc64708a3195a2288505d84 –max-bytes 536870912 –max-fds 4096 –max-matches 131072 –audit
root 1056 0.1 1.4 323792 117596 ? Ssl 07:21 0:06 /usr/bin/python3 /usr/lib/python3.9/site-packages/oci_utils/impl/ocid_main.py –no-daemon
root 1611 0.1 0.8 212628 66072 ? Ssl 07:21 0:04 /usr/bin/python3 -Es /usr/share/setroubleshoot/SetroubleshootPrivileged.py
root 1 0.0 0.2 108076 16512 ? Ss 07:20 0:03 /usr/lib/systemd/systemd –switched-root –system –deserialize 28
root 2 0.0 0.0 0 0 ? S 07:20 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 07:20 0:00 [pool_workqueue_]
root 4 0.0 0.0 0 0 ? I< 07:20 0:00 [kworker/R-rcu_g]
Linux sistemlerinde çalışan süreçleri dinamik olarak izlemek için top ve htop komutları kullanılır. ps komutunun aksine, top ve htop süreçlerin gerçek zamanlı olarak güncellenmesini sağlar. Böylece, hangi süreçlerin CPU ve RAM’i en fazla tükettiğini, sistem yükünün nasıl değiştiğini anlık olarak görebiliriz.
[asiye@instance-20241019-1038 ~]$ top
top – 08:24:21 up 1:03, 1 user, load average: 0.00, 0.03, 0.00
Tasks: 133 total, 1 running, 132 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.8 sy, 1.3 ni, 97.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 7684.6 total, 6684.1 free, 587.7 used, 528.8 buff/cache
MiB Swap: 8192.0 total, 8192.0 free, 0.0 used. 7096.9 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1500 setroub+ 25 5 316488 96264 19968 S 3.7 1.2 2:27.47 setroubleshootd
1245 mongod 20 0 2582788 131200 64256 S 0.3 1.7 0:11.94 mongod
2755 rocky 20 0 20672 7248 5120 S 0.3 0.1 0:00.10 sshd
1 root 20 0 108076 16512 11012 S 0.0 0.2 0:03.47 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.00 pool_workqueue_
4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/R-rcu_g
5 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/R-rcu_p
6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/R-slub_
7 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/R-netns
9 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-events_highpri
11 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/R-mm_pe
13 root 20 0 0 0 0 I 0.0 0.0 0:00.00 rcu_tasks_kthre
14 root 20 0 0 0 0 I 0.0 0.0 0:00.00 rcu_tasks_rude_
15 root 20 0 0 0 0 I 0.0 0.0 0:00.00 rcu_tasks_trace
16 root 20 0 0 0 0 S 0.0 0.0 0:00.08 ksoftirqd/0
17 root 0 -20 0 0 0 S 0.0 0.0 0:00.55 pr/ttyS0
18 root 20 0 0 0 0 I 0.0 0.0 0:00.78 rcu_preempt
19 root rt 0 0 0 0 S 0.0 0.0 0:00.01 migration/0
20 root -51 0 0 0 0 S 0.0 0.0 0:00.00 idle_inject/0
22 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/0
23 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/1
24 root -51 0 0 0 0 S 0.0 0.0 0:00.00 idle_inject/1
25 root rt 0 0 0 0 S 0.0 0.0 0:00.12 migration/1
26 root 20 0 0 0 0 S 0.0 0.0 0:00.09 ksoftirqd/1
28 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/1:0H-events_highpri
30 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
top çıktısındaki ana alanları aşağıdaki şekilde sıralayabiliriz.
Tasks: Çalışan süreçlerin toplam sayısını, aktif, uyuyan ve zombi süreçleri gösterir.
%CPU(s): CPU kullanımını yüzdesel olarak gösterir.
us (User): Kullanıcı süreçlerinin CPU kullanımı.
sy (System): Çekirdek seviyesinde çalışan süreçlerin kullanımı.
id (Idle): Kullanılmayan CPU yüzdesi.
Memory: RAM ve Swap bellek kullanım bilgilerini içerir.
Sütun Açıklamaları:
PID: Sürecin kimlik numarası.
USER: Süreci başlatan kullanıcı.
PR (Priority): Sürecin önceliği.
NI (Nice Value): Sürecin nice değeri (önceliğini artırıp azaltmak için kullanılır).
VIRT (Virtual Memory): Sanal bellek kullanımı.
RES (Resident Memory): Fiziksel RAM kullanımı.
%CPU: CPU kullanım yüzdesi.
%MEM: Bellek kullanım yüzdesi.
COMMAND: Çalıştırılan komut adı.
top komutunda hangi tuşları kullanabiliriz?
q: Çıkış yapar.
k: Bir süreci sonlandırır (PID girmeniz gerekir).
r: Bir sürecin nice değerini değiştirir.
M: Süreçleri bellek kullanımına göre sıralar.
P: Süreçleri CPU kullanımına göre sıralar.
htop, top komutunun daha gelişmiş ve etkileşimli bir versiyonudur. Renkli bir arayüze sahiptir ve süreçleri daha iyi yönetmek için ek işlevler sunar. htop, genellikle varsayılan olarak yüklü gelmez, bu yüzden yüklememiz gerekir.
[asiye@instance-20241019-1038 ~]$ htop
-bash: htop: command not found
[asiye@instance-20241019-1038 ~]$
Rocky Linux, RHEL tabanlı olduğu için htop paketi EPEL (Extra Packages for Enterprise Linux) deposunda bulunur. İlk olarak, EPEL deposunu etkinleştirmeliyiz.
[asiye@instance-20241019-1038 ~]$ sudo dnf install epel-release -y
Last metadata expiration check: 0:26:17 ago on Sun Mar 2 08:04:57 2025.
Dependencies resolved.
====================================================================================================================================
Package Architecture Version Repository Size
====================================================================================================================================
Installing:
epel-release noarch 9-7.el9 extras 19 k
Transaction Summary
====================================================================================================================================
Install 1 Package
Total download size: 19 k
Installed size: 26 k
Downloading Packages:
epel-release-9-7.el9.noarch.rpm 264 kB/s | 19 kB 00:00
————————————————————————————————————————————
Total 72 kB/s | 19 kB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : epel-release-9-7.el9.noarch 1/1
Running scriptlet: epel-release-9-7.el9.noarch 1/1
Many EPEL packages require the CodeReady Builder (CRB) repository.
It is recommended that you run /usr/bin/crb enable to enable the CRB repository.
Verifying : epel-release-9-7.el9.noarch 1/1
Installed:
epel-release-9-7.el9.noarch
Complete!
[asiye@instance-20241019-1038 ~]$
EPEL deposu etkinleştirildikten sonra htop’u yükleyebiliriz.
[asiye@instance-20241019-1038 ~]$ sudo dnf install htop -y
Extra Packages for Enterprise Linux 9 – x86_64 26 MB/s | 23 MB 00:00
Extra Packages for Enterprise Linux 9 openh264 (From Cisco) – x86_64 2.2 kB/s | 2.5 kB 00:01
Dependencies resolved.
====================================================================================================================================
Package Architecture Version Repository Size
====================================================================================================================================
Installing:
htop x86_64 3.3.0-1.el9 epel 198 k
Installing dependencies:
hwloc-libs x86_64 2.4.1-5.el9 baseos 2.1 M
Transaction Summary
====================================================================================================================================
Install 2 Packages
Total download size: 2.3 M
Installed size: 3.5 M
Downloading Packages:
(1/2): hwloc-libs-2.4.1-5.el9.x86_64.rpm 9.0 MB/s | 2.1 MB 00:00
(2/2): htop-3.3.0-1.el9.x86_64.rpm 179 kB/s | 198 kB 00:01
————————————————————————————————————————————
Total 1.3 MB/s | 2.3 MB 00:01
Extra Packages for Enterprise Linux 9 – x86_64 1.6 MB/s | 1.6 kB 00:00
Importing GPG key 0x3228467C:
Userid : “Fedora (epel9) <epel@fedoraproject.org>”
Fingerprint: FF8A D134 4597 106E CE81 3B91 8A38 72BF 3228 467C
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-9
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : hwloc-libs-2.4.1-5.el9.x86_64 1/2
Installing : htop-3.3.0-1.el9.x86_64 2/2
Running scriptlet: htop-3.3.0-1.el9.x86_64 2/2
Verifying : htop-3.3.0-1.el9.x86_64 1/2
Verifying : hwloc-libs-2.4.1-5.el9.x86_64 2/2
Installed:
htop-3.3.0-1.el9.x86_64 hwloc-libs-2.4.1-5.el9.x86_64
Complete!
[asiye@instance-20241019-1038 ~]$
Aşağıda olan komutla kurulumu doğruladık.
[asiye@instance-20241019-1038 ~]$ rpm -q htop
htop-3.3.0-1.el9.x86_64
[asiye@instance-20241019-1038 ~]$
“htop” komutunu yükledikten sonra aşağıdaki gibi süslü ekran geliyor.

htop Avantajları:
Renkli ve daha okunabilir bir arayüz.
Farenizi kullanarak süreçleri yönetebilirsiniz.
Süreçleri ağaç yapısında gösterebilir.
Filtreleme ve sıralama seçenekleri daha güçlüdür.
htop Kullanımı:
F5: Süreçleri ağaç yapısında gösterir.
F6: Sıralama kriterini değiştirir (CPU, bellek, vs.).
F9: Süreç sonlandırma ekranını açar.
F10: Programdan çıkar.
“top” komutu, süreçleri gerçek zamanlı olarak izlemek için güçlü bir araçtır. “htop” ise daha gelişmiş bir arayüze sahip olup süreçleri yönetmeyi kolaylaştırır. “top” ve “htop” ile sistem performansını anlık olarak gözlemleyebilir, CPU veya bellek tüketen süreçleri hızlıca tespit edebiliriz.
Süreç yönetimi, Linux sistemlerinde performans takibi ve sistem stabilitesi için kritik bir beceridir. ps, top ve htop gibi komutlarla hangi süreçlerin sistem kaynaklarını tükettiğini analiz edebilir, gereksiz veya sorun çıkaran süreçleri sonlandırabilir ve sisteminizin en verimli şekilde çalışmasını sağlayabilirsiniz.
Bir sonraki makalede, Linux’ta Zamanlanmış Görevler ve Otomasyon konusunu ele alacağız.
Sarav Asiye Yiğit ***** 2 Mart 2025






Yorumunuzu Bırakın