15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın
02.09.2025

Linux’ta .sh Dosyası Nasıl Çalıştırılır: Başlangıççılar ve Sistem Yöneticileri için Tam Rehber

Shell scriptleri Linux otomasyonunun omurgasıdır. Bir web uygulaması dağıtıyor, yedeklemeleri planlıyor veya yeni sağlanan bir sunucuyu yapılandırıyor olsanız da, .sh dosyaları karmaşık komut dizilerini tek, tekrarlanabilir bir yürütülebilir dosyaya paketlemenizi sağlar. Bu kılavuz, Linux’ta shell scriptlerini çalıştırmanın her yönteminde size yol gösterir — temel yürütmeden arka plan işlemlerine ve cron zamanlamasına kadar — üretim ortamlarında geçerli olan en iyi uygulamalarla.

Linux’ta .sh Dosyası Nedir?

Bir .sh dosyası, Linux shell’i tarafından satır satır yorumlanan ve yürütülen shell dilinde (tipik olarak Bash veya POSIX sh) yazılmış düz metin bir scriptdir. Shell scriptleri şu amaçlarla kullanılır:

  • Tekrarlayan sistem yönetimi görevlerini otomatikleştirmek
  • Uygulamaları dağıtmak ve yapılandırmak
  • Kullanıcıları, izinleri ve dosya sistemlerini yönetmek
  • Yedeklemeler ve günlük döndürme gibi bakım işlerini planlamak
  • Sağlama sonrasında yeni sunucuları önyüklemek

Bir VPS Hosting ortamını veya bir Dedicated Server‘ı yönetiyorsanız, shell scripting her hafta saatlerce manuel çalışmadan tasarruf ettirecek vazgeçilmez bir beceridir.

Ön Koşullar

Herhangi bir .sh dosyasını çalıştırmadan önce şunlara sahip olduğunuzdan emin olun:

  • Linux terminaline erişim (yerel veya SSH aracılığıyla)
  • Uygun izinlere sahip bir kullanıcı hesabı
  • Script dosyası zaten sistemde (yerel olarak oluşturulmuş veya SCP/SFTP aracılığıyla aktarılmış)

Yöntem 1: chmod ile Dosyayı Yürütülebilir Hale Getirin

Varsayılan olarak, yeni oluşturulan veya indirilen .sh dosyaları yürütme izinlerine sahip DEĞİLDİR. Script’i bir program olarak çalıştırmadan önce, chmod komutu kullanarak açıkça yürütme haklarını vermelisiniz.

Dosyayı yürütülebilir hale getirmek için:

chmod +x script.sh

İzinlerin doğru şekilde uygulandığını doğrulamak için:

ls -l script.sh

Şuna benzer bir çıktı görmelisiniz:

-rwxr-xr-x 1 user group 1024 Jan 15 10:30 script.sh

rwx bayrakları, dosyanın artık sahip, grup ve diğerleri tarafından yürütülebilir olduğunu doğrular.

> Güvenlik ipucu: Yürütmeyi yalnızca dosya sahibine kısıtlamak istiyorsanız, chmod 755 yerine chmod 700 kullanın.

Yöntem 2: Göreceli veya Mutlak Yol Kullanarak Script’i Çalıştırın

Dosya yürütülebilir hale geldikten sonra, bunu doğrudan terminalden çalıştırabilirsiniz.

Göreceli Yol Kullanma (Geçerli Dizin)

Script geçerli çalışma dizininizde ise, bunu ./ ile başlatın:

./script.sh

./ shell’e geçerli dizinde aramak yerine sistem PATH’inde aramak yerine geçerli dizinde aramasını söyler.

Mutlak Yol Kullanma

Script başka bir konumda depolanıyorsa, tam yolunu sağlayın:

/home/user/scripts/script.sh

veya

~/scripts/script.sh

Mutlak yollar kullanmak, özellikle cron işlerinden veya çalışma dizininin farklı olabileceği diğer otomatik bağlamlardan script’ler çalıştırırken önemlidir.

