Bu kılavuzda service ve systemctl komutlarını ve bunların servis yönetimi açısından nasıl farklı olduklarını tartışacağım.
Daha ileri gitmeden önce iki popüler Linux init sistemini anlayalım; Sistem ve Sistemd.
Sistem V ve Sistemd
Linux'taki başlatma sistemi, önyükleme işleminin çok önemli bir parçasıdır. Sistem önyüklendiğinde başlayan PID 1'li ilk işlemdir. Daha sonra inittab dosyasında bulunan işlemleri başlatır. System V aynı zamanda SysV ve systemd'nin popüler Linux init sistemleri olduğunu da biliyor.
SistemV daha eski bir init sistemidir ve eski Unix ve Linux dağıtımlarının bir parçası olmuştur. /etc/init.d dosyasında bulunan komut dosyalarını kullanarak sistem hizmetlerini yönetir. Halen SysV kullanan bazı Linux dağıtımları Slackware, Gentoo ve antiX Linux'tur.
Diğer taraftan, sistemd 2010 yılında piyasaya sürüldü ve birçok Linux dağıtımı tarafından hızla benimsendi. Systemd init sistemi, hizmetleri .service dosyaları aracılığıyla yönetir. Artık Red Hat Enterprise Linux, CentOS, Amazon Linux, Fedora, Debian, Ubuntu ve bu işletim sistemlerini temel alan dağıtımlar dahil tüm modern Linux dağıtımlarının bir parçasıdır.
Systemd, SysV'ye kıyasla çok daha verimlidir. Daha hızlı önyükleme süresi, verimli hizmet yönetimi ve bağımlılık yönetimi sağlar.
Her iki init sistemi de hizmet yönetimi için iki komut satırı yardımcı programı sağlar.
Kılavuzun ilerleyen bölümlerinde bu iki yardımcı programı tartışacağım.
servis Komutanlığı
hizmet komut, komut dosyasında bulunan komut dosyalarını çalıştıran bir komut dosyası sarmalayıcısıdır. /etc/init.d dizin. Hizmetlerini yönetmek için geliştirildi. SistemV veya Sistem V başlatma sistemi. SysV'yi başlangıç sistemi olarak kullanan Linux dağıtımları, hizmet Servis yönetimi için komut.
Service komutunun kullanımına ilişkin genel sözdizimi aşağıda verilmiştir.
hizmet [ hizmet adı ] [ aksiyon ]System V tarafından kontrol edilen hizmetlerin durumunu almak için service komutunu kullanın. –durum-tümü seçenek.
hizmet --durum-tümü
+ hizmetin çalıştığını gösterir ve – hizmetin etkin olmadığını gösterir.
Belirli bir hizmetin mevcut durumu, hizmet adı belirtilerek de kontrol edilebilir.
hizmet [ hizmet adı ] durum
Bir hizmeti başlatma, durdurma ve yeniden başlatma gibi diğer bazı yararlı hizmet komutları aşağıda listelenmiştir.
hizmet [ hizmet adı ] başlangıçhizmet [ hizmet adı ] durmak
hizmet [ hizmet adı ] tekrar başlat
Bu hizmet komutu, hizmetleri yönetmek için temel kontrol sağlar. Linux dağıtımlarının çoğu, bir başlangıç sistemi olarak SysV'nin yerini almıştır, ancak eski uyumluluk nedeniyle, bu komut hala birçok yeni Linux dağıtımında kullanıma hazır olarak gelmektedir.
systemctl Komutu
Systemctl komutunu kullanarak hizmetleri kontrol edebilirsiniz. /lib/systemd/system Ve /etc/systemd/system dizinler. Systemd'nin bir bileşenidir; çağdaş Linux dağıtımlarının çoğunda bulunan bir init sistemi.
Systemctl, sistem servis yönetimi üzerinde daha fazla kontrol sağlamak için tasarlanmıştır. Systemctl komutunun kullanımına ilişkin genel sözdizimi aşağıda verilmiştir:
sistemctl [ seçenek ] [ hizmet adı ]Tüm hizmetlerin durumunu kontrol etmek için aşağıdaki komutu kullanın.
systemctl liste birimleri --tip =hizmet --TümüBelirli bir hizmet kullanımı için:
sistemctl durumu [ hizmet adı ]
Systemctl kullanarak hizmetin temel yönetimine yönelik komutlar aşağıda verilmiştir:
sistemctl olanak vermek [ hizmet adı ]systemctl başlat [ hizmet adı ]
systemctl durdur [ hizmet adı ]
systemctl devre dışı bırak [ hizmet adı ]
systemctl yeniden başlat [ hizmet adı ]
Systemctl komutu, hizmetlerin kontrol edilmesi söz konusu olduğunda bunun ötesine geçer. Aşağıdaki tablo bazı gelişmiş systemctl komutlarını içermektedir.
liste yolları | Bellekteki tüm servislerin yolunu listelemek için |
etkin [hizmet_adı] | Hizmetin veya birimin çalışıp çalışmadığını kontrol etmek için |
liste bağımlılıkları [hizmet_adı] | Belirtilen hizmetin bağımlılıklarının listesini yazdırmak için |
sıfırlama başarısız oldu | Bazı anormallikler nedeniyle yüklenemeyen hizmetleri sıfırlamak için |
maske [hizmet_adı] | Hizmeti devre dışı bırakmak ve başlatılamaz duruma getirmek için |
varsayılanı al | Varsayılan çalışma seviyesini veya hedefini yazdırmak için |
varsayılan ayarla [hedef] | Varsayılan çalıştırma seviyesini veya hedefini ayarlamak için |
sistem çalışıyor | Sistemin çalışma durumunu kontrol etmek için |
yeniden başlat | Sistemi yeniden başlatmak için |
Kapat | Sistemi kapatmak için |
Linux Dağıtımlarında neden hala systemd init System ile bir servis Komutu var?
Service komutu hala birçok Linux dağıtımının bir parçasıdır çünkü bir sarmalayıcı komut dosyasıdır ve ister SysV ister systemctl olsun, temeldeki init sistemini soyutlar. Örneğin, Ubuntu'da service komutu systemctl'ye yönlendirir.
Çözüm
Service ve systemctl, sırasıyla SysV ve systemd init sistemlerine ait iki komut satırı yardımcı programıdır. Modern Linux dağıtımlarında servis komutunun değiştirilmesine rağmen, basitlik ve uyumluluk nedeniyle hizmetlerin sürdürülmesinde önemli bir araç olmaya devam etmektedir. Systemctl ise mevcut tüm Linux dağıtımlarının bir parçasıdır ve hizmet yönetimi için gelişmiş seçenekler sunar.