Linux Sistemcileri: 10 Hayati Komut!

Anasayfa » Linux Sistemcileri: 10 Hayati Komut!

Selam Linux sevdalıları ve sistemin derinliklerinde boğuşan değerli meslektaşlarım!

Bende sizin gibi bilmediğim konuları çokca araştıran biriyim. Hele ki konu “Linux” olunca! Bilgisayar dünyasında işler her zaman yolunda gitmez; hele ki bir sistem yöneticisiyseniz, aksilikler sizin kapınızı çalmaya bayılır. İşte tam da o kritik anlarda, sunucu alarm verdiğinde, bir servis çöktüğünde veya sistem aniden yavaşladığında, elimizin altında bir avuç “can kurtaran” komutun olması hayatidir.

Bugün size, benim de sanal makinalarda kullanırken defalarca kez başımı beladan kurtarmış, gözüm kapalı kullandığım ve her Linux sistem yöneticisinin cephaneliğinde mutlaka bulunması gereken 10 komuttan bahsedeceğim. Bu komutlar sadece sorunları gidermenize yardımcı olmakla kalmayacak, aynı zamanda sisteminiz hakkında derinlemesine bilgi edinmenizi de sağlayacak.

Hayat Kurtaran Komutlar Neden Bu Kadar Önemli?

Bir sistemci olarak en büyük düşmanlarımızdan biri belirsizliktir. Bir sorunla karşılaştığımızda, hızlıca neyin yanlış gittiğini anlamak, doğru teşhisi koymak ve müdahale etmek zorundayız. Bu süreçte, elle tutulur veriler sunan, anlık durumu gösteren ve logları taramamızı sağlayan komutlar, zamanla yarışırken en büyük müttefikimiz olur. Bu komutlar sayesinde CPU yükünü, bellek kullanımını, disk doluluğunu, ağ bağlantılarını veya çalışan servislerin durumunu saniyeler içinde analiz edebiliriz. İşte bu yüzden, sadece komutu yazmak değil, çıktısını doğru yorumlamak da en az komutu bilmek kadar önemlidir.

Adım Adım Uygulama: 10 Hayat Kurtaran Komut

Hazırsanız, gelin bu süper güçlerimizi yakından tanıyalım:

1. htop (veya top) – Anlık Sistem Kaynak Takibi

Sunucunuz yavaşladı mı? Hangi process CPU’yu veya belleği sömürüyor? `htop` size bunun grafiksel ve interaktif bir görünümünü sunar. `top`’ın daha kullanıcı dostu, renkli ve gelişmiş versiyonudur. Hızlıca en çok kaynak kullananları görür, hatta direkt oradan process’i öldürebilirsiniz (dikkat!).

htop

2. grep – Loglarda ve Dosyalarda Hızır Arayıcı

Bir uygulamanız hata mı veriyor? Neredeyse her şeyin loglandığı Linux dünyasında, `grep` ile belirli anahtar kelimeleri aramak, sorunun kökenine inmek için paha biçilmezdir. Log dosyaları devasa boyutlarda bile olsa, `grep` saniyeler içinde istediğiniz satırları bulur.

