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 ağ 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.