Systemd Hizmetleri Başlatma ve Durdurma

systemdLinux'ta hizmet çalıştırmanın yeni yoludur. systemd'nin üstü bir sysvinit var . systemd , Linux'a daha hızlı önyükleme süreleri getirir ve artık Linux hizmetlerini yönetmenin standart bir yoludur. Sistem kararlı olmasına rağmen hala gelişiyor.

init sistemi olarak systemd , Linux çekirdeği önyüklendikten sonra durum değişikliği gerektiren hem hizmetleri hem de arka plan yordamlarını yönetmek için kullanılır. Durum değişikliğinin başlatılması, durdurulması, yeniden yüklenmesi ve ayarlanması ile servis durumu uygulanır.

Öncelikle, şu anda sunucumuzda çalışan systemd sürümünü kontrol edelim.

[centos@localhost ~]$ systemctl --version 
systemd 219 
+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP 
+GCRYPT +GNUTLS +ACL     +XZ -LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN

[centos@localhost ~]$

CentOS sürüm 7'den itibaren, bu yazım sırasında tamamen güncellenen systemd sürüm 219, mevcut kararlı sürümdür.

Systemd-analysis ile son sunucu önyükleme zamanını da analiz edebiliriz

[centos@localhost ~]$ systemd-analyze    
Startup finished in 1.580s (kernel) + 908ms (initrd) + 53.225s (userspace) = 55.713s 
[centos@localhost ~]$

Sistem önyükleme süreleri yavaşladığında, systemd-analysis blame komutunu kullanabiliriz.

[centos@localhost ~]$ systemd-analyze blame 
   40.882s kdump.service 
   5.775s NetworkManager-wait-online.service 
   4.701s plymouth-quit-wait.service 
   3.586s postfix.service 
   3.121s systemd-udev-settle.service 
   2.649s tuned.service 
   1.848s libvirtd.service 
   1.437s network.service 
   875ms packagekit.service 
   855ms gdm.service 
   514ms firewalld.service 
   438ms rsyslog.service
   436ms udisks2.service 
   398ms sshd.service 
   360ms boot.mount 
   336ms polkit.service 
   321ms accounts-daemon.service

Systemd ile çalışırken , birimler kavramını anlamak önemlidir .UnitsSistemin nasıl yorumlanacağını bildiği kaynaklardır . Üniteler aşağıdaki gibi 12 türe ayrılmıştır -

  • .service
  • .socket
  • .device
  • .mount
  • .automount
  • .swap
  • .target
  • .path
  • .timer
  • .snapshot
  • .slice
  • .scope

Çoğunlukla, birim hedefleri olarak .service ile çalışacağız. Diğer türler hakkında daha fazla araştırma yapılması tavsiye edilir. Yalnızca .service birimleri systemd hizmetlerini başlatmak ve durdurmak için geçerli olacaktır .

Her birim , aşağıdakilerden birinde bulunan bir dosyada tanımlanır:

  • /lib/systemd/system - temel birim dosyaları

  • /etc/systemd/system - çalışma zamanında başlatılan değiştirilmiş birim dosyaları

Systemctl ile Hizmetleri Yönetin

İle çalışmak için systemd , biz çok tanımak gerekir systemctl komutu. Aşağıda systemctl için en yaygın komut satırı anahtarları verilmiştir .

Değiştirmek Aksiyon
-t Servis veya soket gibi birim türlerinin virgülle ayrılmış değeri
-a Yüklenen tüm birimleri gösterir
--durum Tüm birimleri tanımlanmış bir durumda gösterir: yük, alt, aktif, devre dışı vb.
-H İşlemi uzaktan yürütür. Ana bilgisayar adını veya ana bilgisayarı ve kullanıcıyı @ ile ayırarak belirtin.

Temel systemctl Kullanımı

systemctl [operation]
example: systemctl --state [servicename.service]

Kutumuzda çalışan tüm hizmetlere hızlı bir bakış için.

[root@localhost rdc]# systemctl -t service 
UNIT                       LOAD     ACTIVE      SUB     DESCRIPTION

