TürkiyeVPS

Yeni Başlayanlar İçin Temel Linux Komutları (Örneklerle)

Sunucuya ilk kez SSH ile bağlandınız ve karşınızda boş bir terminal var. Dosyalar arasında gezinmekten paket kurmaya, izinlerden süreç yönetimine kadar en çok kullanılan Linux komutlarını örneklerle anlatıyoruz.

7 dk okuma

Bir VPS kiraladığınızda sunucuyu büyük olasılıkla bir grafik arayüz yerine komut satırından yöneteceksiniz. İlk bakışta korkutucu görünse de günlük işlerin çoğu yirmi otuz komutla halledilir. Bu rehberde Ubuntu 24.04 üzerinde en çok işinize yarayacak komutları, ne zaman kullanacağınızı ve dikkat etmeniz gereken noktaları anlatıyoruz. Sunucuya nasıl bağlanacağınızı bilmiyorsanız önce SSH nedir yazımıza göz atın.

İpucu: Komutları öğrenmenin en iyi yolu denemektir. Önemli verilerin olmadığı, sıfırdan kurulmuş bir test sunucusu bunun için idealdir. Bir şey bozulursa sunucuyu yeniden kurup baştan başlayabilirsiniz.

Komut satırına ilk bakış

Bağlandığınızda şuna benzer bir satır görürsünüz:

root@sunucu:~#

Burada root kullanıcı adı, sunucu makinenin adı, ~ bulunduğunuz klasör (ev dizininiz), # ise yönetici olarak oturum açtığınızı gösterir. Normal kullanıcılarda bu işaret $ olur.

Bir komutun nasıl kullanıldığını unutursanız iki yardımcınız var:

ls --help
man ls

man sayfasından q tuşuyla çıkarsınız. Ayrıca Tab tuşu dosya ve komut adlarını otomatik tamamlar, yukarı ok ise önceki komutları getirir. Bu ikisi, yazım hatalarını ciddi ölçüde azaltır.

Dosya ve klasörler arasında gezinmek

pwd                 # şu an hangi klasördesiniz
ls                  # klasördeki dosyaları listeler
ls -lah             # gizli dosyalar dahil, boyutlar okunaklı biçimde
cd /var/www         # belirtilen klasöre geçer
cd ..               # bir üst klasöre çıkar
cd ~                # ev dizinine döner
cd -                # bir önceki klasöre döner

Linux'ta dosya yolları / ile başlar ve büyük-küçük harfe duyarlıdır: Site.txt ile site.txt iki ayrı dosyadır. Adı nokta ile başlayan dosyalar (.env, .bashrc gibi) gizlidir ve yalnızca ls -a ile görünür.

Sık karşılaşacağınız klasörler:

Klasör İçinde ne var?
/etc Sistem ve servis ayar dosyaları
/var/log Günlük (log) dosyaları
/var/www Web sitelerinin genellikle durduğu yer
/home Normal kullanıcıların ev dizinleri
/root root kullanıcısının ev dizini
/tmp Geçici dosyalar (yeniden başlatmada silinebilir)

Dosya oluşturma, kopyalama, taşıma ve silme

mkdir yedekler                  # klasör oluşturur
mkdir -p proje/static/css       # iç içe klasörleri tek seferde oluşturur
touch notlar.txt                # boş dosya oluşturur
cp ayar.conf ayar.conf.yedek    # dosyayı kopyalar
cp -r site/ site-yedek/         # klasörü içindekilerle kopyalar
mv eski.txt yeni.txt            # yeniden adlandırır
mv dosya.zip /tmp/              # başka bir klasöre taşır
rm notlar.txt                   # dosyayı siler
rm -r eski-klasor/              # klasörü içindekilerle siler

Dikkat: Linux'ta çöp kutusu yoktur. rm ile silinen dosya geri gelmez. Özellikle rm -rf komutunu yazarken yolu iki kez kontrol edin ve bir ayar dosyasını değiştirmeden önce cp ile yedeğini alın.

Dosya içeriğini görüntülemek ve düzenlemek

