Neler yeni

Yazılım Forum

Tüm özelliklerimize erişmek için şimdi bize katılın. Kayıt olduktan ve giriş yaptıktan sonra konu oluşturabilecek, mevcut konulara yanıt gönderebilecek, itibar kazanabilecek, özel mesajlaşmaya erişebilecek ve çok daha fazlasını yapabileceksiniz! Bu hizmetlerimiz ise tamamen ücretsiz ve kurallara uyulduğu sürece sınırsızdır, o zaman ne bekliyorsunuz? Hadi, sizde aramıza katılın!

Sistem Yönetiminde Bash Betikleriyle Verimlilik ve Otomasyon: Kapsamlı Bir Rehber

200px-Bash_Logo.svg.png


Giriş: Sistem Yönetiminde Bash'in Gücü

Linux ve Unix tabanlı sistemlerin kalbinde yer alan Bash (Bourne-Again SHell), sistem yöneticileri için vazgeçilmez bir araçtır. Komut satırı arayüzü üzerinden sistemle etkileşim kurmanın ötesinde, tekrarlayan görevleri otomatikleştirmek, karmaşık işlemleri basitleştirmek ve verimliliği artırmak için güçlü betikler yazmaya olanak tanır. Bir sistem yöneticisi olarak, Bash'e hakim olmak sadece iş akışınızı hızlandırmakla kalmaz, aynı zamanda sorun giderme ve sistem analizi yeteneklerinizi de önemli ölçüde geliştirir. Bu rehberde, Bash'in temelden ileri seviyeye kadar sistem yönetiminde nasıl kullanılabileceğini, pratik örneklerle ve dikkat edilmesi gereken noktalarla birlikte ele alacağız. Amacımız, hem yeni başlayanların hem de deneyimli kullanıcıların Bash yetkinliklerini bir üst seviyeye taşımasına yardımcı olmaktır.

1. Bash'in Temelleri: Komut Satırında Yaşamak

Her sistem yöneticisinin ilk durağı, temel Bash komutlarını anlamaktır. Bu komutlar, dosya ve dizin yönetimi, süreç kontrolü ve ağ işlemleri gibi günlük görevlerin temelini oluşturur.

Dosya ve Dizin Yönetimi:
  • ls: Dizin içeriğini listeler.
    Kod:
    ls -lha /var/log
  • cd: Dizin değiştirir.
    Kod:
    cd /etc/nginx/conf.d
  • pwd: Mevcut çalışma dizinini gösterir.
    Kod:
    pwd
  • cp: Dosya ve dizin kopyalar.
    Kod:
    cp /etc/fstab /tmp/fstab.bak
  • mv: Dosya ve dizin taşır veya yeniden adlandırır.
    Kod:
    mv my_script.sh /usr/local/bin/
  • rm: Dosya ve dizin siler. Dikkatli olun!
    Kod:
    rm -rf /path/to/my/sensitive/data
  • mkdir: Dizin oluşturur.
    Kod:
    mkdir -p /var/www/html/mysite
  • cat, less, more, tail, head: Dosya içeriğini görüntüler. Log dosyalarını incelerken çok kullanışlıdırlar.
    Kod:
    tail -f /var/log/syslog

Metin İşleme ve Arama:
  • grep: Metin içerisinde desen arar.
    Kod:
    grep -i 'error' /var/log/apache2/error.log
  • sed: Metin üzerinde akış düzenlemeleri yapar.
    Kod:
    sed 's/old_text/new_text/g' my_file.txt
  • awk: Metin dosyalarını işlemek ve raporlamak için güçlü bir araç.
    Kod:
    awk '{print $1}' /etc/passwd
  • find: Belirli kriterlere göre dosya ve dizin arar.
    Kod:
    find /var/www -name '*.php' -mtime +7 -delete

2. Süreç Yönetimi ve İzleme