Yöntem 3: bash veya sh ile Script’i Çalıştırın (Yürütme İzni Gerekli Değil)

Dosya yürütme izinlerine sahip olmasa bile, yorumlayıcıyı açıkça çağırarak bir shell script’i çalıştırabilirsiniz. Bu, bir script’i kalıcı olarak yürütülebilir hale getirmeden önce hızlı bir şekilde test etmek için özellikle yararlıdır.

bash script.sh

veya POSIX uyumlu scriptler için:

sh script.sh

bash ve sh Arasındaki Fark

KomutYorumlayıcıBash’e Özgü Özellikleri Destekler
bashGNU BashEvet
shPOSIX sh (Ubuntu’da genellikle dash)Hayır

Script’iniz diziler, [[ ]] koşulları veya işlem ikamesi gibi Bash’e özgü söz dizimini kullanıyorsa, sh yerine her zaman bash kullanın.

Yöntem 4: Script’i Süper Kullanıcı Olarak Çalıştırın (sudo)

Bazı scriptler sistem dosyalarını değiştirmek, hizmetleri yönetmek, paketleri yüklemek veya ağ yapılandırmasını değiştirmek için kök düzeyinde ayrıcalıklara ihtiyaç duyar. İzinleri yükseltmek için sudo kullanın:

sudo ./script.sh

veya script’i doğrudan bash’e yükseltilmiş haklarla geçirin:

sudo bash script.sh

Önemli Güvenlik Hususları

  • Bunu ilk okuduğunuz olmadan bir script’i asla root olarak çalıştırmayın. Sudo erişimi olan kötü amaçlı veya kötü yazılmış bir script geri döndürülemez sistem hasarına neden olabilir.
  • Script’leri minimum gerekli ayrıcalıklarla çalıştırmayı tercih edin.
  • Bir script yalnızca belirli bir dizine yazması gerekiyorsa, tüm script’i root olarak çalıştırmak yerine dizin izinlerini ayarlamayı düşünün.

Yöntem 5: Script’i Arka Planda Çalıştırın

Varsayılan olarak, terminalde bir script çalıştırmak, script tamamlanana kadar oturumunuzu engeller. Uzun süren görevler için — büyük dosya aktarımları, veritabanı göçleri veya sunucu derlemeleri — işlemi arka plana göndermek isteyeceksiniz.

& Operatörünü Kullanma

./script.sh &

& sembolü işlemi arka plana çatallar ve hemen terminalinize kontrol döndürür. Shell, arka plan işinin PID’sini (İşlem Kimliği) yazdırır; bunu daha sonra izlemek veya sonlandırmak için kullanabilirsiniz.

Oturum Kapatıldıktan Sonra Script’i Çalışır Durumda Tutun nohup ile

SSH’den bağlantıyı kesersaniz, & ile başlatılan arka plan işleri tipik olarak sonlandırılacaktır. Bunu önlemek için nohup kullanın:

nohup ./script.sh &

Çıktı varsayılan olarak nohup.out’a yönlendirilir. Özel bir günlük dosyası belirtmek için:

nohup ./script.sh > script.log 2>&1 &

Arka Plan İşlerini İzleyin

jobs

Yöntem 6: Cron ile Script Yürütmesini Planlayın

Yinelenen görevler için — gece yedeklemeleri, haftalık temizlemeler, saatlik sağlık kontrolleri — Linux’un yerleşik cron zamanlayıcısı standart çözümdür.

Crontab Editörünü Açın

crontab -e

Cron Söz Dizimi

* * * * * /path/to/script.sh
│ │ │ │ │
│ │ │ │ └─ Haftanın günü (0-6, 0 = Pazar)
│ │ │ └─── Ay (1-12)
│ │ └───── Ayın günü (1-31)
│ └─────── Saat (0-23)
└───────── Dakika (0-59)

Pratik Cron Örnekleri