grep "error" /var/log/syslog
grep -i "failed" /var/log/auth.log # Büyük/küçük harf duyarsız arama
grep "istenen_ifade" /var/log/*log # Tüm log dosyalarında arama

3. df -h – Diskinizde Ne Kadar Yer Var?

Disk doluluğu, çoğu sunucu hatasının başında gelir. Uygulamalar yazamaz, loglar dolmaz, sistem kilitlenir. `df -h` komutu, tüm bağlı disk bölümlerindeki toplam alanı, kullanılan alanı, boş alanı ve yüzde kaçının dolduğunu insan tarafından okunabilir (human-readable) formatta gösterir. İlk bakacağınız komutlardan biridir.

df -h

4. du -sh * – Hangi Dizin Diski Şişiriyor?

`df` size genel disk doluluğunu gösterirken, `du -sh *` komutu bulunduğunuz dizindeki alt dizinlerin ve dosyaların ne kadar yer kapladığını özet bir şekilde gösterir. Bu sayede “nereden bu disk doldu yahu?” sorusunun cevabını kolayca bulabilirsiniz. Genellikle `/var` veya `/home` gibi dizinlerde kullanılır.

sudo du -sh * /var/log # log dizinindeki dosyaların boyutunu görmek için

5. ss -tulnp (veya netstat) – Kim Kiminle Konuşuyor, Hangi Port Dinlemede?

Bir servisin çalışıp çalışmadığını anlamak veya bir portun gerçekten dinlenip dinlenmediğini kontrol etmek için `ss` komutu biçilmiş kaftandır. `netstat`’ın daha yeni ve hızlı bir alternatifidir. Özellikle “tulnp” bayrakları (tcp/udp, listening, numeric, programs) ile hangi programın hangi portu dinlediğini ve hangi bağlantıların açık olduğunu görebilirsiniz. Bir uygulamanız başlamadıysa, belki de portu başka bir servis tarafından kullanılıyordur.

sudo ss -tulnp # Dinlenen tüm TCP/UDP portları ve kullanan programlar
sudo ss -p | grep :80 # 80 portunu kullanan bağlantıları göster

6. journalctl -xe – Sistem Loglarının Merkezi

Modern Linux sistemlerinde (systemd kullananlar), `journalctl` tüm sistem loglarını tek bir yerden yönetir. Özellikle `-xe` bayrakları ile, en son logları (x) ve tam çıktıyı (e) görebilirsiniz. Bir servis neden başlamadı, çekirdek bir hata mı verdi? `journalctl` size rehberlik edecektir.

sudo journalctl -xe # Son sistem loglarını göster
sudo journalctl -u apache2.service # Sadece Apache servisinin loglarını göster

7. ps aux | grep <process> – Belirli Bir Prosesi Bul

Bir uygulamanın veya servisin çalışıp çalışmadığını, hangi argümanlarla başladığını görmek için `ps aux` komutu tüm çalışan prosesleri gösterir. Bunu `grep` ile birleştirerek istediğiniz prosesi hızla filtreleyebilirsiniz. Örneğin, Apache veya Nginx’in PID’ini (Process ID) bulmak için sıkça kullanılır.

ps aux | grep nginx # Nginx ile ilgili tüm prosesleri göster
ps aux | grep "[a]pache2" # [ ] kullanımı grep prosesini çıktıdan çıkarmak içindir.

8. lsof -i – Açık Dosyalar ve Ağ Bağlantıları

`lsof` (list open files) komutu, sisteminizdeki açık olan tüm dosyaları (ki Linux’ta her şey bir dosyadır, ağ soketleri dahil) listeler. Özellikle `-i` bayrağı ile ağ bağlantılarını ve dinlenen portları gösterir. Bir portun meşgul olduğunu görüyorsunuz ama `ss` ile hangi uygulamanın kullandığını bulamıyorsanız, `lsof -i` devreye girer.

sudo lsof -i :80 # 80 portunu kullanan tüm açık dosyaları/bağlantıları göster
sudo lsof -i TCP:22 # SSH (port 22) bağlantılarını göster

9. systemctl status <service> – Servis Durumu Kontrolü

systemd tabanlı sistemlerde servisleri yönetmenin anahtar komutudur. Bir servisin (örneğin `nginx`, `mysql`, `apache2`) çalışıp çalışmadığını, aktif mi inaktif mi olduğunu, en son ne zaman başladığını veya hata verdiğini hızlıca kontrol etmek için kullanılır. Servislerle ilgili sorunlarda ilk başvurulacak komutlardandır.

sudo systemctl status nginx # Nginx servisinin durumunu kontrol et
sudo systemctl restart apache2 # Apache servisini yeniden başlat

10. kill -9 <PID> – İnatçı Procesleri Bitir

Bazen bir process kilitlenir, kaynakları tüketir ve `systemctl restart` gibi normal yöntemlerle durdurulamaz. İşte o zaman `kill -9` devreye girer. `-9` sinyali (SIGKILL) process’e kendini temizleme şansı vermeden onu anında sonlandırır. Ancak dikkatli olun, veri kaybına neden olabilir, bu yüzden en son çare olarak kullanılmalıdır.

kill -9 12345 # 12345 PID'li prosesi zorla sonlandır

Sık Yapılan Hatalar ve Benim Tecrübelerim

  • Çıktıları Anlamamak: Komutları ezberlemek kolay, önemli olan çıktının ne anlama geldiğini kavramak. Her zaman `man <komut>` ile detaylarına bakın.
  • sudo’yu Gözü Kapalı Kullanmak: Her komutun başına `sudo` yazmak bir alışkanlık olabiliyor ama gereksiz yere root yetkisiyle işlem yapmak risklidir. Özellikle `rm -rf /` gibi komutlar felaketle sonuçlanabilir.
  • `kill -9`’u Erken Kullanmak: Bir process’i sonlandırmadan önce `kill <PID>` (SIGTERM sinyali) ile nazikçe durdurmayı deneyin. `-9` en son çare olsun.
  • Logları İhmal Etmek: “Sorun nerede?” diye sormadan önce mutlaka ilgili logları kontrol edin. Loglar, sistemin hikayesini anlatır.
  • `df` ve `du`’yu Karıştırmak: `df` genel disk bölümü doluluğunu gösterirken, `du` belirli bir dizinin veya dosyanın boyutunu gösterir. İkisinin farklı amaçları olduğunu unutmayın.
  • `tail -f` yerine Sadece `cat` Kullanmak: Canlı log takibi için `tail -f /var/log/nginx/access.log` kullanın. Sadece `cat` ile logu görmek, anlık durumu kaçırmanıza neden olur.

Sonuç

Bu 10 komut, Linux sistemcisi olan meslektaşlarımın bilmek zorunda olduğu komutlar.  Bunlar sadece başlangıç; Linux dünyası derya deniz. Pratik yaparak, her komutun farklı bayraklarını deneyerek ve en önemlisi, sorunlarla yüzleşerek kendinizi geliştireceksiniz.

Unutmayın, iyi bir sistemci sadece sorunları çözmekle kalmaz, aynı zamanda potansiyel sorunları öngörür ve önler. Bu komutlar, hem sorun gidermede hem de sisteminizi daha iyi tanımada size yol gösterecektir. Klavyenizden güç eksik olmasın, yeni maceralarda görüşmek üzere!