systemctl nedir?

Systemctl Archives • CloudSigma

systemd, Linux tabanlı işletim sistemleri için sistem komponentleri sağlayan bir sistem yazılımıdır. Kısaca, systemd servislerini yönetmek, durdurmak, başlatmak ve durumlarını kontrol etmek gibi işlemlerin yapılmasını sağlayan ana komuttur. Systemd bir init servisidir. Bu işlem bilgisayar otomatikken başlar ve sistem kapandığında bugüne kadar otomatik olarak devam eder. 2013'de Poettering gibi sistemd aslinda bir işlem değil, bir yazılım paketidir ve içinde 69 adet farklı binary bulunur. Systemd Linux'da user space'in ilk işlemidir ve user space'i başlatır. PID olarak 1 alır ve Systemd kernel tarafından başlatılır. Sistemd'yi UNIX'e aykırı bulmaktadır. 

Birimleri(Units) Kullanma

Birimler genellikle hizmetleri ( .service ) , bağlama noktalarını ( .mount ), cihazları ( .device ) ve soketleri ( .socket ) içerir, ancak bunlarla sınırlı değildir. systemctl kullanırken , genellikle birim dosyasının son eki dahil tam adını belirtmeniz gerekir, örneğin sshd.socket. Bununla birlikte, aşağıdaki systemctl komutlarında birimi belirtirken birkaç kısa form vardır. Soneki belirtmezseniz, systemctl .service öğesini varsayar.

Action Command Note
Sistem durumunu analiz etme
Sistem durumunu göster
systemctl status 
 
Çalışan birimleri listeleyin
systemctl list-units 
 
Başarısız birimleri listele
systemctl --failed 
 
Kurulu birim dosyalarını listele
systemctl list-unit-files 
 
Bir PID için işlem durumunu göster
systemctl status pid 
bellek ve ebeveyn
Ünite durumunu kontrol etme
Bir üniteyle ilişkili bir kılavuz sayfasını göster
systemctl help unit 
ünite tarafından desteklendiği gibi
Bir birimin durumu
systemctl status unit 
çalışıp çalışmadığı dahil
Bir birimin etkin olup olmadığını kontrol edin
systemctl is-enabled unit 
 
Bir birimin başlatılması, yeniden başlatılması, yeniden yüklenmesi
Bir üniteyi hemen başlatın
systemctl start unit 
root yetkisi ister
Bir birimi derhal durdurun
systemctl stop unit 
root yetkisi ister
Bir birimi yeniden başlat
systemctl restart unit 
root yetkisi ister
Bir birimi ve yapılandırmasını yeniden yükleyin
systemctl reload unit 
root yetkisi ister
systemd yöneticisi yapılandırması yeniden yükleyin
systemctl daemon-reload 
yeni veya değiştirilmiş birimler için tarama
Bir birimi etkinleştirme
Bir birimin önyüklemede otomatik olarak başlamasını sağlayın
systemctl enable unit 
 root yetkisi ister
Bir birimin açılışta otomatik olarak başlamasını ve hemen başlatılmasını sağlayın
systemctl enable --now unit 
root yetkisi ister
Bir birimi artık önyüklemede başlamaması için devre dışı bırakın
systemctl disable unit 
root yetkisi ister
Üniti yeniden etkinleştirin
systemctl reenable unit 
yani devre dışı bırak ve yeniden etkinleştir
Bir birimi maskeleme
Başlatmayı imkansız kılmak için bir birimi maskeleyin
systemctl mask unit 
root yetkisi ister
Bir birimin maskesini kaldır
systemctl unmask unit 
root yetkisi ister

Güç yönetimi | Polkit

polkit, ayrıcalıksız bir kullanıcı olarak güç yönetimi için gereklidir. Yerel bir systemd-logind kullanıcı oturumundaysanız ve başka hiçbir oturum etkin değilse, aşağıdaki komutlar kök ayrıcalıkları olmadan çalışacaktır. Değilse (örneğin, başka bir kullanıcı bir tty'de oturum açtığı için), systemd sizden otomatik olarak root parolasını isteyecektir.

Action Command
Sistemi kapatın ve yeniden başlatın
systemctl reboot 
Sistemi kapatın ve kapatın
systemctl poweroff 
Sistemi askıya al
systemctl suspend 
Sistemi hazırda bekletme moduna geçirin
systemctl hibernate 
Sistemi hibrit uyku durumuna getirin (veya her ikisini de askıya alın)
systemctl hybrid-sleep 

syntax

systemctl [OPTIONS...] {COMMAND} ...

Ön Gereksinimler

  • sudo ayrıcalıklarına sahip kullanıcı

Systemctl Tüm Servislerin İncelenmesi

systemd servislerini yönetmek, durdurmak, başlatmak ve durumlarını kontrol etmek gibi işlemlerin yapılmasını sağlayan ana komuttur.  Günümüzde bildiğiniz gibi, son dağıtımlar Systemd sistem yöneticisini kullanır. Ancak eski dağıtımlar geçmişte  SysVinit sistem yöneticisini kullanıyordu. Servisleri listeleme komutlarını öğrenmeden önce, kullanmakta olduğunuz sistem yöneticisini bilmelisiniz. Mevcut sistem yöneticinizi belirlemenin en kolay yolu “pstree” komutunu kullanmak ve sisteminizde çalışan ilk işlemi kontrol etmektir.

pstree|head -1 

Yukarıda eğer "systemd" görürseniz, şu anda systemd kullanıyorsunuz demektir. Ancak “ init ” görüyorsanız SysVinit kullanıyorsunuz demektir.

Artık systemd sistem yöneticisini kullandığımıza göre neler yapabileceğimize bakalım. systemctl komutunu herhangi bir argüman olmadan çalıştırdığınızda, yüklenen tüm sistemd birimlerinin bir listesini görüntüler.

systemctl

Ancak bu çok karmaşık gelecektir. Biraz daha süzmeye çalışalım. Sisteminize yüklenen tüm hizmetleri aktif, pasif, başarısız durumlarını listelemek için --type parametresini kullanın.

systemctl --type=service

Şimdi de, hem çalışan hem de çıkmış olan yüklü ancak etkin tüm hizmetleri listelemek için , aşağıdaki gibi “active --state=active”  seçeneği eklemelesiniz. 

systemctl --type=service --state=active 

Komutu yürüttükten sonra, sisteminizde tüm aktif çalışan servisleri inceleyebiliyoruz. Akabinde space tuşuna basıp en aşağı indiğimiz zaman, 59 yüklü birimin listelendiğini görüyoruz.

active exited yazanlarının bir sorun olduğunu düşünmeyin. Örneğin, birim dosyası ayarları “RemainAfterExit=true,” ayarlanırsa çıkan bir hizmet  active olarak rapor edilir. Örnek: Ubuntu sunucumda ufw hizmet, sistem başlangıcında güvenlik duvarını başlatır, görevi gerçekleştirir ve ardından çıkan bir hizmettir. Sonuçta, güvenlik duvarı yerinde olur ve gayet iyi çalışır.

Çalışan tüm servisleri (yani tüm yüklü ve aktif olarak çalışan servislere) görmek için aşağıdaki komutu çalıştırın.

Eğer aşağıdaki komutu kullanırsanız, çalışıp çıkan yani exited olan servisler görülemez.

systemctl --type=service --state=running 

Komutu yürüttükten sonra, space tuşuna basıp en aşağı indiğimiz zaman, 36 yüklü birimin listelendiğini görüyoruz.

Etkin hizmetleri listelemek için, aşağıdaki komutu çalıştırın.

Bir birim enabled ise, sistemin başlangıçta onu başlatacağı anlamına gelir. 

systemctl list-unit-files --state=enabled

Etkin olmayan hizmetleri listelemek için, aşağıdaki komutu çalıştırın.

systemctl list-unit-files --state=disabled 

Systemctl Ayrıntılı Servis Yönetimi

systemctl kullanarak , yönetilen adanmış sunucudaki herhangi bir systemd hizmetinin durumunu kontrol edebiliriz . Durum komutu, bir hizmet hakkında bilgi sağlar. Ayrıca, çalışma durumunu veya neden çalışmadığına veya bir hizmetin istenmeden durdurulup durdurulmadığına ilişkin ayrıntıları da listeler.

systemctl status ufw.service

Bu birim, .service uzantısı olmadan çağrılabilir. systemctl, .service sonekine sahip dosyaları arayacağı için komut bu şekilde de kullanılabilir.

systemctl start ufw 

Belirli bir hizmeti başlatın.

systemctl start ufw

Belirli bir hizmeti durdurun.

systemctl stop ufw 

Çalışan bir hizmet , aşağıdaki komut kullanılarak manuel olarak durdurulup başlatılmasını önlemek için restart komutu kullanılarak yeniden başlatılabilir.

sudo systemctl restart ssh

Herhangi bir yapılandırma değişikliği yaptıysanız, uygulamak için bir hizmeti yeniden başlatmamız gerekmez. Bunun yerine, çalışan hizmette herhangi bir değişikliği uygulayan hizmeti yeniden başlatmak için yeniden yükle komutunu kullanabiliriz.

Her servis yeniden yüklenemez. Bazı servisler için bu geçerli değildir.

sudo systemctl reload ssh

İki komuttan hangisini kullanmamız gerektiğinden emin değilsek, yeniden yükle-veya yeniden başlat komutunu kullanarak bunu bizim için otomatik olarak belirleyecek ek bir seçenek var .

sudo systemctl reload-or-restart ssh 

Bir sunucuda çalıştırmak için gereken hizmetlerin sayısı nedeniyle bunları manuel olarak başlatmak uygun bir yöntem değildir. Etkinleştirme ve devre dışı bırakma komutlarının devreye girdiği yer burasıdır. Sistem başlatıldığında veya yeniden başlatıldığında systemd hizmetinin nasıl yanıt vereceğini değiştirebiliriz. Hizmet ayarlarını günceller ve ardından sisteme, sunucu açıldığında belirli hizmetin otomatik olarak başlatılması gerektiğini söyler. 

Hizmeti başlatmak için kullanacağınız servis adını yazıp, aşağıdaki komutu satırını çalıştırmanız yeterlidir.

sudo systemctl enable ufw

Hizmeti durdurmak için kullanacağınız servis adını yazıp, aşağıdaki komutu satırını çalıştırmanız yeterlidir.

sudo systemctl disabled ufw 

Devre dışı bırakma komutu, bir hizmetin önyükleme sırasında otomatik olarak başlatılmasını engelleyerek manuel olarak başlatılana kadar devre dışı bırakır.

Blog'a Dön