Tüm barındırma hizmetlerinde 15% tasarruf edin

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

Kodu kullanın: Skills Başlayın
Bölüm
Linux

Systemctl Komutları: Linux’ta Hizmetleri Yeniden Başlatma, Yeniden Yükleme ve Durdurma

Hizmetleri verimli bir şekilde yönetmek, herhangi bir Linux sistem yöneticisi için en kritik becerilerden biridir. VPS Hosting planında yüksek trafikli bir web sunucusu çalıştırıyor olsanız veya bir Dedicated Server ortamını yönetiyor olsanız, systemctl kullanarak sistem hizmetlerini nasıl kontrol edeceğinizi anlamak kesinlikle gereklidir. Bu kapsamlı rehber, Linux’ta systemd ve systemctl kullanarak hizmetleri yeniden başlatma, yeniden yükleme ve durdurma hakkında bilmeniz gereken her şeyi kapsar.

systemd Nedir ve Neden Önemlidir?

systemd Ubuntu, Debian, CentOS, Rocky Linux, AlmaLinux ve Fedora dahil olmak üzere neredeyse tüm modern Linux dağıtımlarında kullanılan varsayılan init sistemi ve hizmet yöneticisidir. SysVinit ve Upstart gibi eski init sistemlerinin yerini aldı ve Linux’un önyükleme ve işlem yönetimi şeklinde önemli iyileştirmeler getirdi.

systemd’nin Temel Özellikleri

  • Paralel hizmet başlatma — Hizmetleri eşzamanlı olarak başlatarak önyükleme sürelerini önemli ölçüde azaltır
  • İsteğe bağlı hizmet aktivasyonu — Hizmetler yalnızca gerektiğinde başlatılabilir, sistem kaynaklarını korur
  • Bağımlılık yönetimi — Hizmet bağımlılıklarını ve sıralamayı otomatik olarak yönetir
  • Merkezi günlüğe kaydetmejournald ile entegre olarak birleştirilmiş, yapılandırılmış günlük yönetimi sağlar
  • Cgroup tabanlı kaynak kontrolü — Hizmet başına CPU, bellek ve I/O kullanımını izler ve sınırlandırır
  • Socket ve D-Bus aktivasyonu — Gelişmiş işlemler arası iletişim desenlerini etkinleştirir

systemd anlamak sadece akademik değildir — Linux ortamınızın istikrarını, performansını ve güvenliğini doğrudan etkiler.

systemctl Nedir?

systemctl systemd ile etkileşim kurmak için birincil komut satırı arayüzüdür. Yöneticilerin şunları yapmasına izin verir:

  • Hizmetleri başlatma, durdurma, yeniden başlatma ve yeniden yükleme
  • Önyüklemede hizmetleri etkinleştirme veya devre dışı bırakma
  • Hizmet durumunu kontrol etme ve günlükleri görüntüleme
  • Sistem hedeflerini yönetme (runlevels)
  • systemd daemon yapılandırmasını yeniden yükleme

Sistem durumunu değiştiren tüm systemctl komutları root ayrıcalıkları veya sudo erişimi gerektirir.

Hizmet Yönetimi için Temel systemctl Komutları

1. Bir Hizmeti Yeniden Başlatma

Bir hizmeti yeniden başlatmak onu tamamen durdurur ve ardından yeniden başlatır. Bu işlem şu durumlarda kullanılır:

  • Tam bir işlem yeniden başlatması gerektiren yapılandırma değişiklikleri yaptığınızda
  • Bir hizmet çöktüğünde veya yanıt vermez hale geldiğinde
  • Paket yükseltmesinden sonra güncellenmiş ikili dosyaları uygulamanız gerektiğinde

Sözdizimi:

sudo systemctl restart <service_name>

Örnek — Nginx web sunucusunu yeniden başlatın:

sudo systemctl restart nginx

Örnek — Apache web sunucusunu yeniden başlatın:

sudo systemctl restart apache2

Örnek — MySQL/MariaDB veritabanını yeniden başlatın:

sudo systemctl restart mysql

> Önemli: Bir hizmeti yeniden başlatmak kısa bir kesintiye neden olur. Üretim ortamları için, kapalı kalma süresini önlemek amacıyla desteklendiğinde reload kullanmayı düşünün.

2. Bir Hizmeti Yeniden Yükleme

Yeniden yükleme, çalışan bir hizmete yapılandırma dosyalarını işlemi durdurmadan yeniden okumasını söyler. Bu, yapılandırma değişikliklerini sıfır kapalı kalma süresiyle uygulamak için idealdir.

Sözdizimi:

sudo systemctl reload <service_name>

Örnek — Nginx yapılandırmasını düzenledikten sonra yeniden yükleyin:

sudo systemctl reload nginx

Örnek — sshd_config değiştirdikten sonra SSH daemon’ını yeniden yükleyin:

sudo systemctl reload sshd

> Not: Tüm hizmetler reload işlemini desteklemez. Bir hizmet bunu uygulamazsa, systemctl bir hata döndürecektir. Bu durumlarda, bunun yerine restart kullanın.

Pro İpucu — Maksimum uyumluluk için reload-or-restart kullanın:

sudo systemctl reload-or-restart <service_name>

Bu komut önce yeniden yüklemeyi dener. Hizmet yeniden yüklemeyi desteklemiyorsa, otomatik olarak tam bir yeniden başlatmaya geri döner — bu, komut dosyası dağıtımları ve otomasyon için en güvenli seçenektir.

3. Bir Hizmeti Durdurma

Bir hizmeti durdurmak onu hemen sonlandırır. Bir hizmeti bakım, sorun giderme veya yeniden yapılandırma için çevrimdışı almak istediğinizde bunu kullanın.

Sözdizimi:

sudo systemctl stop <service_name>

Örnek — Nginx web sunucusunu durdurun:

sudo systemctl stop nginx

Örnek — Güvenlik duvarı hizmetini durdurun:

sudo systemctl stop ufw

> Uyarı: Kritik bir hizmeti (örneğin uzak bir sunucuda sshd) durdurmak sizi sisteminizden kilitleyebilir. Temel hizmetleri durdurmadan önce her zaman konsol veya bant dışı yönetim gibi alternatif bir erişim yönteminiz olduğundan emin olun.

4. Bir Hizmeti Başlatma

Bir hizmet şu anda çalışmıyorsa, onu başlatmak için start komutunu kullanın.

Sözdizimi:

sudo systemctl start <service_name>

Örnek:

sudo systemctl start nginx

5. Önyükleme Sırasında Bir Hizmeti Etkinleştirme

Bir hizmeti etkinleştirmek, systemd tarafından sistem önyüklemesi sırasında otomatik olarak başlatılması için gerekli sembolik bağlantıları oluşturur.

Sözdizimi:

sudo systemctl enable <service_name>

Örnek:

sudo systemctl enable nginx

Aynı anda etkinleştirin ve başlatın (önerilir):

sudo systemctl enable --now nginx

6. Önyükleme Sırasında Bir Hizmeti Devre Dışı Bırakma

Bir hizmeti devre dışı bırakmak, otomatik olarak başlamasını engeller, ancak şu anda çalışıyorsa onu durdurmaz.

Sözdizimi:

sudo systemctl disable <service_name>

Örnek:

sudo systemctl disable bluetooth

Aynı anda devre dışı bırakın ve durdurun:

sudo systemctl disable --now bluetooth

7. Hizmet Durumunu Kontrol Etme

status komutu, en sık kullanılan systemctl komutlarından biridir. Bir hizmetin durumunun gerçek zamanlı bir anlık görüntüsünü sağlar ve son günlük girişlerini içerir.

Sözdizimi:

sudo systemctl status <service_name>

Örnek — Nginx’in durumunu kontrol edin:

sudo systemctl status nginx

Örnek çıktı:

● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2024-01-15 10:23:45 UTC; 2h 34min ago
       Docs: man:nginx(8)
    Process: 1234 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 1235 (nginx)
      Tasks: 3 (limit: 4915)
     Memory: 6.2M
        CPU: 45ms
     CGroup: /system.slice/nginx.service
             ├─1235 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             └─1236 "nginx: worker process"

Çıktı şunları içerir:

  • Loaded — Unit dosyasının yüklenip yüklenmediği ve önyüklemede etkinleştirilip etkinleştirilmediği
  • Active — Geçerli çalışma durumu (active (running), inactive (dead), failed, vb.)
  • Main PID — Hizmetin birincil işlem kimliği
  • Memory/CPU — Kaynak tüketimi metrikleri
  • CGroup — Kontrol grubu hiyerarşisi
  • Recent logs — Hızlı tanı için son birkaç günlük girişi

Gelişmiş systemctl Komutları

Bir Hizmetin Etkin veya Etkinleştirilmiş Olup Olmadığını Kontrol Etme

Betiklerde ve otomasyon için kullanılmak üzere, bu komutlar basit boolean tarzı çıkış kodları döndürür:

# Check if a service is currently running
systemctl is-active nginx

# Check if a service is enabled at boot
systemctl is-enabled nginx

# Check if a service has failed
systemctl is-failed nginx

Tüm Hizmetleri Listeleme

# List all loaded and active units
systemctl list-units --type=service

# List all installed unit files and their states
systemctl list-unit-files --type=service

# List only failed services
systemctl --failed

systemd Daemon’ını Yeniden Yükleme

Unit dosyaları oluşturduktan veya değiştirdikten sonra, değişiklikleri tanımak için systemd daemon’ını yeniden yüklemeniz gerekir:

sudo systemctl daemon-reload

Bir Hizmeti Maskeleme ve Maskelemesini Kaldırma

Bir hizmeti maskelemek, onu manuel olarak veya otomatik olarak başlatılmasını engeller — hatta diğer hizmetler tarafından da:

# Prevent a service from ever starting
sudo systemctl mask <service_name>

# Re-enable a masked service
sudo systemctl unmask <service_name>

Hızlı Referans: systemctl Komut Kopya Kağıdı

KomutAçıklama
systemctl start <service>Durmuş bir hizmeti başlat
systemctl stop <service>Çalışan bir hizmeti durdur
systemctl restart <service>Bir hizmeti durdur ve yeniden başlat
systemctl reload <service>Yapılandırmayı durdurmadan yeniden yükle
systemctl reload-or-restart <service>Destekleniyorsa yeniden yükle, aksi takdirde yeniden başlat
systemctl enable <service>Hizmeti önyüklemede etkinleştir
systemctl disable <service>Hizmeti önyüklemede devre dışı bırak
systemctl enable --now <service>Etkinleştir ve hemen başlat
systemctl disable --now <service>Devre dışı bırak ve hemen durdur
systemctl status <service>Hizmet durumunu ve günlükleri göster
systemctl is-active <service>Hizmetin çalışıp çalışmadığını kontrol et
systemctl is-enabled <service>Hizmetin önyüklemede başlayıp başlamadığını kontrol et
systemctl is-failed <service>Hizmetin başarısız olup olmadığını kontrol et
systemctl list-units --type=serviceTüm etkin hizmetleri listele
systemctl --failedTüm başarısız hizmetleri listele
systemctl daemon-reloadsystemd birim dosyalarını yeniden yükle
systemctl mask <service>Hizmetin başlamasını tamamen engelle
systemctl unmask <service>Hizmetten maskesini kaldır

Server Yöneticileri için Pratik Kullanım Örnekleri

Senaryo 1: Nginx Yapılandırma Değişikliklerini Uygulama

Web sunucunuzda /etc/nginx/nginx.conf dosyasını düzenlediniz. Etkin bağlantıları kesmeden değişiklikleri uygulamak için:

# First, test the configuration syntax
sudo nginx -t

# If the test passes, reload gracefully
sudo systemctl reload nginx

Senaryo 2: Başarısız Bir Hizmeti Kurtarma