ZamanlamaCron İfadesiÖrnek Kullanım Durumu
Her gün saat 2:00’de0 2 * * *Gece veritabanı yedeklemesi
Her Pazartesi saat 6:00’da0 6 * * 1Haftalık günlük döndürme
Her saat0 * * * *Çalışma süresi izleme kontrolü
Her 15 dakikada*/15 * * * *Önbellek yenileme
Sistem yeniden başlatıldığında@rebootÖnyüklemede bir hizmet veya script başlatın

Örnek: Otomatik Günlük Yedekleme

0 2 * * * /home/user/scripts/backup.sh >> /var/log/backup.log 2>&1

Bu, backup.sh’yi her gün saat 2:00’de çalıştırır ve denetim için hem standart çıktıyı hem de hataları bir günlük dosyasına ekler.

> Pro ipucu: Cron girdilerinde her zaman mutlak yollar kullanın. Cron minimal bir ortamla çalışır ve etkileşimli shell’inizle aynı PATH’e erişemeyebilir.

Yöntem 7: Script’i Kaynak Olarak Kullanın (Geçerli Shell Bağlamında Çalıştırın)

Bilmek değer olan bir yürütme yöntemi daha vardır: bir script’i kaynak olarak kullanmak. Yukarıdaki yöntemlerin aksine, kaynak alma script’i bir alt shell oluşturmak yerine geçerli shell oturumunda çalıştırır. Bu, script’te tanımlanan herhangi bir değişken veya işlevin geçerli ortamınızda kalıcı olması anlamına gelir.

. ./script.sh

veya eşdeğer olarak:

source ./script.sh

Bu, ortam değişkenlerini yüklemek, sanal ortamları etkinleştirmek veya geçerli oturuma yapılandırma değişiklikleri uygulamak için yaygın olarak kullanılır.

Yaygın Hataları Giderme

Hata MesajıOlası NedenÇözüm
Permission deniedDosya yürütme izni eksikchmod +x script.sh çalıştırın
No such file or directoryYanlış yol veya eksik dosyapwd ve ls ile yolu doğrulayın
Bad interpreterYanlış shebang satırı (örn. Windows satır sonları)dos2unix script.sh çalıştırarak satır sonlarını düzeltin
command not foundScript PATH’de değil ve ./ öneki yok./script.sh veya tam mutlak yol kullanın
Unexpected operatorScript bash için yazılmış ama sh ile çalıştırılmışbash’i açıkça kullanın

Shell Script’leri Yazma ve Çalıştırma için En İyi Uygulamalar

Bu uygulamaları takip etmek, script’lerinizi daha güvenli, daha bakımı kolay ve hata ayıklaması daha kolay hale getirecektir — özellikle sunucu ortamlarında.

1. Her Zaman Shebang Satırı ile Başlayın

Her script’in ilk satırı yorumlayıcıyı bildirmelidir:

#!/bin/bash

veya maksimum taşınabilirlik için:

#!/usr/bin/env bash

2. Kesin Modu Etkinleştirin

Her üretim script’inin üst kısmına bunu ekleyin:

set -euo pipefail

  • -e — Herhangi bir komut başarısız olursa hemen çık
  • -u — Ayarlanmamış değişkenleri hata olarak işle
  • -o pipefail — Borulu komutlardaki hataları yakala

3. Script’i Çalıştırmadan Önce Okuyun

Asla harici veya güvenilmeyen bir kaynaktan bir .sh dosyasını içeriğini gözden geçirmeden çalıştırmayın:

cat script.sh

veya bunu bir metin editöründe açın. Bu, özellikle sudo ile çalıştırırken kritiktir.

4. Yorum Kullanın

# Bu, bir yorum satırıdır
echo “Bu kod yürütülür” # Satır içi yorum

5. Script’leri Özel Dizinlerde Organize Edin

DizinÖnerilen Kullanım
/usr/local/binTüm kullanıcılar tarafından erişilebilen sistem genelinde script’ler
~/bin veya ~/.local/binKişi
15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın