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
24.10.2024

Linux’ta Komut Satırından Servisleri Yeniden Başlatma: Eksiksiz Bir Yönetici Kılavuzu

Linux servislerini verimli bir şekilde yönetmek, herhangi bir sistem yöneticisinin ustalaşması gereken en temel becerilerden biridir. İster yapılandırma değişikliklerini uygulayın, ister beklenmedik bir çökmeden kurtulun, ister hatalı davranan bir daemon’u giderin, ister yalnızca çalışan bir işlemi yenileyin — altyapınızı sağlıklı ve duyarlı tutmak için komut satırından servisleri nasıl yeniden başlatacağınızı bilmek şarttır.

Bu kapsamlı kılavuz, Linux servislerini yeniden başlatmanın tüm önemli yöntemlerini ele almaktadır — systemd, SysVinit ve Upstart dahil — pratik örnekler, durum kontrol teknikleri, log analizi ipuçları ve deneyimli yöneticilerin günlük olarak kullandığı en iyi uygulamalarla birlikte.

Linux Servisleri ve Servis Yöneticilerini Anlamak

Linux’ta bir servis (daemon olarak da adlandırılır), belirli ve süregelen bir işlevi yerine getiren arka plan sürecidir. Yaygın örnekler şunlardır:

  • Apache / Nginx — web sunucusu daemon’ları
  • MySQL / PostgreSQL — veritabanı sunucusu daemon’ları
  • SSH (sshd) — güvenli kabuk erişim daemon’u
  • Cron — zamanlanmış görev daemon’u
  • Postfix / Dovecot — posta sunucusu daemon’ları

Bu servisler, başlatma, durdurma, yeniden başlatma ve izlemeden sorumlu olan bir init sistemi veya servis yöneticisi tarafından kontrol edilir. Linux’ta karşılaşacağınız en yaygın üç servis yöneticisi şunlardır:

Servis YöneticisiKullanıldığı Yerler
systemdUbuntu 15.04+, Debian 8+, CentOS 7+, RHEL 7+, Fedora, AlmaLinux, Rocky Linux
SysVinitEski Debian, eski Ubuntu (15.04 öncesi), eski RHEL/CentOS 6
UpstartUbuntu 9.10’dan 14.10’a kadar

Modern Linux sunucularının büyük çoğunluğu — VPS Hosting veya Dedicated Sunucular üzerinde çalışanlar dahil — varsayılan servis yöneticisi olarak systemd kullanır. Ancak üç sistemi de anlamak, karşılaşabileceğiniz her ortama hazırlıklı olmanızı sağlar.

Yöntem 1: systemd ile Servisleri Yeniden Başlatma (Modern Linux)

systemd, neredeyse tüm modern Linux dağıtımlarında baskın init sistemidir. Servisleri, servis yönetimi için tutarlı ve güçlü bir arayüz sağlayan systemctl komut satırı aracı aracılığıyla yönetir.

Adım 1: Bir Terminal Açın

Sunucunuzun komut satırı arayüzüne erişin — doğrudan, SSH aracılığıyla veya hosting kontrol paneliniz üzerinden.

Adım 2: Bir Servisi Yeniden Başlatın

systemd ile bir servisi yeniden başlatmanın temel sözdizimi şudur:

sudo systemctl restart <service-name>

Yaygın gerçek dünya örnekleri:

# Restart the Apache web server
sudo systemctl restart apache2

# Restart Nginx
sudo systemctl restart nginx

# Restart MySQL / MariaDB
sudo systemctl restart mysql

# Restart the SSH daemon
sudo systemctl restart sshd

# Restart the Cron scheduler
sudo systemctl restart cron

# Restart Postfix mail server
sudo systemctl restart postfix

> Not: Bazı dağıtımlarda servis adı biraz farklılık gösterebilir. Örneğin, Apache, Debian/Ubuntu sistemlerinde apache2 olabilirken CentOS/RHEL/AlmaLinux sistemlerinde httpd olabilir.

Adım 3: Servisin Başarıyla Yeniden Başladığını Doğrulayın

Yeniden başlatma komutu verdikten sonra, servisin temiz bir şekilde geri döndüğünü her zaman onaylayın:

sudo systemctl status <service-name>

Sağlıklı bir Apache servisi için örnek çıktı:

sudo systemctl status apache2

● apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2025-01-13 10:45:22 UTC; 3s ago
    Process: 12345 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
   Main PID: 12346 (apache2)

Dikkat edilmesi gereken temel göstergeler:

  • Active: active (running) — servis normal şekilde çalışıyor
  • Active: failed — servis başlatılamadı; hemen logları kontrol edin
  • Loaded: enabled — servis önyüklemede otomatik olarak başlayacak şekilde yapılandırılmış