Bir hizmet çökmüş ve failed durumunu göstermektedir:

# Check what went wrong
sudo systemctl status myapp.service

# View full logs for the service
sudo journalctl -u myapp.service -n 50 --no-pager

# Restart the service
sudo systemctl restart myapp.service

Senaryo 3: Dağıtımdan Sonra Yeni Bir Hizmet Kurma

Özel bir birim dosyası ile yeni bir uygulama dağıttıktan sonra:

# Reload systemd to recognize the new unit file
sudo systemctl daemon-reload

# Enable and start the service in one command
sudo systemctl enable --now myapp.service

# Verify it's running correctly
sudo systemctl status myapp.service

restart, reload ve stop Arasındaki Fark — Bir Bakışta

İşlemİşlem Durduruldu mu?Kapalı Kalma Süresi?Kullanım Durumu
stopEvetEvetBakım, sorun giderme
restartEvet, sonra yeniden başlatıldıKısaTam yeniden başlatma gerektiren yapılandırma değişiklikleri
reloadHayırYokSıfır kapalı kalma süresi ile yapılandırma değişiklikleri
reload-or-restartGerekirse sadeceMinimalGüvenli otomasyon ve komut dosyası oluşturma

Farklı Hosting Ortamlarında Hizmetleri Yönetme

Bu kılavuzda ele alınan systemctl komutları, Linux tabanlı hosting ortamlarında evrensel olarak geçerlidir. cPanel ile VPS üzerinde hizmetleri yönetiyor olsanız veya bare-metal Dedicated Server üzerinde olsanız, systemd hizmet yönetimi için tutarlı ve güvenilir bir arayüz sağlar.

Web uygulamaları çalıştıran ekipler için, hizmetlerinizi uygun SSL/TLS şifrelemesiyle güvenli hale getirmek eşit derecede önemlidir. AlexHost, web hizmetlerinizi korumaya ve kullanıcı güvenini oluşturmaya yardımcı olmak için SSL Sertifikaları sunmaktadır — ve sertifikanız yüklendikten sonra, yeni yapılandırmayı kapalı kalma süresi olmadan uygulamak için basit bir sudo systemctl reload nginx veya sudo systemctl reload apache2 yeterlidir.

Yeni bir proje oluşturuyor ve güvenilir bir temel gerekiyorsa, daha küçük iş yükleri için Paylaşımlı Web Hosting ile başlamayı, ardından ihtiyaçlarınız büyüdükçe tam bir VPS veya dedicated sunucuya ölçeklendirmeyi düşünün.

Sonuç

systemctl komutlarında uzmanlaşmak, üretim ortamında Linux sunucularını yöneten herkes için temel bir gereksinimdir. Yeniden başlatma, yeniden yükleme ve durdurma işlemlerini verimli bir şekilde gerçekleştirme yeteneği — ve bu işlemler arasındaki farkı anlama — sisteminizin kullanılabilirliğini, performansını ve bakımlanabilirliğini doğrudan etkiler.

İşte temel çıkarımların hızlı bir özeti:

  • Tam bir hizmet döngüsüne ihtiyaç duyduğunuzda restart kullanın — işlemi durdurur ve yeniden başlatır
  • Hizmet bunu desteklediğinde sıfır kesinti süreli yapılandırma güncellemeleri için reload kullanın
  • Maksimum uyumluluk ve güvenlik için betiklerde reload-or-restart kullanın
  • Planlı bakım için veya bir hizmetin çevrimdışı alınması gerektiğinde stop kullanın
  • Değişikliklerden önce ve sonra sorunları teşhis etmek için her zaman systemctl status ve journalctl kullanın

Bu komutlar araç setinizde yer aldığında, istikrarlı, yüksek performanslı Linux ortamlarını korumak için iyi donanımlı olacaksınız — tek bir VPS yönetip yönetmediğiniz veya tüm özel sunucu filosunu yönetip yönetmediğiniz.

Linux Yönetim
Güvenlik Linux Windows
Linux