Linux çok görevli (multitasking) bir işletim sistemidir. Aynı anda onlarca, hatta yüzlerce program çalışabilir. Süreç yönetimi, bu programları izlemek, kontrol etmek ve gerektiğinde sonlandırmak için kullanılan temel beceridir.
Süreç (Process) Nedir?
Çalışan her program bir veya daha fazla süreçten oluşur. Her süreç benzersiz bir Process ID (PID) ile tanımlanır. Süreçler bellek, CPU ve diğer sistem kaynaklarını kullanır.
Süreç Türleri
Ön plan süreçleri (foreground): Terminal ile etkileşimli çalışır. Arka plan süreçleri (background): Kullanıcı müdahalesi olmadan çalışır. Daemon'lar: Sistem servisleri, arka planda sürekli çalışır. Zombie süreçler: Sonlanmış ama kayıtları silinmemiş süreçler. Orphan süreçler: Ebeveyni sonlanmış süreçler.
Süreç Durumları
R (Running): Çalışıyor veya çalışmaya hazır. S (Sleeping): Bir olay bekliyor. D (Uninterruptible Sleep): Kesintisiz uyku (genellikle I/O bekliyor). T (Stopped): Durdurulmuş. Z (Zombie): Sonlanmış ama temizlenmemiş.
ps Komutu
Çalışan süreçleri listeler. En temel süreç izleme aracı.
Temel Kullanım
Mevcut terminal süreçleri:
ps
Tüm süreçler (yaygın kullanım):
ps aux
a: Tüm kullanıcıların süreçleri u: Kullanıcı formatı x: Terminal bağlantısı olmayan süreçler
Çıktı Açıklaması
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 16844 1232 ? Ss 10:00 0:01 /sbin/init
USER: Süreç sahibi PID: Süreç kimliği %CPU: CPU kullanım yüzdesi %MEM: Bellek kullanım yüzdesi VSZ: Sanal bellek boyutu RSS: Fiziksel bellek kullanımı TTY: Terminal STAT: Süreç durumu START: Başlangıç zamanı TIME: CPU zamanı COMMAND: Komut
Kullanışlı ps Örnekleri
Belirli kullanıcının süreçleri:
ps -u ahmet
Belirli süreci bul:
ps aux | grep nginx
Süreç ağacı:
ps -ejH ps axjf
En çok CPU kullanan süreçler:
ps aux --sort=-%cpu | head -10
En çok bellek kullanan süreçler:
ps aux --sort=-%mem | head -10
Sadece PID ve komut:
ps -eo pid,comm
top Komutu
Gerçek zamanlı süreç izleme aracı. Dinamik olarak güncellenir.
Temel Kullanım
top
Ekran birkaç saniyede bir yenilenir.
Özet Bölümü
Üst kısımda sistem özeti görünür:
Uptime: Sistem açık kalma süresi Load average: 1, 5, 15 dakikalık yük ortalaması Tasks: Toplam, çalışan, uyuyan süreç sayıları CPU: Kullanıcı, sistem, boşta yüzdeleri Memory: RAM ve swap kullanımı
top İçi Komutlar
h: Yardım q: Çık k: Süreç sonlandır (PID sorar) r: Öncelik değiştir (renice) M: Bellek kullanımına göre sırala P: CPU kullanımına göre sırala u: Kullanıcı filtrele 1: Her CPU çekirdeğini ayrı göster c: Tam komut yolunu göster
htop Alternatifi
top'un gelişmiş versiyonu. Renkli arayüz, fare desteği.
htop
Kurulum (yoksa):
sudo apt install htop
htop'ta süreçleri seçip F9 ile sonlandırabilirsiniz.
pgrep ve pidof
Süreç ID'si bulma araçları.
pgrep nginx pidof nginx
pgrep daha esnek, düzenli ifade desteği var:
pgrep -u root # Root süreçleri pgrep -f script # Komut satırında "script" geçenler
kill Komutu
Süreçlere sinyal gönderir. En yaygın kullanım süreç sonlandırma.
Temel Kullanım
kill PID
Varsayılan SIGTERM (15) sinyali gönderir, sürecin düzgün sonlanmasını ister.
Zorla Sonlandırma
kill -9 PID
SIGKILL (9) sinyali, süreç zorla sonlandırılır. Temizlik yapamaz.
Yaygın Sinyaller
1 (SIGHUP): Yapılandırmayı yeniden yükle 2 (SIGINT): Kesinti (Ctrl+C) 9 (SIGKILL): Zorla öldür 15 (SIGTERM): Normal sonlandırma 18 (SIGCONT): Devam et 19 (SIGSTOP): Durdur
Sinyal listesi:
kill -l
killall ve pkill
İsme göre süreç sonlandırma.
killall:
killall firefox
pkill (daha esnek):
pkill -9 firefox pkill -u ahmet # Kullanıcının tüm süreçleri pkill -f "python script.py"
Süreç Önceliği
nice ve renice
Süreç önceliği -20 (en yüksek) ile 19 (en düşük) arasında değişir. Varsayılan 0'dır.
Düşük öncelikle başlatma:
nice -n 10 ./script.sh
Yüksek öncelikle (root gerekir):
sudo nice -n -5 ./onemli_is
Çalışan sürecin önceliğini değiştirme:
renice 10 -p PID sudo renice -5 -p PID
Arka Plan İşlemleri
Komutu arka planda başlatma:
./uzun_islem.sh &
Çalışan işi arka plana atma:
Ctrl+Z ile duraklat, sonra:
bg
Arka plan işlerini listeleme:
jobs
Ön plana getirme:
fg %1
%1 iş numarası.
nohup
Terminal kapansa bile çalışmaya devam eder:
nohup ./script.sh &
Çıktı nohup.out dosyasına yazılır.
Süreç İzleme
/proc Dosya Sistemi
Her sürecin /proc/PID dizininde bilgileri var:
ls /proc/1234/
Yararlı dosyalar:
/proc/PID/status: Süreç durumu /proc/PID/cmdline: Komut satırı /proc/PID/fd/: Açık dosya tanımlayıcıları /proc/PID/maps: Bellek haritası
lsof
Açık dosyaları listeler. Süreçlerin kullandığı kaynakları gösterir.
Bir sürecin açık dosyaları:
lsof -p PID
Bir dosyayı kullanan süreçler:
lsof /var/log/syslog
Bir portu kullanan süreç:
lsof -i :80
strace
Sistem çağrılarını izler. Hata ayıklama için kullanışlı.
strace -p PID strace -f ./program
Kaynak Limitleri
ulimit
Kullanıcı kaynak limitlerini gösterir ve ayarlar.
Tüm limitleri göster:
ulimit -a
Açık dosya limiti:
ulimit -n ulimit -n 4096
Kalıcı ayarlar için /etc/security/limits.conf düzenlenir.
Pratik Senaryolar
Yanıt Vermeyen Programı Sonlandırma
PID'yi bul:
pgrep -f program_adi # veya ps aux | grep program
Önce nazikçe dene:
kill PID
Çalışmazsa zorla:
kill -9 PID
CPU Tüketen Süreci Bulma
top açın, P tuşuna basarak CPU'ya göre sıralayın veya:
ps aux --sort=-%cpu | head -5
Bellek Tüketen Süreci Bulma
ps aux --sort=-%mem | head -5
Tüm Kullanıcı Süreçlerini Sonlandırma
pkill -u kullanici
Dikkat: Bu tehlikeli olabilir.
Sonuç
Süreç yönetimi Linux sistem yönetiminin temel becerisidir. ps, top ve kill komutlarını iyi öğrenin.
Sorunlu süreçleri tespit etmek için top ve htop kullanın. Sonlandırmadan önce SIGTERM deneyin, SIGKILL son çare olsun.
Kaynak tüketen süreçleri izleyin, gerekirse önceliklerini ayarlayın. Uzun işler için arka plan ve nohup kullanmayı unutmayın.
0 Yorum
Yorum Yaz