Linux Temelleri: DevOps Yolculuğuna Başlarken Bilmeniz Gerekenler
DevOps dünyasına adım atan herkesin er ya da geç karşılaştığı bir gerçek var: sunucuların büyük çoğunluğu Linux üzerinde çalışıyor. Kubernetes cluster'ları, CI/CD pipeline'ları, cloud instance'ları... hepsinin altında bir Linux dağıtımı var. Bu yazıda, kariyerim boyunca günlük olarak kullandığım Linux temellerini derledim.
Dosya Sistemi Hiyerarşisi
Linux'ta her şey tek bir kök dizinden (/) başlar. Windows'taki gibi C:, D: sürücü ayrımı yoktur.
/ # kök dizin
/etc # sistem ve uygulama konfigürasyon dosyaları
/var # log dosyaları, değişken veri (var/log, var/lib)
/home # kullanıcı dizinleri
/usr # kullanıcı programları ve kütüphaneleri
/opt # üçüncü parti / manuel kurulan yazılımlar
/tmp # geçici dosyalar
Production ortamında en çok /etc (konfigürasyon) ve /var/log (loglama) ile haşır neşir olursunuz.
Temel Komutlar
Günlük işlerin çoğunu şu komutlar karşılar:
pwd # bulunduğun dizini göster
ls -la # dizin içeriğini detaylı listele
cd /var/log # dizin değiştir
cat access.log # dosya içeriğini yazdır
tail -f app.log # dosyayı canlı takip et
grep "ERROR" app.log # dosyada arama yap
find / -name "*.conf" # dosya ara
df -h # disk kullanımını göster
top # çalışan süreçleri izle
tail -f, production'da bir servisi debug ederken en sık kullandığım komutlardan biri.
Dosya İzinleri
Linux'ta her dosya ve dizinin sahibi, grubu ve izinleri vardır:
-rwxr-xr-- 1 berk devops 1024 Şub 16 15:20 deploy.sh
Soldan sağa: dosya tipi, owner izinleri (rwx), group izinleri (r-x), others izinleri (r--).
chmod +x deploy.sh # çalıştırma izni ekle
chown berk:devops deploy.sh # sahibi ve grubu değiştir
Süreç Yönetimi
Bir servis "çalışmıyor" dediğinizde, arkasında genelde bir süreç sorunu vardır:
ps aux | grep java # java process'lerini listele
kill -9 <PID> # süreci zorla sonlandır
systemctl status nginx # servis durumunu kontrol et
systemctl restart nginx # servisi yeniden başlat
journalctl -u nginx -f # servis loglarını canlı izle
systemctl ve journalctl, günümüz Linux dağıtımlarının çoğunda servis yönetiminin standart yolu.
Paket Yönetimi
Dağıtıma göre değişir ama mantık aynı:
# Debian/Ubuntu
apt update && apt install nginx
# RHEL/CentOS
dnf install nginx
Kapanış
Bu yazı bir başlangıç noktası. Bir sonraki yazıda bu temelleri Docker ve Kubernetes ile nasıl bir araya getirdiğimi anlatacağım — çünkü container'lar da altta hep bu aynı Linux temel yapı taşlarını kullanıyor.