berk@bayram
Tüm yazılar

Linux Temelleri: DevOps Yolculuğuna Başlarken Bilmeniz Gerekenler

16 Şubat 20262 dk okuma

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.