Sistemde çalışan süreçleri yönetmek, performans sorunlarını teşhis etmek ve uygulamaların durumunu kontrol etmek için hayati öneme sahiptir.

  • ps: Anlık süreçleri listeler.
    Kod:
    ps aux | grep nginx
  • top/htop: Etkileşimli süreç izleme ve kaynak kullanımı görüntüler.
    Kod:
    top
  • kill: Süreçleri sonlandırır.
    Kod:
    kill -9 12345
    (PID 12345'i zorla sonlandırır)
  • jobs, bg, fg: Arka plandaki ve ön plandaki işleri yönetir.
    Kod:
    firefox &
    (Firefox'u arka planda başlatır)
  • systemctl: Systemd servislerini yönetir (modern Linux dağıtımlarında).
    Kod:
    sudo systemctl restart apache2

3. Ağ Yönetimi Komutları

Ağ bağlantılarını kontrol etmek, sorun gidermek ve yapılandırmak için Bash komutları sıkça kullanılır.

  • ping: Ağ bağlantısını test eder.
    Kod:
    ping google.com
  • ip: Ağ arayüzlerini ve routing tablolarını yönetir (eski `ifconfig` yerine).
    Kod:
    ip a show eth0
  • netstat/ss: Aktif bağlantıları, dinleyen portları gösterir.
    Kod:
    ss -tuln
  • curl/wget: URL'lerden veri indirir veya HTTP istekleri yapar.
    Kod:
    curl -sL https://example.com/install.sh | bash

4. Kullanıcı ve İzin Yönetimi

Güvenlik ve erişim kontrolü için kullanıcı ve dosya izinlerini yönetmek elzemdir.

  • useradd, userdel, usermod: Kullanıcı ekleme, silme, düzenleme.
    Kod:
    sudo useradd -m -s /bin/bash yenikullanici
  • groupadd, groupdel, gpasswd: Grup yönetimi.
    Kod:
    sudo groupadd devops
  • passwd: Kullanıcı şifresi belirleme.
    Kod:
    sudo passwd yenikullanici
  • chmod: Dosya/dizin izinlerini değiştirir.
    Kod:
    chmod 755 script.sh
  • chown: Dosya/dizin sahibini değiştirir.
    Kod:
    sudo chown www-data:www-data /var/www/html

5. Bash Betik Yazımının Temelleri

Tekrarlayan görevleri otomatikleştirmek için betik yazımı Bash'in en güçlü yönüdür. Bir Bash betiği genellikle
Kod:
#!/bin/bash
ile başlar (shebang).

Değişkenler:
Bash'te değişken tanımlamak çok kolaydır. Örnek:
Kod:
#!/bin/bash

SERVER_NAME="web01.example.com"
LOG_DIR="/var/log/apache2"

echo "Sunucu Adı: $SERVER_NAME"
echo "Log Dizini: $LOG_DIR"

# Komut çıktısını değişkene atama
ACTIVE_USERS=$(who | wc -l)
echo "Aktif Kullanıcı Sayısı: $ACTIVE_USERS"

Kontrol Yapıları:
a) Koşullu İfadeler (if-else):
Kod:
#!/bin/bash

read -p "Bir sayı girin: " NUMBER

if [ "$NUMBER" -gt 10 ]; then
  echo "Girdiğiniz sayı 10'dan büyük."
elif [ "$NUMBER" -eq 10 ]; then
  echo "Girdiğiniz sayı tam olarak 10."
else
  echo "Girdiğiniz sayı 10'dan küçük."
fi

b) Döngüler (for, while):
Kod:
#!/bin/bash