cat dosya.txt          # tüm içeriği ekrana basar
less /var/log/syslog   # uzun dosyaları sayfa sayfa gösterir (q ile çıkış)
head -n 20 dosya.txt   # ilk 20 satır
tail -n 50 dosya.txt   # son 50 satır
tail -f /var/log/nginx/access.log   # dosyaya eklenen satırları canlı izler

Dosya düzenlemek için yeni başlayanlara en kolay editör nano'dur:

nano /etc/hosts

Değişiklikten sonra Ctrl+O ve Enter ile kaydeder, Ctrl+X ile çıkarsınız. İleride vim öğrenmek de faydalıdır, ama ilk gün için nano yeterlidir.

Arama: find ve grep

find /var/www -name "*.php"           # adı .php ile biten dosyaları bulur
find /var/log -size +100M             # 100 MB'tan büyük dosyaları bulur
grep "error" /var/log/nginx/error.log # dosyada "error" geçen satırları gösterir
grep -ri "veritabani" /etc/myapp/     # klasörde büyük-küçük harf duyarsız arar

Komutları boru (|) ile birbirine bağlayabilirsiniz. Bir komutun çıktısı diğerinin girdisi olur:

ps aux | grep nginx
cat access.log | grep "404" | wc -l

İkinci örnek, erişim günlüğünde kaç tane 404 hatası olduğunu sayar.

Kullanıcılar, sudo ve dosya izinleri

Her işi root olarak yapmak yerine kendinize yetkili bir kullanıcı açmak daha güvenlidir:

adduser ahmet
usermod -aG sudo ahmet

Bu kullanıcı yönetici gerektiren komutların başına sudo ekler: sudo apt update.

ls -l çıktısındaki -rwxr-xr-- gibi ifadeler dosya izinlerini gösterir. Üçlü gruplar sırasıyla sahip, grup ve diğerleri içindir; r okuma, w yazma, x çalıştırma demektir.

chmod 644 index.html          # sahibi okur/yazar, diğerleri yalnızca okur
chmod 755 betik.sh            # sahibi her şeyi yapar, diğerleri okur ve çalıştırır
chmod +x betik.sh             # dosyayı çalıştırılabilir yapar
chown www-data:www-data -R /var/www/site   # sahipliği web sunucusu kullanıcısına verir

Bir sorunu çözmek için chmod 777 vermek cazip gelebilir, ama bu dosyayı herkesin yazabileceği hale getirir ve güvenlik açığı yaratır. Doğru çözüm genellikle sahipliği (chown) düzeltmektir.

Paket yönetimi (apt)

Ubuntu ve Debian'da yazılımlar apt ile kurulur:

sudo apt update                 # paket listelerini yeniler
sudo apt upgrade -y             # kurulu paketleri günceller
sudo apt install nginx          # paket kurar
sudo apt remove nginx           # paketi kaldırır
apt search htop                 # depoda paket arar

Kurulumdan önce her zaman apt update çalıştırın; aksi halde eski paket listesi yüzünden "bulunamadı" hatası alabilirsiniz.

Servisler ve süreçler

Web sunucusu, veritabanı gibi arka planda çalışan programlar systemctl ile yönetilir:

systemctl status nginx      # servis çalışıyor mu?
sudo systemctl restart nginx
sudo systemctl enable nginx # açılışta otomatik başlasın

Çalışan süreçleri görmek ve gerekirse durdurmak için:

ps aux | grep python
kill 12345          # PID'i 12345 olan süreci kibarca durdurur
kill -9 12345       # yanıt vermiyorsa zorla durdurur

Kaynak kullanımını izlemek, günlükleri okumak ve güvenlik duvarı gibi konuları sunucu yönetiminde işe yarayan komutlar yazımızda ayrıntılı ele aldık.

Sistem bilgisi

uname -a          # çekirdek sürümü
lsb_release -a    # dağıtım sürümü (ör. Ubuntu 24.04 LTS)
uptime            # sunucu ne zamandır açık, yük ortalaması
free -h           # RAM kullanımı
df -h             # disk kullanımı
ip a              # ağ arayüzleri ve IP adresleri

Arşivleme ve sıkıştırma: tar ve zip

Bir klasörü yedeklemek veya başka bir sunucuya taşımak için önce tek bir dosyada toplamak işinizi kolaylaştırır. Linux'ta en yaygın biçim .tar.gz'dir:

