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:
crongibi 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ı/pathiçinde başlatır.-type f: Normal dosyaları arar.-name "*.log":.logile 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 -hkullanın. - Bellek Kullanımı: RAM kullanımını görmek için
free -hkullanın. - Sistem Yükü:
uptimeortalama 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
tarkullanma. - Günlük Temizleme: Eski dosyaları silmek için
findkullanma. - Hizmet Yönetimi:
systemctlile 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
- Bash Betik Yazımına Giriş
- Sunucu Görevlerini Otomatikleştirme
- Betiklerde Hata İşleme ve Günlükleme
- İşlevler, Bağımsız Değişkenler ve Yeniden Kullanılabilir Betikler