systemctl nedir?

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 |
|
|
| Çalışan birimleri listeleyin |
|
|
| Başarısız birimleri listele |
|
|
| Kurulu birim dosyalarını listele |
|
|
| Bir PID için işlem durumunu göster |
|
bellek ve ebeveyn |
| Ünite durumunu kontrol etme | ||
| Bir üniteyle ilişkili bir kılavuz sayfasını göster |
|
ünite tarafından desteklendiği gibi |
| Bir birimin durumu |
|
çalışıp çalışmadığı dahil |
| Bir birimin etkin olup olmadığını kontrol edin |
|
|
| Bir birimin başlatılması, yeniden başlatılması, yeniden yüklenmesi | ||
| Bir üniteyi hemen başlatın |
|
root yetkisi ister |
| Bir birimi derhal durdurun |
|
root yetkisi ister |
| Bir birimi yeniden başlat |
|
root yetkisi ister |
| Bir birimi ve yapılandırmasını yeniden yükleyin |
|
root yetkisi ister |
| systemd yöneticisi yapılandırması yeniden yükleyin |
|
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 |
|
root yetkisi ister |
| Bir birimin açılışta otomatik olarak başlamasını ve hemen başlatılmasını sağlayın |
|
root yetkisi ister |
| Bir birimi artık önyüklemede başlamaması için devre dışı bırakın |
|
root yetkisi ister |
| Üniti yeniden etkinleştirin |
|
yani devre dışı bırak ve yeniden etkinleştir |
| Bir birimi maskeleme | ||
| Başlatmayı imkansız kılmak için bir birimi maskeleyin |
|
root yetkisi ister |
| Bir birimin maskesini kaldır |
|
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 |
|
| Sistemi kapatın ve kapatın |
|
| Sistemi askıya al |
|
| Sistemi hazırda bekletme moduna geçirin |
|
| Sistemi hibrit uyku durumuna getirin (veya her ikisini de askıya alın) |
|
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.
