aslain.dev
0%
01 Hizmetler 02 Hakkımda 03 Projeler 04 Stack 05 Blog 06 İletişim
← Tüm makaleler Araçlar & DevOps

Linux Komutları: Komut Satırı Temelleri (CLI)

Bir sunucuya ilk kez SSH ile bağlandığında karşına çıkan o yanıp sönen imleç çoğu zaman korkutucu görünür, ama temel linux komutları aslında birkaç kalıbı tekrar tekrar kullanmaktan ibarettir. Bir VPS yönetiyor, bir oyun sunucusu kuruyor ya da Laravel uygulamanı deploy ediyor olabilirsin; dosyaları gezmek, kopyalamak, izinleri ayarlamak ve süreçleri kontrol etmek hep aynı küçük komut grubuna dayanır. Bu rehberde komut satırının günlük iskeletini, gerçek ve çalışan örneklerle adım adım kuruyoruz.

Terminalde nerede olduğunu bilmek

Her şey bulunduğun dizini anlamakla başlar. Üç komut bu resmi tamamlar: pwd hangi klasörde olduğunu yazar, ls içeriği listeler, cd ise klasörler arasında gezinmeni sağlar.

pwd                 # /home/aslain gibi tam yolu yazar
ls -la              # gizli dosyalar dahil, ayrıntılı liste
cd /var/www         # mutlak yola git
cd ..               # bir üst dizine çık
cd ~                # ev dizinine dön

ls -la çıktısındaki ilk sütun (drwxr-xr-x gibi) izinleri gösterir; baştaki d bir dizini, - ise normal dosyayı işaret eder. ~ her zaman kullanıcının ev dizininin kısa yoludur, mutlak yollar / ile başlar, göreli yollar ise bulunduğun yere göredir.

Dosya ve dizin yönetimi

İçerik oluşturmak, taşımak ve silmek için ihtiyacın olan komutlar küçük ama güçlüdür. Burada dikkatli olunması gereken tek komut rm; çöp kutusu yoktur, silinen geri gelmez.

mkdir -p proje/uygulama/src   # iç içe klasörleri tek seferde oluştur
touch index.php               # boş dosya oluştur veya zaman damgasını güncelle
cp kaynak.txt yedek.txt       # dosya kopyala
cp -r dist/ build/            # klasörü içeriğiyle kopyala (-r = recursive)
mv eski.txt yeni.txt          # yeniden adlandır veya taşı
rm gecici.log                 # dosya sil
rm -r build/                  # klasörü sil
rmdir bos_klasor              # yalnızca boş klasörü sil

rm -rf kombinasyonu güçlüdür ama tehlikelidir: yol hatası yaparsan istemediğin verileri yok edebilirsin. Silmeden önce komutu ls ile prova etmek iyi bir alışkanlıktır. mv komutunun hem yeniden adlandırma hem de taşıma işini yaptığına dikkat et; ayrı bir "rename" komutu yoktur.

Dosya içeriğini okumak ve aramak

Log dosyalarını incelemek, bir yapılandırma satırını bulmak ya da bir çıktıyı süzmek günlük rutinin parçasıdır. Bu işin merkezinde cat, less ve grep vardır.

cat .env                      # dosyayı tek seferde ekrana bas
less storage/logs/laravel.log # uzun dosyayı sayfa sayfa gez (q ile çık)
head -n 20 access.log         # ilk 20 satır
tail -n 50 access.log         # son 50 satır
tail -f access.log            # dosyayı canlı izle (yeni satırlar akar)
grep "ERROR" laravel.log      # ERROR geçen satırları bul
grep -ri "database" config/   # klasörde büyük/küçük harf duyarsız ara

tail -f özellikle bir hatayı yakalamaya çalışırken altın değerindedir: uygulamayı kullanırken logların gerçek zamanlı aktığını görürsün. grep ise borularla (pipe) birleşince çok güçlenir; örneğin ps aux | grep php ile yalnızca PHP süreçlerini görebilirsin.

Borular, yönlendirme ve zincirleme

Linux felsefesinin kalbi, küçük araçları birbirine bağlamaktır. Boru (|) bir komutun çıktısını diğerinin girdisi yapar; yönlendirme (>, >>) çıktıyı dosyaya yazar.

