0Pricing
Linux Server Deployment & SSH Mastery · Ders

Sunucu Görevlerini Otomatikleştirme

Yedekleme, günlük temizleme, hizmet yeniden başlatma ve sistem durumu denetimleri gibi yaygın yönetim görevlerini otomatikleştirmek için betikler yazın.

Sunucu Görevlerini Otomatikleştirme, CoddyKit'te ücretsiz bir Linux Server Deployment & SSH Mastery dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Linux Server Deployment & SSH Mastery öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Linux Server Deployment & SSH Mastery kursu toplamda 4 dersten oluşur.

Sunucu Görevlerini Otomatikleştirme

Sunucu görevlerini otomatikleştirme konusuna hoş geldiniz! Geliştirici veya yönetici olarak sık sık tekrarlanan işlemler gerçekleştirirsiniz. Bash betikleri bunları otomatikleştirerek zaman kazandırabilir ve hataları azaltabilir.

Bu derste yedekleme, günlük temizleme, hizmet yeniden başlatma ve sistem durumu denetimleri gibi yaygın görevleri nasıl betik hâline getireceğinizi öğreneceğiz.

Neden Bash ile Otomatikleştirmeli?

Otomasyon, verimli sunucu yönetiminin temelidir. İşte nedenleri:

  • Tutarlılık: Betikler görevleri her seferinde aynı şekilde gerçekleştirir.
  • Verimlilik: Tekrarlanan el ile yapılan işlerde zaman kazanın.
  • Hata Azaltma: Daha az insan hatası, daha güvenilir işlemler anlamına gelir.
  • Zamanlama: cron gibi araçları kullanarak görevleri belirli zamanlarda kolayca çalıştırın (bunu daha sonra ele alacağız).

Basit Yedeklemeleri Betikleme

Düzenli yedeklemeler kritik öneme sahiptir. Basit bir Bash betiği önemli dizinleri arşivleyebilir ve kolay düzenleme için bunlara zaman damgası ekleyebilir.

Dizinlerin sıkıştırılmış arşiv dosyalarını (tar arşivlerini) oluşturmak için genellikle tar komutunu kullanırız.

Yedekleme Betiği Gösterimi

Bu betik, deneme amaçlı bir dizin oluşturur, içine birkaç dosya ekler ve ardından bu dizini belirtilen bir yedekleme konumundaki zaman damgalı .tar.gz dosyasına arşivler. Nasıl çalıştığını görmek için çalıştırın!

#!/bin/bash

BACKUP_DIR="/tmp/coddykit_backups"
SOURCE_DIR="/tmp/coddykit_data_to_backup"

# Create backup and source directories if they don't exist
mkdir -p "$BACKUP_DIR"
mkdir -p "$SOURCE_DIR"

# Create some dummy files to back up
echo "Content for file1" > "${SOURCE_DIR}/file1.txt"
echo "Content for file2" > "${SOURCE_DIR}/file2.txt"

# Generate a timestamp for the backup file
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="${BACKUP_DIR}/data_backup_${TIMESTAMP}.tar.gz"

echo "Creating backup of $SOURCE_DIR..."
# Create a compressed tar archive
tar -czf "$BACKUP_FILE" -C "${SOURCE_DIR}" .

echo "Backup created: $BACKUP_FILE"
echo "Contents of backup directory:"
ls -l "$BACKUP_DIR"

Günlük Temizlemeyi Otomatikleştirme

Sunucu günlükleri çok büyüyerek disk alanını tüketebilir. Bunların temizlenmesini otomatikleştirmek hayati önem taşır.

Belirli bir yaştan eski dosyaları bulmak ve ardından silmek için find komutunu kullanabiliriz.

  • find /path: Aramayı /path içinde başlatır.
  • -type f: Normal dosyaları arar.
  • -name "*.log": .log ile biten dosyaları eşleştirir.
  • -mmin +N: N dakikadan daha önce değiştirilmiş dosyaları bulur.
  • -delete: Bulunan dosyaları siler.

Günlük Temizleme Betiği Gösterimi

Bu betik bir 'current' günlük dosyası ve 2 dakika önce oluşturulmuş gibi simüle edilen bir 'old' günlük dosyası oluşturur. Ardından find komutunu kullanarak deneme amaçlı dizindeki 1 dakikadan eski tüm günlük dosyalarını siler.

#!/bin/bash

LOG_DIR="/tmp/coddykit_app_logs_demo"
OLD_MINUTES=1 # Files older than this will be deleted

mkdir -p "$LOG_DIR"

# Create a 'current' log file
touch "${LOG_DIR}/current_log_$(date +%H%M%S).log"

# Create an 'old' log file (simulated to be 2 minutes ago)
touch -d "2 minutes ago" "${LOG_DIR}/old_log_$(date +%H%M%S)_old.log"

echo "--- Before cleanup ---"
ls -l "$LOG_DIR"