# For döngüsü: Dosyaları yedekleme
for FILE in /etc/*.conf; do
  echo "Yedekleniyor: $FILE"
  cp "$FILE" "${FILE}.bak"
done

# While döngüsü: Servis kontrolü
SERVICE="apache2"
while ! systemctl is-active --quiet $SERVICE; do
  echo "$SERVICE servisi aktif değil. Bekleniyor..."
  sleep 5
done
echo "$SERVICE servisi aktif ve çalışıyor."

Fonksiyonlar:
Kod tekrarını önlemek ve betiği daha okunabilir hale getirmek için fonksiyonlar kullanılır.
Kod:
#!/bin/bash

function log_message() {
  echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1"
}

log_message "Betik başlatılıyor."

# İşlemler...

log_message "Tüm işlemler tamamlandı."

Giriş/Çıkış Yönlendirme ve Pipe:
  • > Çıktıyı dosyaya yazar (üzerine yazar).
  • >> Çıktıyı dosyanın sonuna ekler.
  • < Dosya içeriğini komuta girdi olarak verir.
  • 2> Hata çıktısını dosyaya yönlendirir.
  • &> Hem standart hem de hata çıktısını yönlendirir.
  • | (Pipe) Bir komutun çıktısını diğerine girdi olarak verir.
    Kod:
    ls -l | grep .txt

6. Pratik Otomasyon Senaryoları ve Betik Örnekleri

Bash betikleriyle otomasyon, sistem yöneticisinin hayatını kolaylaştıran kilit bir özelliktir. İşte bazı yaygın senaryolar:

a) Log Dosyası Temizliği:
Belirli bir süreden daha eski log dosyalarını silen basit bir betik:
Kod:
#!/bin/bash

LOG_DIR="/var/log/nginx"
DAYS_OLD=30

find "$LOG_DIR" -type f -name "*.log" -mtime +$DAYS_OLD -delete

# Betiği cron ile haftalık çalıştırma örneği:
# 0 3 * * 0 /path/to/clean_logs.sh

b) Basit Yedekleme Betiği:
Belirli bir dizini sıkıştırıp yedekleme dizinine kopyalar:
Kod:
#!/bin/bash

SOURCE_DIR="/var/www/html/mysite"
BACKUP_DIR="/mnt/backups/web_data"
DATE=$(date +%Y%m%d%H%M%S)
BACKUP_FILE="${BACKUP_DIR}/mysite_backup_${DATE}.tar.gz"

mkdir -p "$BACKUP_DIR"

tar -czvf "$BACKUP_FILE" "$SOURCE_DIR"

if [ $? -eq 0 ]; then
  echo "Yedekleme başarılı: $BACKUP_FILE"
  # Eski yedekleri temizle (son 7 yedeği tut)
  find "$BACKUP_DIR" -type f -name "mysite_backup_*.tar.gz" -mtime +7 -delete
else
  echo "Yedekleme hatası!"
fi

c) Sistem Kaynak İzleme ve Uyarı:
Disk alanı belirli bir eşiğin altına düştüğünde uyarı gönderen bir betik:
Kod:
#!/bin/bash

DISK_USAGE_THRESHOLD=90 # Yüzde olarak
PARTITION="/"

CURRENT_USAGE=$(df "$PARTITION" | awk 'NR==2 {print $5}' | sed 's/%//g')

if [ "$CURRENT_USAGE" -ge "$DISK_USAGE_THRESHOLD" ]; then
  echo "UYARI: Disk kullanımı $PARTITION üzerinde %${CURRENT_USAGE} ile eşiği aştı!"
  # Buraya e-posta gönderme, SMS atma gibi uyarı mekanizmaları eklenebilir.
  # Örneğin: echo "Mesajınız" | mail -s "Konu" admin@example.com
fi

7. Bash Betiklerinde Güvenlik ve En İyi Uygulamalar

Betiklerinizi yazarken aşağıdaki noktaları göz önünde bulundurmak, hem güvenliği artırır hem de bakımı kolaylaştırır:

  • Sürekli Tırnak Kullanımı: Değişkenleri her zaman çift tırnak içine alın (`\"$VARIABLE\"`), boşluk içeren dosya adları gibi sorunları önler.
  • Hata Kontrolü:
    Kod:
    set -e
    komutu, bir komut başarısız olduğunda betiğin durmasını sağlar.
    Kod:
    set -u
    tanımlanmamış değişken kullanımını engeller.
    Kod:
    set -o pipefail
    ise pipe içindeki herhangi bir komutun başarısız olması durumunda pipe'ın başarısız olmasını sağlar. Bu üçü genellikle birlikte kullanılır:
    Kod:
    #!/bin/bash
    set -euo pipefail
    # Betik içeriği
  • Yorum Kullanımı: Betiğinizin ne yaptığını ve karmaşık kısımları açıklayın.
    Kod:
    # Bu bir yorumdur
  • Fonksiyonları Kullanın: Tekrar eden kod bloklarını fonksiyonlara ayırın.
  • Girdileri Doğrulayın: Kullanıcıdan veya başka bir kaynaktan gelen girdileri daima doğrulayın ve sanitize edin.
  • Root Olarak Çalıştırmayın: Betikleri mümkün olduğunca düşük ayrıcalıklarla çalıştırın. Sudo kullanmanız gerekiyorsa, bunu betik içinde dikkatlice yönetin.
  • Günlük Kaydı (Logging): Betiklerinizin çıktısını ve hatalarını bir log dosyasına yönlendirin.
  • Yol Güvenliği: PATH ortam değişkenine güvenmeyin. Komutların tam yollarını belirtin (örn:
    Kod:
    /bin/ls
    yerine
    Kod:
    ls
    ).

"Bash, bir sistem yöneticisinin elindeki İsviçre çakısı gibidir. Ne kadar iyi kullanırsanız, o kadar çok sorunu çözebilir ve o kadar çok zaman kazanabilirsiniz."

Sonuç

Sistem yönetimi, sürekli değişen ve gelişen bir alandır. Bash, bu dinamik ortamda bir sistem yöneticisinin en güvenilir dostlarından biridir. Temel komutlardan karmaşık otomasyon betiklerine kadar sunduğu geniş yelpazedeki yetenekler sayesinde, günlük iş yükünüzü hafifletebilir, hataları en aza indirebilir ve sistemlerinizin sürekli çalışır durumda kalmasını sağlayabilirsiniz. Unutmayın, Bash'te ustalık pratikle gelir. Bu rehberde sunulan bilgileri ve örnekleri kendi sistemlerinizde deneyerek bilginizi pekiştirin ve yeni senaryolar üzerinde çalışarak kendinizi geliştirmeye devam edin. Bash öğrenmek, sadece bir araç öğrenmek değil, aynı zamanda sistemler üzerinde tam kontrol sahibi olmanın kapılarını aralamaktır.

Daha fazla kaynak için:
* Bash Referans Kılavuzu (İngilizce)
* Bash Scripting Intro (İngilizce)
* Bash - Vikipedi (Türkçe)

Umarım bu kapsamlı rehber, Bash konusundaki bilgi birikiminize değerli bir katkı sağlar ve sistem yönetimi görevlerinizde size yol gösterir. Başarılar!
 
shape1
shape2
shape3
shape4
shape5
shape6
Üst

Bu web sitenin performansı Hazal Host tarafından sağlanmaktadır.

YazilimForum.com.tr internet sitesi, 5651 sayılı Kanun’un 2. maddesinin 1. fıkrasının (m) bendi ve aynı Kanun’un 5. maddesi kapsamında Yer Sağlayıcı konumundadır. Sitede yer alan içerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır.

YazilimForum.com.tr, kullanıcılar tarafından paylaşılan içeriklerin doğruluğunu, güncelliğini veya hukuka uygunluğunu garanti etmez ve içeriklerin kontrolü veya araştırılması ile yükümlü değildir. Kullanıcılar, paylaştıkları içeriklerden tamamen kendileri sorumludur.

Hukuka aykırı içerikleri fark ettiğinizde lütfen bize bildirin: lydexcoding@gmail.com

Sitemiz, kullanıcıların paylaştığı içerik ve bilgileri 6698 sayılı KVKK kapsamında işlemektedir. Kullanıcılar, kişisel verileriyle ilgili haklarını KVKK Politikası sayfasından inceleyebilir.

Sitede yer alan reklamlar veya üçüncü taraf bağlantılar için YazilimForum.com.tr herhangi bir sorumluluk kabul etmez.

Sitemizi kullanarak Forum Kuralları’nı kabul etmiş sayılırsınız.

DMCA.com Protection Status Copyrighted.com Registered & Protected