Ek Kullanışlı systemd Komutları

Basit bir yeniden başlatmanın ötesinde, systemd yöneticilerin düzenli olarak kullandığı çeşitli ilgili komutlar sağlar:

# Stop a service completely
sudo systemctl stop <service-name>

# Start a stopped service
sudo systemctl start <service-name>

# Reload configuration without a full restart (if supported)
sudo systemctl reload <service-name>

# Reload config or restart if reload isn't supported
sudo systemctl reload-or-restart <service-name>

# Enable a service to start automatically at boot
sudo systemctl enable <service-name>

# Disable a service from starting at boot
sudo systemctl disable <service-name>

# Check if a service is currently active
sudo systemctl is-active <service-name>

# Check if a service is enabled at boot
sudo systemctl is-enabled <service-name>

journalctl ile Gerçek Zamanlı Servis Loglarını Görüntüleme

systemd, journal loglama sistemiyle entegre çalışır. Belirli bir servisin loglarını görüntülemek için:

# View all logs for a service
sudo journalctl -u apache2

# Follow logs in real time (like tail -f)
sudo journalctl -u apache2 -f

# View only the most recent 50 lines
sudo journalctl -u apache2 -n 50

# View logs since the last boot
sudo journalctl -u apache2 -b

Bu, bir servis yeniden başlatılamadığında ve kök nedeni hızla teşhis etmeniz gerektiğinde son derece değerlidir.

Yöntem 2: SysVinit ile Servisleri Yeniden Başlatma (Eski Linux)

SysVinit, eski sunucularda, gömülü sistemlerde ve eski Linux dağıtımlarında hâlâ bulunan eski bir init sistemidir. Eski bir sunucu ortamını yönetiyorsanız, daemon’ları yönetmek için service komutunu kullanırsınız.

Adım 1: Bir Terminal Açın

SSH veya doğrudan konsol erişimi aracılığıyla sunucunuza bağlanın.

Adım 2: Bir Servisi Yeniden Başlatın

sudo service <service-name> restart

Yaygın örnekler:

# Restart MySQL
sudo service mysql restart

# Restart Apache
sudo service apache2 restart

# Restart Nginx
sudo service nginx restart

# Restart the SSH daemon
sudo service ssh restart

# Restart Postfix
sudo service postfix restart

Adım 3: Servis Durumunu Kontrol Edin

sudo service <service-name> status

Örnek:

sudo service mysql status

● mysql.service - MySQL Community Server
   Active: active (running) since Mon 2025-01-13 10:47:00 UTC; 5s ago

Diğer SysVinit Servis Komutları

# Stop a service
sudo service <service-name> stop

# Start a service
sudo service <service-name> start

# Reload configuration
sudo service <service-name> reload

/etc/init.d/ konumundaki init betiklerini kullanarak SysVinit servisleriyle doğrudan da etkileşime girebilirsiniz:

sudo /etc/init.d/apache2 restart
sudo /etc/init.d/mysql status

> Uyumluluk Notu: Modern systemd tabanlı dağıtımlarda, service komutu hâlâ bir uyumluluk sarmalayıcısı olarak çalışır — service komutlarını arka planda otomatik olarak systemctl çağrılarına çevirir. Bu, modern sistemlerde service komutlarını güvenle kullanabileceğiniz anlamına gelir; ancak ek özellikleri nedeniyle systemctl tercih edilir.

Yöntem 3: Upstart ile Servisleri Yeniden Başlatma (Eski Ubuntu)

Upstart, systemd’nin Ubuntu 15.04’te yerini almadan önce Ubuntu’nun 9.10’dan 14.10’a kadar olan sürümlerinde kullanılan init sistemiydi. Çok eski bir Ubuntu sunucusunu yönetiyorsanız, initctl komutunu kullanırsınız.

Adım 1: Bir Terminal Açın

Adım 2: Bir Servisi Yeniden Başlatın

sudo initctl restart <service-name>

Örnekler:

# Restart lighttpd
sudo initctl restart lighttpd

# Restart MySQL
sudo initctl restart mysql

Adım 3: Servis Durumunu Kontrol Edin

sudo initctl status <service-name>

Örnek:

sudo initctl status lighttpd

lighttpd start/running, process 4521

Diğer Upstart Komutları

# Stop a service
sudo initctl stop <service-name>

# Start a service
sudo initctl start <service-name>

# List all Upstart-managed jobs and their states
sudo initctl list

Sisteminizin Hangi Servis Yöneticisini Kullandığını Belirleme

Tanıdık olmayan bir sunucuya bağlanıyorsanız ve hangi init sisteminin kullanıldığından emin değilseniz, şu hızlı tanılama komutlarını çalıştırın:

# Check if systemd is running as PID 1
ps -p 1 -o comm=

# Or check the init system directly
cat /proc/1/comm

# Check systemd version (if installed)
systemctl --version

# Check if Upstart is present
initctl --version

# Check for SysVinit scripts
ls /etc/init.d/

ps -p 1 -o comm= systemd döndürüyorsa, systemd tabanlı bir sistemdesiniz demektir. init döndürüyorsa, muhtemelen SysVinit veya Upstart kullanıyorsunuzdur.

Linux Servislerini Yeniden Başlatmak İçin En İyi Uygulamalar

Deneyimli yöneticiler, servisleri yeniden başlatırken kesinti süresini en aza indirmek ve yapılandırma hatalarından kaçınmak için bir dizi en iyi uygulamayı takip eder:

1. Yeniden Başlatmadan Önce Her Zaman Yapılandırmayı Doğrulayın

Birçok servis yerleşik bir sözdizimi denetimi sağlar. Bozuk bir yapılandırmayla servisi çökertmemek için yeniden başlatmadan önce bunu kullanın:

# Test Apache configuration
sudo apachectl configtest
# or
sudo apache2ctl -t

# Test Nginx configuration
sudo nginx -t

# Test SSH daemon configuration
sudo sshd -t

# Test MySQL configuration
sudo mysqld --validate-config

Yapılandırma testi geçerse yeniden başlatmaya devam edin. Başarısız olursa önce hataları düzeltin.

2. Mümkün Olduğunda reload Yerine restart Kullanın

Bir reload (yeniden yükleme), aktif bağlantıları kesmeden yapılandırma değişikliklerini uygular ve tam yeniden başlatmaya kıyasla çok daha az kesintiye yol açar:

# Gracefully reload Apache (zero downtime)
sudo systemctl reload apache2

# Gracefully reload Nginx
sudo systemctl reload nginx

restart yalnızca tam süreç yeniden başlatması gerçekten gerektiğinde kullanın (örneğin, yazılım güncellemesinden sonra veya reload desteklenmediğinde).

3. Başarısız Yeniden Başlatmadan Sonra Logları Hemen Kontrol Edin

Bir servis geri dönemezse, logları gecikmeden kontrol edin:

# systemd journal (most detailed)
sudo journalctl -u <service-name> -n 100 --no-pager

# Application-specific log files
sudo tail -n 50 /var/log/apache2/error.log
sudo tail -n 50 /var/log/nginx/error.log
sudo tail -n 50 /var/log/mysql/error.log
sudo tail -n 50 /var/log/syslog

4. Uzak Sunucularda SSH’ı Yeniden Başlatırken Dikkatli Olun

SSH aracılığıyla uzak bir sunucuya bağlıyken SSH daemon’unu yeniden başlatırsanız bağlantınızı kaybetme riskiyle karşılaşırsınız. Bu riski azaltmak için:

# Safer: reload SSH config without dropping connections
sudo systemctl reload sshd

# If you must restart, use a delayed command to give yourself time to reconnect
sudo shutdown -r +1  # schedules a reboot in 1 minute (use only if necessary)

5. Çalışan Süreçler Üzerindeki Etkiyi Anlayın

MySQL veya PostgreSQL gibi bir veritabanı servisini yeniden başlatmak, tüm aktif veritabanı bağlantılarını sonlandıracaktır. Kritik servisleri yeniden başlatmadan önce her zaman uygulama ekiplerini bilgilendirin veya üretim sistemleri için bakım pencereleri planlayın.

6. Servislerin Yeniden Başlatma Sonrasında Etkinleştirildiğinden Emin Olun

Bir servisi manuel olarak yeniden başlattıktan sonra, sistem yeniden başlatıldığında otomatik olarak başlayacak şekilde ayarlandığını doğrulayın:

sudo systemctl enable <service-name>

Hızlı Başvuru: Servis Yönetimi Komutları Hile Sayfası

İşlemsystemdSysVinitUpstart
Yeniden Başlatsystemctl restart <svc>service <svc> restartinitctl restart <svc>
Başlatsystemctl start <svc>service <svc> startinitctl start <svc>
Durdursystemctl stop <svc>service <svc> stopinitctl stop <svc>
Yeniden Yüklesystemctl reload <svc>service <svc> reloadinitctl reload <svc>
Durumsystemctl status <svc>service <svc> statusinitctl status <svc>
Önyüklemede etkinleştirsystemctl enable <svc>update-rc.d <svc> enableN/A
Logları görüntülejournalctl -u <svc>/var/log/syslog/var/log/upstart/<svc>.log

