Skip to content
Bloga dön
Kariyer Linux Teknik Mülakat Sistem Yönetimi DevOps

Teknik Mülakatlarda Karşılaşılan Kritik Linux Soruları ve Derinlemesine Çözüm Yaklaşımları

Sistem yönetimi, DevOps ve altyapı mühendisliği mülakatlarında en sık sorulan Linux konularını; teorik ezberden uzak, sahada karşılaşılan gerçekçi senaryolar ve pratik mühendislik yaklaşımlarıyla ele alıyoruz.

Caner Serbest

Sistem ve Altyapı

5 dk okuma

Teknik Mülakatlarda Karşılaşılan Kritik Linux Soruları ve Derinlemesine Çözüm Yaklaşımları

Teknik mülakatlar, adayların bilgi birikimini ölçmekten ziyade, kriz anında nasıl düşündüklerini, problemin kök nedenine nasıl ulaştıklarını ve sistem mimarisine bütüncül bakış açısıyla yaklaşıp yaklaşamadıklarını anlamak için tasarlanmıştır. Sistem ve DevOps pozisyonları için yapılan mülakatlarda Linux, masanın üzerindeki en temel ve en kritik konudur.

Bir adayın mülakatta “Linux komutlarını biliyorum” demesi pek bir şey ifade etmez. Önemli olan, üretim (production) ortamında aniden kilitlenen bir disk, yanıt vermeyen bir servis veya bellek sızıntısı (memory leak) yaşayan bir süreçle karşılaşıldığında hangi mantıksal adımların izleneceğidir. Bu yazıda, mülakatlarda sıkça sorulan Linux konularını gerçek dünya senaryoları eşliğinde, ezberden uzak ve pratik bir bakış açısıyla ele alacağız.


1. Süreç Yönetimi ve Kaynak Tüketimi Analizi

Mülakat Sorusu: “Bir sunucuda CPU kullanımı %100’e fırladı ve sistem yanıt vermiyor. İlk olarak ne yaparsınız ve soruna sebep olan süreci nasıl izole edersiniz?”,

Bu soruya birçok aday doğrudan top veya htop komutunu söyleyerek cevap verir. Ancak deneyimli bir sistem yöneticisinin cevabı sadece araç ismi söylemekle kalmaz; sorunun anlık bir patlama mı yoksa kronik bir kaynak tüketimi mi olduğunu ayırt etme sürecini açıklar.

İzlenecek Adımlar:

  1. Anlık Durum Tespiti (uptime ve top / htop): Sistemin yük ortalamalarına (load average) bakılır. Eğer 1 dakikalık yük, 5 ve 15 dakikalık yüklerin çok üzerindeyse ani bir yüklenme söz konusudur. top komutunu açıp %CPU kolonuna göre sıralama yaparak (Shift + P) en çok kaynak tüketen süreç bulunur.

  2. Süreç Bilgisi ve Kök Neden: Hangi sürecin sorun yarattığı bulunduktan sonra (örneğin java veya python), bu sürecin hangi kullanıcıya ait olduğu, ne kadar süredir çalıştığı ve hangi argümanlarla ayağa kaldırıldığı incelenir:

    ps -fp <PID>
  3. Bellek ve I/O Darboğazı Kontrolü: Yüksek CPU, disk I/O (iowait) veya bellek yetersizliğinden kaynaklanan thrashing (takas alanının aşırı kullanımı) durumlarından tetiklenebilir. free -m ve vmstat 1 komutlarıyla sistemin bellek ve swap durumunu doğrulamak hayati önem taşır.

Mülakat İpucu: Aday, süreci hemen kill -9 ile sonlandırmanın her zaman doğru olmadığını; özellikle veritabanı veya kritik bir uygulama söz konusuysa logların incelenmesi veya sistem çağrılarının (strace) izlenmesi gerektiğini vurgularsa mülakatçının gözünde öne geçer.


2. Dosya İzinleri, Sahiplik ve ‘Permission Denied’ Krizleri

Mülakat Sorusu: “Nginx veya Apache servisi hata veriyor ve loglarda ‘Permission Denied’ hatası görüyorsunuz. Ancak dosya izinlerinin doğru olduğunu düşünüyorsunuz. Problemi adım adım nasıl çözersiniz?”

Bu soru, adayın sadece chmod ve chown komutlarını bilip bilmediğini değil, Linux çekirdeğinin erişim kontrol mekanizmalarına ve servislerin çalışma mantığına hakimiyetini ölçer.

Çözüm Stratejisi:

  1. Servisin Çalıştığı Kullanıcıyı Doğrulama: Web sunucusu genellikle www-data, nginx veya apache gibi özel bir kullanıcıyla çalışır. ps aux | grep nginx komutuyla master ve worker süreçlerin hangi kullanıcı haklarıyla çalıştığı kontrol edilir.

  2. Dizin Yolu İzinleri (Traversal Permissions): En sık yapılan hata, sadece hedef dosyaya (/var/www/html/index.html) okuma izni vermek, ancak üst dizinlerden birinde (/var/www/ veya hatta /var/) others için execute (x) izninin olmamasını göz ardı etmektir. Bir dizine erişmek için o dizinde execute izni olmak zorundadır.

  3. MAC (Mandatory Access Control) Kontrolleri: Eğer dosya izinleri (ls -l) tamamen doğru görünüyorsa, sistemde SELinux veya AppArmor aktif olabilir. getenforce komutu ile SELinux durumuna bakılır ve loglarda (/var/log/audit/audit.log veya ausearch) bir engelleme olup olmadığı incelenir:

    # SELinux engellemelerini kontrol etmek için:
    ausearch -m avc -i

3. Disk ve Inode Yönetimi