tar -czf site-yedek.tar.gz /var/www/site   # klasörü sıkıştırarak arşivler
tar -tzf site-yedek.tar.gz                 # arşivin içeriğini listeler
tar -xzf site-yedek.tar.gz -C /tmp/        # arşivi /tmp klasörüne açar

Harflerin anlamı: c oluştur (create), x çıkar (extract), t listele, z gzip ile sıkıştır, f dosya adı. Windows kullanıcılarıyla dosya paylaşacaksanız zip daha uygundur:

sudo apt install -y zip unzip
zip -r site.zip /var/www/site
unzip site.zip -d /tmp/site

Ağ ve indirme komutları

Sunucunun internete erişip erişmediğini, bir sitenin yanıt verip vermediğini veya bir dosyayı indirmek için şunları kullanırsınız:

ping -c 4 google.com                    # bağlantıyı test eder, 4 paket gönderir
curl -I https://ornek.com               # sitenin yalnızca HTTP başlıklarını getirir
wget https://ornek.com/dosya.tar.gz     # dosyayı bulunduğunuz klasöre indirir
ss -tulpn                               # hangi portları hangi programlar dinliyor

ss -tulpn özellikle önemlidir: bir web sunucusu çalışmıyorsa portun gerçekten dinlenip dinlenmediğini ya da başka bir programın o portu kapıp kapmadığını buradan görürsünüz. Alan adının hangi IP'ye gittiğini öğrenmek için dig ornek.com +short komutu da işe yarar; bu konuyu DNS nedir yazımızda ayrıntılı anlattık.

Zaman kazandıran küçük alışkanlıklar

  • history önceki komutlarınızı numaralı listeler. !42 yazarak 42 numaralı komutu tekrar çalıştırabilirsiniz.
  • Ctrl+R ile geçmişte arama yaparsınız: birkaç harf yazın, eşleşen son komut gelir.
  • Ctrl+C çalışan komutu durdurur, Ctrl+L ekranı temizler.
  • Uzun süren bir işlemi bağlantı kopsa bile sürdürmek için tmux kullanın: tmux ile oturum açın, bağlantı koparsa yeniden bağlanıp tmux attach yazın.
  • Komutları && ile zincirleyebilirsiniz: sudo apt update && sudo apt upgrade -y ilk komut başarılı olursa ikincisini çalıştırır.

Sırada ne var?

Bu komutlarla rahat ettikten sonra sunucunuzu korumaya odaklanın: SSH anahtarı, güvenlik duvarı ve otomatik güncellemeler için Linux sunucu güvenliği rehberimizi okuyun. Pratik yapacak bir sunucu arıyorsanız TürkiyeVPS VPS paketleri root erişimiyle gelir. Bilgisayarınıza bir şey kurmadan, müşteri panelindeki Konsol düğmesiyle tarayıcıdan bağlanıp bu komutları hemen deneyebilirsiniz.

Sık Sorulan Sorular

Linux komutlarını ezberlemem gerekiyor mu?

Hayır. Sık kullandıklarınız zamanla kendiliğinden akılda kalır. Geri kalanı için --help, man ve Tab tamamlama yeterlidir. Kendi not dosyanızı tutmak da işe yarar.

sudo ile root arasındaki fark nedir?

root, sistemin tam yetkili kullanıcısıdır. sudo ise normal bir kullanıcının tek bir komutu yönetici yetkisiyle çalıştırmasını sağlar. Böylece her an tam yetkiyle çalışmaz, hata riskini azaltırsınız.

Yanlışlıkla sildiğim dosyayı geri getirebilir miyim?

Komut satırında silinen dosyalar çöp kutusuna gitmez, bu yüzden genellikle geri getirilemez. Tek güvenilir çözüm düzenli yedektir. Önemli değişikliklerden önce dosyanın kopyasını alın.

Bu komutlar her Linux dağıtımında çalışır mı?

Dosya, arama, izin ve süreç komutları neredeyse tüm dağıtımlarda aynıdır. Paket yöneticisi farklılık gösterir: Ubuntu/Debian'da apt, AlmaLinux/Rocky Linux'ta dnf kullanılır.