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.pspstreetop / htoppgrep / pidofkill / pkill / killall&, jobs, fg, bgnohupnice / renicexkillsystemctlps: 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 -fps -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 sshgrep 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 htoptop 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 firefoxpgrep -u cezmi bash (Kullanıcıya göre)pgrep -f "python .*script.py" (Tam komut satırına göre)pidof <komut_adı>:
pidof bashpidof /usr/sbin/sshdSü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 5678kill -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 firefoxpkill -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 |