ls -la | grep ".php"          # yalnızca .php dosyalarını göster
cat access.log | wc -l        # satır say (kaç istek geldi?)
du -sh * | sort -h            # klasör boyutlarını sıralı listele
echo "merhaba" > not.txt       # dosyaya yaz (üzerine yazar)
echo "ikinci satır" >> not.txt # dosyanın sonuna ekle
php artisan migrate && php artisan db:seed   # ilki başarılıysa ikinciyi çalıştır

Buradaki && operatörü, ilk komut başarıyla bittiyse (çıkış kodu 0) ikinciyi çalıştırır; deploy adımlarını güvenle zincirlemek için idealdir. > ile >> farkını karıştırma: tek ok dosyanın içeriğini siler, çift ok ekler.

Süreçleri ve sistemi yönetmek

Sunucuda bir şey takıldığında, hangi sürecin çalıştığını ve ne kadar kaynak yediğini görmen gerekir. İşte burada süreç komutları devreye girer.

ps aux                        # çalışan tüm süreçler
ps aux | grep nginx           # yalnızca nginx süreçleri
top                           # canlı kaynak kullanımı (q ile çık)
htop                          # daha okunaklı sürüm (kuruluysa)
kill 4821                     # PID'i 4821 olan süreci sonlandır
kill -9 4821                  # zorla sonlandır (yanıt vermiyorsa)
df -h                         # disk doluluk oranı
free -h                       # bellek (RAM) kullanımı

Bir süreci kapatırken önce normal kill dene; uygulamanın temiz kapanmasına şans verir. Yalnızca yanıt vermiyorsa kill -9 kullan, çünkü o "kemerinden tut at" demektir ve süreç verisini kaydedemeden ölür. df -h ve free -h ise "Disk neden doldu?" ya da "Sunucu neden yavaş?" sorularına ilk bakacağın yerlerdir.

İzinler ve güvenli alışkanlıklar

Web sunucularında en sık karşılaşılan "Permission denied" hataları izinlerden kaynaklanır. chmod izinleri, chown ise sahipliği değiştirir.

chmod 644 index.php           # sahip okur/yazar, diğerleri okur
chmod 755 deploy.sh           # herkes çalıştırabilir, sahip yazabilir
chmod -R 775 storage/         # klasörü içeriğiyle birlikte ayarla
chown -R www-data:www-data .  # sahipliği web kullanıcısına ver
sudo systemctl restart nginx  # bir servisi yetkiyle yeniden başlat

Birkaç pratik alışkanlık seni dertten kurtarır: tehlikeli komutlardan önce pwd ile yerini doğrula, Tab tuşuyla dosya adlarını otomatik tamamla (yazım hatasını önler), yukarı ok tuşuyla önceki komutları geri çağır ve man ls ile herhangi bir komutun kılavuzunu oku. sudo yalnızca gerçekten gerektiğinde kullanılmalı; root yetkisi her hatayı kalıcı hale getirir.

Sık Sorulan Sorular

Terminalde takılan bir komuttan nasıl çıkarım?

Ctrl + C çalışan komutu durdurur. top, less veya man gibi tam ekran araçlardan çıkmak için q tuşuna bas. Terminali tamamen kapatmak içinse exit yazabilirsin.

chmod 755 ile 644 arasındaki fark nedir?

Sayılar okuma (4), yazma (2) ve çalıştırma (1) izinlerinin sahip/grup/diğerleri için toplamıdır. 644 normal dosyalar içindir (çalıştırılmaz), 755 ise betikler ve klasörler içindir çünkü çalıştırma/giriş izni gerektirir.

rm ile sildiğim dosyayı geri alabilir miyim?

Hayır, rm dosyayı doğrudan ve kalıcı olarak siler, çöp kutusu yoktur. Bu yüzden önemli verilerde silmeden önce yedek almak ve komutu ls ile prova etmek hayati önemdedir.

Sunucu yönetimi, deploy veya VPS kurulumu için yardıma mı ihtiyacın var? Linux tabanlı sistemleri kurarken ya da bir oyun/web sunucusunu sıfırdan ayağa kaldırırken takıldıysan, benimle iletişime geç — birlikte sağlam bir kurulum çıkaralım.

Bu kategorideki tüm yazılar →

Devamı için