abrt-ccpp.service          loaded   active   exited     Install ABRT coredump   hook 
abrt-oops.service          loaded   active   running    ABRT kernel log watcher 
abrt-xorg.service          loaded   active   running    ABRT Xorg log watcher 
abrtd.service              loaded   active   running    ABRT Automated Bug  Reporting Tool 
accounts-daemon.service    loaded   active   running    Accounts Service 
alsa-state.service         loaded   active   running    Manage Sound Card State (restore and store) 
atd.service                loaded   active   running    Job spooling tools 
auditd.service             loaded   active   running    Security Auditing Service 
avahi-daemon.service       loaded   active   running    Avahi mDNS/DNS-SD Stack 
blk-availability.service   loaded   active   exited     Availability of block devices 
bluetooth.service          loaded   active   running    Bluetooth service 
chronyd.service            loaded   active   running    NTP client/server

Bir Hizmeti Durdurmak

Önce bluetooth hizmetini durduralım.

[root@localhost]# systemctl stop bluetooth

[root@localhost]# systemctl --all -t service | grep bluetooth      
bluetooth.service   loaded    inactive dead    Bluetooth service

[root@localhost]#

Gördüğümüz gibi, bluetooth servisi artık devre dışı.

Bluetooth hizmetini yeniden başlatmak için.

[root@localhost]# systemctl start bluetooth

[root@localhost]# systemctl --all -t service | grep bluetooth 
bluetooth.service  loaded    active   running Bluetooth     service

[root@localhost]#

Note- .service ima edildiği için bluetooth.service'i belirtmedik . Uğraştığımız hizmete eklenen birim tipini düşünmek iyi bir uygulamadır . Bu nedenle, bundan sonra .service uzantısını, hizmet birimi işlemleri üzerinde çalıştığımızı netleştirmek için kullanacağız .

Bir hizmette gerçekleştirilebilecek birincil eylemler şunlardır:

Başlat Hizmeti başlatır
Dur Bir servisi durdurur
Tekrar yükle Durdurmadan bir hizmetin etkin yapılandırmasını yeniden yükler (sistem v init'te -HUP öldürmek gibi)
Tekrar başlat Bir servisi başlatır, sonra durdurur
etkinleştirme Önyükleme zamanında bir hizmet başlatır
Devre dışı bırak Bir hizmetin çalışma zamanında otomatik olarak başlamasını durdurur

Yukarıdaki eylemler öncelikle aşağıdaki senaryolarda kullanılır -

Başlat Durdurulmuş duruma getirilmiş bir hizmeti ortaya çıkarmak için.
Dur Bir hizmeti geçici olarak kapatmak için (örneğin, hizmeti yükseltirken olduğu gibi hizmet tarafından kilitlenen dosyalara erişmek için bir hizmetin durdurulması gerektiğinde)
Tekrar yükle Bir yapılandırma dosyası düzenlendiğinde ve hizmeti durdurmadan yeni değişiklikleri uygulamak istiyoruz.
Tekrar başlat Yeniden yükleme ile aynı senaryoda, ancak hizmet yeniden yüklemeyi desteklemiyor .
etkinleştirme Devre dışı bırakılmış bir hizmetin önyükleme zamanında çalışmasını istediğimizde.
Devre dışı bırak Öncelikle bir hizmeti durdurmaya ihtiyaç duyulduğunda kullanılır, ancak önyüklemede başlar.

Bir hizmetin durumunu kontrol etmek için -

[root@localhost]# systemctl status network.service 
network.service - LSB: Bring up/down networking 
Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled) 
Active: active (exited) since Sat 2017-01-14 04:43:48 EST; 1min 31s ago 
Docs: man:systemd-sysv-generator(8)

Process: 923 ExecStart = /etc/rc.d/init.d/network start (code=exited, status = 0/SUCCESS)

localhost.localdomain systemd[1]: Starting LSB: Bring up/down networking... 
localhost.localdomain network[923]: Bringing up loopback interface:  [  OK  ] 
localhost.localdomain systemd[1]: Started LSB: Bring up/down networking.

[root@localhost]#

Bize hizmetinin mevcut durumunu gösterin . Ağ ile ilgili tüm hizmetleri görmek istiyorsak, kullanabiliriz -

[root@localhost]# systemctl --all -t service | grep -i network 
network.service                       loaded    active    exited    LSB: Bring up/ 
NetworkManager-wait-online.service    loaded    active    exited    Network Manager  
NetworkManager.service                loaded    active    running   Network Manager 
ntpd.service                          loaded    inactive  dead      Network Time  
rhel-import-state.service             loaded    active    exited    Import network      

[root@localhost]#

Aşina olanlar için sysinithizmetleri yönetme yöntemi, systemd'ye geçiş yapmak önemlidir . systemd , Linux'ta daemon hizmetlerini başlatmanın ve durdurmanın yeni yoludur.