Mülakat Sorusu: “df -h komutuna baktığınızda disk kullanımının %50 olduğunu görüyorsunuz ancak sistem ‘No space left on device’ hatası veriyor ve yeni dosya oluşturamıyorsunuz. Problem sizce ne olabilir?”

Bu, klasikleşmiş ancak her seviyeden mühendisin atlayabileceği harika bir mülakat sorusudur. Cevap Inode tükenmesidir.

Analiz Süreci:

  1. Inode Kontrolü: Dosya sistemindeki dosya ve dizin meta verilerini tutan Inode yapısı dolmuş olabilir. Kontrol etmek için:

    df -i

    Eğer kullanım oranı %100 ise, diskte yer olsa bile yeni dosya oluşturulamaz.

  2. Kök Nedenin Bulunması: Hangi dizinin inode tükettiğini bulmak için şu komut seti kullanılır:

    sudo du -sh /* 2>/dev/null
    # veya inode bazlı dağılım için:
    for i in /*; do echo $i; find $i -xdev | wc -l; done

    Genellikle bu durum, milyonlarca küçük log dosyası, e-posta birikmesi (/var/mail) veya yanlış yapılandırılmış bir önbellek (cache) mekanizmasından kaynaklanır.

Mülakat İpucu: Disk doluluğu senaryolarında ayrıca silinmiş ama açık kalan dosyalar (deleted files) konusuna değinmek gerekir. lsof +L1 komutu ile silindiği halde süreci tarafından kapatılmadığı için diskte yer kaplamaya devam eden dosyaları bulup süreci yeniden başlatmadan veya truncate ile alanı boşaltmadan bahsetmek adayın sahadaki deneyimini doğrudan yansıtır.


4. Ağ Sorun Giderme ve Port Dinleme Durumları

Mülakat Sorusu: “Uzak bir sunucudaki bir veritabanı portuna (örneğin PostgreSQL 5432) bağlanamıyorsunuz. Ağ ekibine ‘port kapalı’ demeden önce kendi tarafınızda hangi araçlarla ve sırayla doğrulama yaparsınız?”

Ağ sorunlarında parmak izlemek yerine katman katman (Layer 3, Layer 4, Layer 7) ilerlemek bir sistem yöneticisinin en temel refleksidir.

Doğrulama Adımları:

  1. DNS ve Temel Erişim (Layer 3): Hedef IP adresine erişilebiliyor mu? Ping her zaman güvenilir olmayabilir (ICMP engellenmiş olabilir) ancak temel hat kontrolü için kullanılır. traceroute veya mtr ile paketlerin nerede kaybolduğu izlenir.

  2. Port Durumu ve TCP El Sıkışması (Layer 4): Eski telnet yerine artık modern araçlar tercih edilmektedir:

    nc -zv <IP_ADRESI> 5432
    # veya telnet alternatifi olarak:
    timeout 3 bash -c '</dev/tcp/<IP_ADRESI>/5432' && echo "Port Açık" || echo "Port Kapalı"
  3. Yerel Güvenlik Duvarı Kontrolleri: Paketlerin dışarı çıkıp çıkmadığı veya içeride engellenip engellenmediği iptables, nftables veya ufw logları ile kontrol edilir:

    sudo ufw status verbose
  4. Paket Yakalama (Packet Sniffing): Eğer bağlantı kuruluyor ancak veri alışverişi olmuyorsa, tcpdump ile arayüz üzerindeki trafik dinlenir:

    sudo tcpdump -i eth0 port 5432 -nnvv

5. Log Analizi ve Metin İşleme Araçları

Mülakat Sorusu: “Gigabaytlar büyüklüğündeki bir Nginx access log dosyasında en çok istek yapan ilk 10 IP adresini komut satırından nasıl bulursunuz?”

Bu soru, adayın Linux boru hattı (pipe) kültürünü ve awk, sort, uniq gibi araçları ne kadar pratik kullanabildiğini gösterir.

Komut Satırı Çözümü:

awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -n 10

Adım Adım Açıklama:

  • awk '{print $1}': Log satırındaki ilk sütunu (genellikle istemci IP adresini) alır.
  • sort: IP adreslerini alfabetik olarak sıralar (uniq komutunun düzgün çalışabilmesi için aynı girdilerin yan yana gelmesi gerekir).
  • uniq -c: Ardışık tekrar eden satırları sayarak her IP’nin kaç kez geçtiğini başına ekler.
  • sort -nr: Sayısal olarak (-n) büyükten küçüğe (-r) ters sıralama yapar.
  • head -n 10: Sadece en üstteki 10 satırı ekrana yazdırır.

Mülakat İpucu: Eğer log dosyası sıkıştırılmış (.gz) bir formattaysa, dosyayı açmadan zcat veya zgrep kullanarak doğrudan bu analizi yapabilmek mülakatçıyı etkileyecek detaylardan biridir.


Sonuç

Teknik mülakatlarda başarılı olmak, ezberlenen komut listelerini dökmekten ziyade, bir problemin anatomisini çıkarabilme yeteneğiyle mümkündür. Linux ekosistemi uçsuz bucaksızdır; ancak temel prensipleri (süreç yönetimi, dosya izinleri, disk mimarisi ve ağ temelleri) sağlam oturtmuş bir mühendis, daha önce hiç karşılaşmadığı bir hata koduyla bile karşılaştığında mantıksal bir çözüm yolu üretebilir.

Unutmayın, mülakatçılar kusursuz cevaplar veren adaylardan ziyade, kriz anında doğru soruları sorabilen ve analitik düşünebilen takım arkadaşları ararlar.


Bu yazı Gemini ile otomatik oluşturulmuştur.