Yaygın Servis Yeniden Başlatma Sorunlarını Giderme

Yeniden Başlatma Sonrasında Servis Başlamıyor

Belirtiler: systemctl status Active: failed gösteriyor

Tanılama adımları:

# Get detailed failure reason
sudo systemctl status <service-name>
sudo journalctl -u <service-name> -n 50

# Check for port conflicts
sudo ss -tlnp | grep <port-number>
sudo netstat -tlnp | grep <port-number>

# Check file permissions on config files
ls -la /etc/<service-config-file>

Servis Yeniden Başlıyor Ancak Yeni Yapılandırmayı Uygulamıyor

Neden: Yapılandırma dosyasında sözdizimi hatası var veya yanlış yapılandırma dosyası yükleniyor.

Çözüm:

# Verify which config file the service is using
sudo <service-name> -V  # (works for Apache, Nginx, etc.)

# Re-validate config syntax
sudo nginx -t
sudo apachectl configtest

Servis Komutlarını Çalıştırırken “İzin Reddedildi”

Neden: Yetersiz ayrıcalıklar.

Çözüm: Her zaman sudo kullanın veya root kullanıcısına geçin:

sudo systemctl restart <service-name>
# or
su -c "systemctl restart <service-name>"

systemd “Birim Bulunamadı” Hatası Veriyor

Neden: Servis adı yanlış veya servis kurulu değil.

Çözüm:

# Search for the correct service name
sudo systemctl list-units --type=service | grep <partial-name>

# Or list all available unit files
sudo systemctl list-unit-files | grep <partial-name>

AlexHost Altyapısında Servisleri Yönetme

AlexHost altyapısında servis çalıştırıyorsanız, bu kılavuzda ele alınan servis yönetimi komutları ortamınıza doğrudan uygulanır. AlexHost’un VPS Hosting planları, tam systemd desteğiyle modern Linux dağıtımları üzerinde çalışır ve SSH aracılığıyla servis yığınınız üzerinde tam kontrol sağlar.

Servis yönetimi için grafiksel bir arayüz tercih eden yöneticiler için AlexHost, GUI tabanlı servis yönetimini tam komut satırı erişimiyle birlikte sunan cPanel’li VPS ve çeşitli VPS Kontrol Panelleri sunmaktadır.

İş yükünüz maksimum performans ve özel kaynaklar gerektiriyorsa — örneğin yüksek trafikli web sunucuları, veritabanı kümeleri veya posta sunucuları çalıştırıyorsanız — tam root erişimi ve servis yapılandırmanız üzerinde tam kontrol sağlayan AlexHost’un Dedicated Sunucularını değerlendirin.

Güvenilir e-posta altyapısına da ihtiyaç duyan web uygulamaları çalıştıran ekipler için AlexHost’un E-posta Hosting hizmeti, Postfix ve Dovecot gibi posta sunucusu daemon’larını kendiniz yapılandırma ve yönetme karmaşıklığını ortadan kaldıran yönetilen bir çözüm sunar.

Hassas kullanıcı verilerini işleyen web sitelerine ev sahipliği yapıyorsanız, hostinginizi bir SSL Sertifikası ile eşleştirmek şifreli bağlantılar sağlar — ve bir SSL sertifikası yükledikten veya yeniledikten sonra değişikliklerin geçerli olması için web sunucusu daemon’unuzu (Apache veya Nginx) yeniden başlatmanız gerektiğini unutmayın.

Sonuç

Linux servislerini komut satırından yeniden başlatmak, başlangıçtan uzmana kadar her sistem yöneticisinin araç setinde bulunması gereken temel bir beceridir. Belirli komutlar init sisteminize bağlı olarak değişir:

  • systemd (modern Linux): sudo systemctl restart <service-name>
  • SysVinit (eski Linux): sudo service <service-name> restart
  • Upstart (eski Ubuntu): sudo initctl restart <service-name>

Ancak komutları bilmenin ötesinde, gerçek anlamda etkili servis yönetimi; reload ile restart arasında ne zaman hangisini kullanacağınızı anlamayı, değişiklikleri uygulamadan önce yapılandırmayı nasıl doğrulayacağınızı, bir şeyler ters gittiğinde logları nasıl okuyacağınızı ve servislerin sistem yeniden başlatmalarından sağ çıkmasını nasıl sağlayacağınızı bilmeyi gerektirir.

Bu tekniklerde ustalaşın; Linux sunucularınızı sorunsuz çalışır durumda tutmak, kesinti süresini en aza indirmek ve servis sorunlarını hızla ve güvenle çözmek için donanımlı olacaksınız — ister tek bir VPS yönetiyor olun, ister bir dedicated sunucu filosu.

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