Site yöneticisiyseniz ve sunucunuz Linux üzerinde çalışıyorsanız, muhtemelen basit bir sorunu çözmek için hosting kontrol paneline başvurmak veya destek ekibiyle iletişime geçmek zorunda kaldığınız çok olmuştur. Ancak gerçek şu ki, Linux komutlarına hakim olmak yalnızca işinizi birkaç kat hızlandırmakla kalmaz, aynı zamanda kritik durumlarda — DDoS saldırısı veya disk dolması gibi — tek kurtuluş yolunuzdur. Bu makalede, her site yöneticisinin bilmesi gereken 25 pratik komutu gerçek örneklerle inceleyeceğiz.
1. Dosya ve Dizin Yönetimi
Dosyalarla çalışmaya başlamak basittir, ancak bu komutların doğru kombinasyonu zamandan büyük ölçüde tasarruf etmenizi sağlar.
ls ve ll — Dosyaları Görüntüleme
ls komutu en temel araçtır, ancak doğru bayraklarla daha detaylı bilgi alabilirsiniz:
ls -lah /var/www/html
Bu komut tüm dosyaları insan tarafından okunabilir boyutlarla (4.2K gibi) ve değiştirilme tarihiyle gösterir. En yeni dosyaların önce gelmesi için -t seçeneğini ekleyin: ls -lt.
find — Gelişmiş Arama
Diyelim ki diski dolduran büyük bir günlük dosyası buldunuz:
find /var/log -type f -size +100M -exec ls -lh {} \;
Bu komut, /var/log içindeki 100 MB üzerindeki tüm dosyaları boyutlarıyla listeler. Geçici bir dizinde 30 günden eski dosyaları silmek için:
find /tmp -type f -mtime +30 -delete
tar — Yedekleme ve Sıkıştırma
Site dizininin tamamını yedeklemek için:
tar -czvf backup.tar.gz /var/www/html
Yeni bir konuma çıkarmak için:
tar -xzvf backup.tar.gz -C /home/user/restore
Yaygın hata: -C bayrağını unutmak, dosyaların geçerli dizine çıkarılmasına ve klasör yapısının bozulmasına neden olur.
2. Süreç Yönetimi
Siteniz yavaşladığında ilk adım, çalışan süreçleri kontrol etmektir.
ps ve top — Süreçleri Görüntüleme
Belirli bir kullanıcının tüm süreçlerini görmek için:
ps -u www-data -o pid,%cpu,%mem,cmd
top komutu canlı görünüm sağlar. Ancak betik yazılabilir tek seferlik çıktı için top -bn1 kullanın. Yalnızca en çok kaynak tüketen 5 süreci görmek istiyorsanız:
top -bn1 | head -20 | tail -10
kill ve killall — Süreci Sonlandırma
Kilitlenmiş bir PHP-FPM süreci varsa, önce PID'yi bulun:
pgrep -f "php-fpm: pool"
Ardından yumuşak sinyalle (SIGTERM) sonlandırın:
kill -15 12345
Sonlandırılmazsa, sert sinyali (SIGKILL) deneyin:
kill -9 12345
Önemli not: Sürecin temizlik yapma şansı olması için her zaman önce -15 ile başlayın. -9'un aşırı kullanımı veritabanına zarar verebilir.
systemctl — Hizmet Yönetimi
Modern dağıtımlarda (Ubuntu 16.04+, CentOS 7+) hizmetleri yönetmek için:
systemctl restart nginx
systemctl status mysql
Hizmeti açılışta etkinleştirmek için:
systemctl enable --now redis-server
3. Ağ Yönetimi
Ağ sorunları, sitelerin çökmesinin en yaygın nedenidir. Bu komutları mutlaka bilmelisiniz.
ss — Portları ve Bağlantıları Kontrol Etme
80 numaralı porta (HTTP) kimin bağlandığını görmek için:
ss -tunap | grep :80
443 numaralı porta (HTTPS) aktif bağlantı sayısını saymak için:
ss -tn state established '( dport = :443 )' | wc -l
Bu komut SYN flood saldırılarını tespit etmede çok kullanışlıdır.
curl — HTTP Testi
Sunucu yanıt başlıklarını kontrol etmek için:
curl -I https://example.com
Toplam yanıt süresini ölçmek için:
curl -o /dev/null -s -w "time_total: %{time_total}s\n" https://example.com
İsteğin hangi IP'den gönderildiğini görmek istiyorsanız:
curl -v https://example.com 2>&1 | grep "Connected"
ping ve traceroute — Bağlantı Sorun Giderme
Sunucuya bağlantıyı test etmek için:
ping -c 4 8.8.8.8
Yoldaki kesinti noktasını bulmak için:
traceroute -n example.com
Yaygın hata: ping yanıt vermezse hemen sunucunun kapalı olduğu sonucuna varmayın. Birçok sunucu ICMP'yi filtreler. Önce curl veya nc ile test edin.
4. Disk ve Dosya Sistemi Yönetimi
Diskin dolması, sitelerin çökmesinin en yaygın nedenlerinden biridir. Bu komutlar sizin kurtarıcınızdır.
df ve du — Disk Alanını Kontrol Etme
Genel alanı görmek için:
df -h
Site kökündeki en büyük dizinleri bulmak için:
du -sh /var/www/html/* | sort -rh | head -10
Bu birleşik komut, en büyük 10 klasörü boyut sırasına göre gösterir.
lsof — Açık Dosyalar
Bir dosyayı sildiyseniz ancak disk hâlâ doluysa, muhtemelen bir süreç onu bellekte tutuyordur:
lsof +L1
Bu komut, hâlâ açık olan silinmiş dosyaları gösterir. Ardından ilgili süreci kill ile durdurabilirsiniz.
rsync — Senkronizasyon ve Aktarım
İzinleri koruyarak sunucular arasında dosya aktarmak için:
rsync -avz --progress /var/www/html/ user@backup-server:/backup/html/
-a (arşiv) bayrağı izinleri ve zamanları korur, -z sıkıştırır ve --progress ilerlemeyi gösterir.
5. Kullanıcı ve İzin Yönetimi
Sunucunuzun güvenliği, kullanıcıların doğru yönetimine bağlıdır.
useradd ve usermod — Kullanıcı Yönetimi
Sınırlı kabukla yeni kullanıcı oluşturmak için:
useradd -m -s /bin/bash deploy
Kullanıcıyı sudo grubuna eklemek için:
usermod -aG sudo deploy
Önemli not: Her zaman -a (ekle) bayrağını kullanın. Bu bayrak olmadan kullanıcı önceki gruplardan çıkarılır.
chmod ve chown — İzinler
Site dosyalarının sahipliğini web sunucusu kullanıcısına değiştirmek için:
chown -R www-data:www-data /var/www/html
Dizinler (755) ve dosyalar (644) için doğru izinleri ayarlamak üzere:
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;
6. Günlükleri Görüntüleme
Günlükler, hata durumunda bakmanız gereken ilk yerdir.
tail ve grep — Günlükleri Görüntüleme ve Filtreleme
Nginx hata günlüğünü canlı takip etmek için:
tail -f /var/log/nginx/error.log
Belirli bir zaman aralığında 500 hatalarını bulmak için:
grep " 500 " /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -rn
Bu komut, en çok 500 hatası alan IP'leri sayılarıyla birlikte gösterir.
journalctl — systemd Günlükleri
MySQL hizmetinin bugünkü günlüklerini görmek için:
journalctl -u mysql --since today
Canlı takip için:
journalctl -u nginx -f
7. Birleşik ve Gelişmiş Komutlar
Bu birleşik komutlar, karmaşık işleri tek satırda halleder.
grep ve awk — Metin İşleme
Günlükten HTTP durum kodlarını çıkarıp saymak için:
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn
En yavaş istekleri (yanıt süresine göre) bulmak için:
awk '{if ($NF > 5) print $0}' /var/log/nginx/access.log | tail -20
watch — Periyodik Çalıştırma
Bellek kullanımını her 2 saniyede canlı izlemek için:
watch -n 2 free -h
Ağ bağlantılarını izlemek için:
watch -n 1 'ss -s'
8. Sorun Giderme ve Yaygın Hatalar
Bu bölümde, yeni başlayan yöneticilerin sık yaptığı birkaç hataya değineceğiz.
Gereksiz sudo Kullanımı
Her zaman normal kullanıcıyla giriş yapın ve yalnızca belirli komutlar için sudo kullanın. Root ile komut çalıştırmak, sistem dosyalarına istemeden zarar verebilir.
usermod'da -a Bayrağını Unutmak
Daha önce belirtildiği gibi, -a olmadan kullanıcı önceki gruplardan çıkarılır. Bu hata, kullanıcının SSH erişimini kesebilir.
Komut Çıktılarını Göz Ardı Etmek
rm veya dd gibi yıkıcı komutları çalıştırmadan önce, çıktıyı ls veya df ile mutlaka kontrol edin. Yolda yapılacak bir yazım hatası felakete yol açabilir.
Özet
Bu 25 Linux komutuna hakim olmak, birçok yaygın sunucu sorununu destek ekibine ihtiyaç duymadan çözmenize yardımcı olur. Bu komutları gerçek koşullarda güvenle uygulamak için bir test ortamında (VirtualBox veya ucuz bir VPS gibi) pratik yapmanızı öneririm. Sunucunuz bulut altyapıda çalışıyorsa, ServerNet sunucuya tam SSH erişimi sağlar ve bu komutları doğrudan üzerinde deneyebilirsiniz. Her komutun belgelerini man ile incelemeyi unutmayın — en iyi öğretmen Linux'un kendisidir.
Yorumlar 0
Henüz yorum yok — ilk siz olun!