8 - Süreçler
2025
Süreç (Process): Belleğe yüklenmiş ve işlemcide (CPU) yürütülmekte olan bir program örneğidir. Çalışan bir programın bellekteki aktif temsilidir.
Program vs. Süreç:
/usr/bin/bash
).Bir Sürecin İçeriği:
malloc
).pstree
).systemd
(PID: 1, PPID: 0 - çekirdek).systemd
, diğer sistem servislerini ve kullanıcı oturumlarını başlatır.ps
pstree
top
/ htop
pgrep
/ pidof
kill
/ pkill
/ killall
&
, jobs
, fg
, bg
nohup
nice
/ renice
xkill
systemctl
ps
: Mevcut kabuk oturumundaki süreçleri gösterir.-f
, -l
) ve PPID-f
(full format) veya -l
(long format): UID, PPID, C (CPU%), STIME gibi ek bilgiler sunar.cezmi@ubuntu:~$ ps -f
UID PID PPID C STIME TTY TIME CMD
cezmi 1969 1960 0 10:44 pts/0 00:00:00 bash
cezmi 3105 1969 0 11:45 pts/0 00:00:00 ps -f
ps -f
(PID 3105) sürecinin ebeveyni bash
(PPID 1969).aux
)-
kullanılmaz).# BSD Örneği (İlk 5 satır)
cezmi@ubuntu:~$ ps aux | head -n 5
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.3 0.7 175120 11200 ? Ss 10:42 0:01 /sbin/init splash
root 2 0.0 0.0 0 0 ? S 10:42 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I< 10:42 0:00 [rcu_gp]
root 4 0.0 0.0 0 0 ? I< 10:42 0:00 [rcu_par_gp]
-ef
)-
kullanılır).# System V Örneği (İlk 5 satır)
cezmi@ubuntu:~$ ps -ef | head -n 5
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 10:42 ? 00:00:01 /sbin/init splash
root 2 0 0 10:42 ? 00:00:00 [kthreadd]
root 3 2 0 10:42 ? 00:00:00 [rcu_gp]
root 4 2 0 10:42 ? 00:00:00 [rcu_par_gp]
aux
ve -ef
benzer bilgileri farklı formatlarda sunar. İkisi de yaygındır.--sort
)ps aux
veya ps -ef
çıktısını belirli bir alana göre sıralar.-
: Azalan sıra (en yüksek üstte).+
veya yok: Artan sıra (en düşük üstte).-u
)-u <kullanıcı_adı>
: Sadece belirtilen kullanıcıya ait süreçleri listeler.-p
)-p <PID1>,<PID2>,...
: Belirtilen PID veya PID’lere ait bilgileri gösterir.grep
)ps
çıktısını |
(pipe) ile grep
’e yönlendirerek filtreleme yapılır.# İçinde "ssh" geçen süreçleri bul:
cezmi@ubuntu:~$ ps aux | grep "ssh"
root 1010 0.0 0.1 10568 3456 ? Ss 10:43 0:00 /usr/sbin/sshd -D
cezmi 1515 0.0 0.3 15680 6144 ? Ss 10:44 0:00 /usr/bin/ssh-agent ..
cezmi 3502 0.0 0.0 6432 768 pts/0 S+ 11:55 0:00 grep --color=auto ssh
grep
komutunun kendisi de sonuçlarda çıkabilir. (pgrep
daha temiz sonuç verir).-p
: PID numaralarını da gösterir.-a
: Komut satırı argümanlarını da gösterir.cezmi@ubuntu:~$ pstree -p | head -n 10 # Örnek çıktı başı
systemd(1)─┬─ModemManager(860)─┬─{ModemManager}(875)
│ └─{ModemManager}(876)
├─NetworkManager(870)─┬─{NetworkManager}(910)
│ └─{NetworkManager}(911)
├─accounts-daemon(880)─┬─{accounts-daemon}(905)
│ └─{accounts-daemon}(908)
├─acpid(881)
├─agetty(1110)
├─anacron(883)
├─atd(885)
k
(kill), r
(renice), h
(yardım), q
(çıkış).# 'top' komutunun tipik çıktısının üst kısmı:
top - 12:05:10 up 1:23, 1 user, load average: 0.15, 0.10, 0.11
Tasks: 210 total, 1 running, 209 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.1 us, 1.0 sy, 0.0 ni, 96.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 1985.7 total, 750.1 free, 820.6 used, 415.0 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 980.5 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1527 cezmi 20 0 3512400 345120 83500 S 5.0 17.4 2:10.55 gnome-shell
1319 cezmi 20 0 260100 36200 17100 S 2.5 1.8 0:45.30 Xorg
3650 cezmi 20 0 15000 3800 3100 R 1.0 0.2 0:00.05 top
...
İlk 5 Satır:
top
satırı: Saat, uptime
, kullanıcı sayısı, yük ortalamaları (1, 5, 15 dk).Tasks
satırı: Toplam süreç sayısı ve durumlarına göre dağılım (running, sleeping, stopped, zombie).%Cpu(s)
satırı: CPU kullanımının dökümü (us: user, sy: system, ni: nice, id: idle, wa: wait…).MiB Mem
satırı: Fiziksel Bellek (RAM) kullanımı (total, free, used, buff/cache).MiB Swap
satırı: Takas Alanı (Swap) kullanımı (total, free, used, avail Mem).Süreç Listesi Sütunları (Yaygın Olanlar):
ps
veya top
/htop
çıktısındaki STAT veya S sütunu sürecin durumunu gösterir:
R
(Running/Runnable): Çalışıyor veya CPU sırası bekliyor.S
(Interruptible Sleep): Bir olayı bekliyor (G/Ç, sinyal vb). Kesilebilir. (En yaygın durum).D
(Uninterruptible Sleep): Genellikle G/Ç bekleyen, sinyalle kesilemeyen uyku. (Dikkatli olun!).Z
(Zombie / Defunct): Süreç sonlanmış, ancak ebeveyni çıkış kodunu okumamış. Kaynak kullanmaz, PID tablosunda yer kaplar.T
(Stopped): Bir sinyal ile (Ctrl+Z
-> SIGTSTP
, SIGSTOP
) durdurulmuş.I
(Idle): Çekirdek thread’leri için kullanılır (nadiren görülür).Zombie Süreç: Sonlanmış ama ebeveyni wait()
sistem çağrısı ile durumunu henüz okumamış süreç. <defunct>
olarak da görünebilir. Çok sayıda zombie, ebeveyn süreçte sorun olduğunu gösterebilir.
Orphan (Yetim) Süreç: Ebeveyni, kendisi çalışmaya devam ederken sonlanan süreç. Otomatik olarak systemd
(PID 1) tarafından “evlat edinilir”. systemd
, bu süreçler bittiğinde durumlarını okuyarak zombie olmalarını engeller.
İşletim sistemi, CPU kaynağını süreçler arasında önceliklendirerek paylaştırır.
top
’ta görünür).NI
değerli süreçler CPU’da daha çok pay alır.nice -n <değer> komut
: Komutu belirli nice değeriyle başlatır.renice <yeni_değer> -p <PID>
: Çalışan sürecin nice değerini değiştirir (genellikle sudo
gerekir).top
’a alternatif, daha renkli, kullanıcı dostu, fare destekli ve etkileşimli bir araç.sudo apt update && sudo apt install htop
top
ile htop
Karşılaştırması:
Özellik | top |
htop |
---|---|---|
Görünüm | Tek renkli | Renkli, Çubuk grafikler |
Kaydırma | Yok | Dikey ve Yatay |
Fare Desteği | Yok | Var (seçim, tıklama) |
Süreç Seçimi/İşlem | Zor | Kolay (Space, Enter) |
Süreç Öldürme (kill ) |
Etkileşimli (k ) |
Kolay (F9 ) |
Öncelik (nice ) |
Etkileşimli (r ) |
Kolay (F7 /F8 ) |
Ağaç Görünümü | Yok | Var (F5 veya t ) |
Kurulum | Genellikle var | Genellikle kurulmalı |
pgrep
, pidof
)Süreçleri adlarına veya başka özelliklerine göre bulmak için:
pgrep [seçenekler] desen
:
pgrep firefox
pgrep -u cezmi bash
(Kullanıcıya göre)pgrep -f "python .*script.py"
(Tam komut satırına göre)pidof <komut_adı>
:
pidof bash
pidof /usr/sbin/sshd
Süreçler arası veya çekirdek-süreç arası iletişim/kontrol mekanizmasıdır.
Sık Kullanılan Sinyaller:
Sinyal Adı | No | Açıklama | Tetikleyici Örnekleri |
---|---|---|---|
SIGHUP |
1 | Bağlantı Kesilmesi / Yapılandırma Yeniden Yükle | Terminal Kapanması, kill -1 |
SIGINT |
2 | Kesme İsteği (Interrupt) | Ctrl+C |
SIGQUIT |
3 | Çıkış İsteği (Quit), Core Dump Oluşturabilir | Ctrl+\ |
SIGKILL |
9 | Öldür (Koşulsuz Sonlandırma) - Yakalanmaz! | kill -9 , pkill -9 |
SIGTERM |
15 | Sonlandır (Düzgün Kapanma İsteği) - Varsayılan | kill , pkill , Shutdown |
SIGSTOP |
19 | Durdur (Geçici Duraklatma) - Yakalanmaz! | kill -19 |
SIGTSTP |
20 | Terminalden Durdurma İsteği | Ctrl+Z |
SIGCONT |
18 | Devam Et (Durdurulmuş Süreci Sürdür) | fg , bg , kill -18 |
kill
, pkill
, killall
)kill <PID> [PID...]
: Belirtilen PID’lere sinyal gönderir (varsayılan SIGTERM
).
kill 1234 5678
kill -9 1234
veya kill -KILL 1234
(SIGKILL
ile zorla kapatma)pkill [seçenekler] desen
: pgrep
gibi süreçleri bulur ve onlara sinyal gönderir (varsayılan SIGTERM
).
pkill firefox
pkill -9 -u guest gedit
(SIGKILL
ile, kullanıcıya göre)killall <komut_adı>
: Belirtilen komut adına sahip tüm süreçlere sinyal gönderir (varsayılan SIGTERM
).
killall gedit
&
)&
ekleyerek onu doğrudan arka planda başlatabilirsiniz.[1]
) ve sürecin PID’sini gösterir.Ctrl+Z
) ve Arka Planda Devam (bg
)Ctrl+Z
: Ön planda çalışan bir süreci durdurur (SIGTSTP
sinyali gönderir). Süreç sonlanmaz, sadece beklemeye alınır.
bg %[iş_no]
: Durdurulmuş bir işi (Stopped
) arka planda çalışmaya devam ettirir. İş numarası belirtilmezse son durdurulan iş (+
ile işaretli) devam eder.
jobs
, fg
)jobs
: Mevcut kabuk oturumunda arka planda çalışan (Running
) veya durdurulmuş (Stopped
) işleri listeler. İş numaralarını ([1]
, [2]
…) gösterir.
(+
: son kullanılan iş, -
: bir önceki)
fg %[iş_numarası]
: Belirtilen işi (veya +
ile işaretli son işi) tekrar ön plana alır. Kontrol tekrar o sürece geçer.
nohup
- Oturum Kapansa Bile Çalıştırmanohup
(“no hang up”), komutun SIGHUP
sinyalini (genellikle terminal kapatıldığında gönderilir) yok saymasını sağlar.&
ile arka plana atıp terminali kapatsanız bile çalışmaya devam etmesini sağlar.# Betiği başlat, çıktıyı log dosyasına yaz, hataları da aynı dosyaya yaz, arka plana at
nohup ./uzun_suren_betik.sh > betik.log 2>&1 &
nohup.out
dosyasına yazılır.xkill
- Grafik Arayüzden Program KapatmaKullanım:
xkill
yazıp Enter’a basın.SIGKILL
benzeri etki).xkill
aktifken fareye sağ tıklayın veya terminalde Ctrl+C
yapın.systemd
ile Servis/Süreç YönetimiUbuntu 24.04 gibi modern sistemlerde, birçok arka plan hizmeti (daemon) systemd
tarafından yönetilir. Bu süreçleri systemctl
ile kontrol etmek daha güvenli ve standart bir yöntemdir:
systemctl status <servis_adı.service>
: Servis durumunu kontrol et.sudo systemctl stop <servis_adı.service>
: Servisi durdur.sudo systemctl start <servis_adı.service>
: Servisi başlat.sudo systemctl restart <servis_adı.service>
: Servisi yeniden başlat.sudo systemctl reload <servis_adı.service>
: Servisin yapılandırmasını yeniden yükle (destekliyorsa, SIGHUP
).sudo systemctl enable <servis_adı.service>
: Servisi sistem açılışında otomatik başlat.sudo systemctl disable <servis_adı.service>
: Otomatik başlatmayı devre dışı bırak.Bir komut veya program sonlandığında, işletim sistemine 0-255 arası bir çıkış kodu bildirir.
Bu kod, işlemin başarılı olup olmadığını gösterir.
0
: Başarılı tamamlanma.
1-255
: Hata oluştuğunu gösterir (hata türü programa bağlıdır).
Bash kabuğunda, en son çalıştırılan komutun çıkış kodu özel $?
değişkeninde saklanır.
ls /etc/passwd > /dev/null # Komutu çalıştır, çıktıyı gösterme
echo $? # Çıkış kodunu göster
# Çıktı: 0 (Başarılı)
ls /etc/yok_boyle_dosya > /dev/null 2>&1 # Hata çıktısını da gizle
echo $? # Çıkış kodunu göster
# Çıktı: 2 (Hata - Dosya yok)
# Betiklerde kontrol:
if cp dosya1.txt yedek/; then
echo "Kopyalama başarılı."
else
echo "Kopyalama başarısız! Çıkış kodu: $?"
fi
Komut | Açıklama |
---|---|
ps |
Anlık süreçleri listeler (aux , -ef , -f ) |
pstree |
Süreçleri hiyerarşik ağaç yapısında gösterir |
top |
Dinamik, gerçek zamanlı süreç izleme (metin) |
htop |
Gelişmiş, renkli, etkileşimli süreç izleme |
pgrep |
Desene göre süreçlerin PID’lerini bulur |
pidof |
Tam komut adına göre PID bulur |
kill |
Belirtilen PID’lere sinyal gönderir (varsayılan SIGTERM ) |
pkill |
Desene uyan süreçlere sinyal gönderir (varsayılan SIGTERM ) |
killall |
Komut adına uyan tüm süreçlere sinyal gönderir (dikkat!) |
& (sona) |
Komutu arka planda başlatır |
jobs |
Arka plan/durdurulmuş işleri listeler |
fg |
Arka plan/durdurulmuş işi ön plana alır |
bg |
Durdurulmuş işi arka planda devam ettirir |
Ctrl+Z |
Ön plandaki süreci durdurur (SIGTSTP ) |
nohup |
Komutun SIGHUP sinyalini yoksaymasını sağlar |
nice |
Süreci belirli bir öncelikle başlatır |
renice |
Çalışan bir sürecin önceliğini değiştirir |
xkill |
Grafiksel arayüzden donmuş uygulamayı kapatır |
systemctl |
systemd servislerini/süreçlerini kontrol eder |
$? |
Son komutun çıkış kodunu tutan değişken |