echo "\nCleaning logs in $LOG_DIR older than $OLD_MINUTES minute(s)..."
# Find files in LOG_DIR that are regular files (*.log) and modified more than OLD_MINUTES ago
find "$LOG_DIR" -type f -name "*.log" -mmin +$OLD_MINUTES -delete

echo "\n--- After cleanup ---"
ls -l "$LOG_DIR"

Hizmet Yeniden Başlatmayı Betikleme

Hizmetler (web sunucuları veya veritabanları gibi) bazen çökebilir ya da yapılandırma değişikliklerinden sonra yeniden başlatılmaları gerekebilir.

Durumlarını denetlemeyi ve onları systemctl kullanarak yeniden başlatmayı otomatikleştirebiliriz (Ubuntu, Debian ve CentOS 7+ gibi systemd tabanlı Linux dağıtımlarında).

  • systemctl is-active --quiet <service>: Hizmetin etkin olup olmadığını sessizce denetler.
  • systemctl restart <service>: Hizmeti yeniden başlatır.

Hizmet Yeniden Başlatma Betiği Gösterimi

Bu betik, bir hizmeti yeniden başlatma mantığını gösterir. Bu yalıtılmış ortamda systemctl komutunu doğrudan çalıştırmak mümkün olmadığından süreç benzetim yoluyla gösterilir.

Gerçek bir sunucu ortamında echo satırlarını, genellikle sudo gerektiren gerçek systemctl komutlarıyla değiştirirsiniz.

#!/bin/bash

SERVICE_NAME="my-dummy-web-app"

echo "Simulating service management for: $SERVICE_NAME"

# Check if the service is active (simulated)
# In a real script: if ! systemctl is-active --quiet $SERVICE_NAME; then
if [ "$SERVICE_NAME" = "my-dummy-web-app" ]; then # Always true for demo
  echo "Service $SERVICE_NAME is currently 'inactive' (simulated)."
  echo "Attempting to restart $SERVICE_NAME..."
  
  # Restart the service (simulated)
  # In a real script: sudo systemctl restart $SERVICE_NAME
  echo "Service $SERVICE_NAME restarted successfully (simulated)."
else
  echo "Service $SERVICE_NAME is already running (simulated)."
fi

echo "\nRemember: For real services like 'nginx' or 'apache2', you'd use: sudo systemctl restart nginx"

Temel Sistem Durumu Denetimleri

Otomatik sistem durumu denetimleri, olası sunucu sorunları için erken uyarılar sağlar. Betikler temel ölçümleri düzenli olarak izleyebilir:

  • Disk Kullanımı: Boş alanı denetlemek için df -h kullanın.
  • Bellek Kullanımı: RAM kullanımını görmek için free -h kullanın.
  • Sistem Yükü: uptime ortalama yükü gösterir.

Bu denetimler, eşikler aşıldığında size bildirim gönderen uyarı sistemleriyle bütünleştirilebilir.

Hızlı Sınama: Günlük Temizleme

/var/log/myapp içindeki 30 günden eski günlük dosyalarını temizleyecek bir betik yazmanız gerekiyor. Hangi find komutunu kullanırsınız?

Özet ve Sonraki Adımlar

Bash betiklerini kullanarak temel sunucu görevlerini nasıl otomatikleştireceğinizi öğrendiniz:

  • Yedeklemeler: Zaman damgalarıyla arşivleme için tar kullanma.
  • Günlük Temizleme: Eski dosyaları silmek için find kullanma.
  • Hizmet Yönetimi: systemctl ile hizmetlerle etkileşim kurma.
  • Sistem Durumu Denetimleri: Disk ve bellek gibi sistem kaynaklarını izleme.

Bu betikler, sağlam ve verimli sunucuları korumanın temelini oluşturur. Bir sonraki derste, betiklerinizi daha da güvenilir hâle getirmek için hata yönetimini ve günlük kaydını ele alacağız!

Sıkça Sorulan Sorular

“Sunucu Görevlerini Otomatikleştirme” dersi ücretsiz mi?

Evet — “Sunucu Görevlerini Otomatikleştirme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Linux Server Deployment & SSH Mastery kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Linux Server Deployment & SSH Mastery kursu toplamda 4 dersten oluşur.

“Sunucu Görevlerini Otomatikleştirme” dersinde ne öğreneceğim?

Yedekleme, günlük temizleme, hizmet yeniden başlatma ve sistem durumu denetimleri gibi yaygın yönetim görevlerini otomatikleştirmek için betikler yazın. Linux Server Deployment & SSH Mastery ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Linux Server Deployment & SSH Mastery öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Linux Server Deployment & SSH Mastery, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Sunucu Görevlerini Otomatikleştirme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Linux Server Deployment & SSH Mastery dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Linux Server Deployment & SSH Mastery dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Bash Betik Yazımına Giriş
  2. Sunucu Görevlerini Otomatikleştirme
  3. Betiklerde Hata İşleme ve Günlükleme
  4. İşlevler, Bağımsız Değişkenler ve Yeniden Kullanılabilir Betikler
← Linux Server Deployment & SSH Mastery Sayfasına Dön