systemctl ile Linux Hizmetleri Nasıl Listelenir

Yayınlanan: 2022-10-23
Bir bash istemi gösteren Linux dizüstü bilgisayar
fatmawati achmad zaenuri/Shutterstock.com
Systemd ile bir Linux sisteminde çalışan tüm hizmetleri görmek için "systemctl --type=service --state=running" komutunu kullanın. Bu size her aktif hizmetin adını, yükünü, alt durumunu ve açıklamasını gösterecektir. Ölü, çıkılan, başarısız veya etkin olmayan hizmetleri görmek için durum değerini de değiştirebilirsiniz.

Linux bilgisayarınız, hizmetler veya arka plan programı adı verilen birçok arka plan görevine dayanır. Systemd tabanlı dağıtımlarda, hangi hizmetlerin çalıştığını, devre dışı bırakıldığını veya başarısız olduğunu görmenizi sağlayan yerleşik komutlarınız vardır.

Hizmetler ve Daemon'lar

Hizmetler ve arka plan programları, kullanıcı arabirimi olmadan çalışan, insan etkileşimi gerektirmeyen ve genellikle bilgisayar başlatılırken başlatılan arka plan görevleridir.

Bir zamanlar, başlatılan ilk süreç olan init tarafından hizmetler başlatıldı. Hizmetlerin ayrıntıları, “/etc/init/d” dizininde bulunan bir dizi komut dosyasında tutuldu. Sistem dışı dağıtımlarda hala durum böyle.

Systemd dünyasında, hizmetler şu anda başlatılan ilk süreç olan systemd tarafından başlatılır. Servislerin detayları “/usr/lib/systemd” dizininde bulunan birim dosyalarında saklanır.

Man sayfasına göre systemd bir sistem ve servis yöneticisidir. Hizmetler ve arka plan programları da dahil olmak üzere systemd sisteminin farklı yönlerini incelemek ve kontrol etmek için systemctl komutunu kullanabilirsiniz.

Burada sisteme özgü komutlara baktığımız için, bilmeniz gereken ilk şey, sistemd tabanlı bir dağıtım çalıştırıp çalıştırmadığınızdır.

İLGİLİ: Neden Linux'un systemd Bunca Yıldan Sonra Hala Bölücü?

init Veya systemd Tabanlı?

Linux dağıtımlarının büyük çoğunluğu, Arch, Red Hat ve Debian dahil systemd'yi ve bunlardan türetilen dağıtımların çoğunu kullanır. Bu, Ubuntu dağıtım ailesini, Fedora ve dönüşlerini ve Manjaro ve diğer Arch tabanlı dağıtımları içerir.

Ancak, bu dağıtımlardan bazılarının systemd kullanmak zorunda kalmamak için özel olarak oluşturulmuş çatalları veya aromaları vardır. Sadece bu değil, birinin dağıtımlarında varsayılan olarak gelenler yerine kullanmayı seçebileceği runit veya s6-linux-init gibi başka init sistemleri de var.

Systemd ile Başlangıçta Bir Linux Programı Nasıl Çalıştırılır
İLGİLİ Sistemd ile Başlangıçta Bir Linux Programı Nasıl Çalıştırılır

Kendi kurmadığınız bir Linux bilgisayarı yönetmeniz gerekiyorsa, sistemd kullanıp kullanmadığından emin olmanın tek yolu kontrol etmektir. Bunu pstree komutu ile işlem ağacına bakarak yapabiliriz. Ağacın sadece en tepesini görmemiz gerekiyor - sonuçta çalışan ilk süreci arıyoruz - bu yüzden çıktıyı head komutundan geçireceğiz ve ilk beş girişi isteyeceğiz.

 ağaç | kafa -5 

Bir Linux kurulumunun systemd kullanıp kullanmadığını belirlemek için pstree piped head aracılığıyla kullanma

Önyüklemeden sonra çalıştırılan ilk sürecin systemd olduğunu görebiliriz, bu yüzden kesinlikle sistemd tabanlı bir Linux kurulumundayız.

İLGİLİ: Linux Terminalinden İşlemler Nasıl Yönetilir: Bilmeniz Gereken 10 Komut

Hizmetleri Listelemek için systemctl'yi kullanma

Hizmetleri ve arka plan programlarını listeleme komutu systemctl . type ve state seçenekleri ile systemctl komutunu geliştirebiliriz. systemctl çalışır durumda olan hizmetler hakkında rapor vermesini istiyoruz.

 systemctl --type=servis --state=çalışıyor 

Çalışan hizmetleri listelemek için systemctl kullanma

Bir bilgi tablosu oluşturulur. Terminal pencereniz için çok geniş veya uzunsa, varsayılan dosya görüntüleyicinizde görüntülenir, bu muhtemelen less olacaktır.

Daha az dosya görüntüleyicide görüntülenen bir systemctl çağrısının çıktısı

Tablonun sağ ucunu görmek için Sağ Ok tuşuna basın. Normal görünüme dönmek için Sol Ok tuşuna basın.

Daha az dosya görüntüleyicide görüntülenen bir systemctl çağrısından çıktının sağ bölümü

Daha azdan çıkmak için Q tuşuna basın. Görüntülenen sütunlar şunlardır:

  • Birim : Hizmetin veya arka plan programının adı. Sütunun adı “Birim” çünkü bu systemd her şey, bir birim dosyasında bulunan bilgi sistemi kullanılarak başlatıldı.
  • Load : Hizmetin veya arka plan programının yük durumu. Yüklenebilir, bulunamadı, kötü ayar, hata veya maskelenmiş olabilir.
  • Etkin : Hizmetin veya arka plan programının içinde bulunduğu genel durum. Etkin, yeniden yükleniyor, etkin değil, başarısız, etkinleştiriliyor veya devre dışı bırakılıyor olabilir.
  • SUB : Hizmetin veya arka plan programının alt durumu. Ölü, çıkılmış, başarısız, etkin değil veya çalışıyor olabilir.
  • Açıklama : Ünitenin kısa bir açıklaması.

Tek bir hizmete odaklanmak istiyorsak, systemctl çıktısını grep aracılığıyla aktarabiliriz. Bu komut, ssh hizmeti için tablo girişini yalıtır.

 systemctl --type=service --state=çalışıyor | grep ssh 

Sonuçlardan tek bir hizmeti izole etmek için grep kullanma

Şu ana kadar tablonun içeriğini state=running seçeneğini sağlayarak filtreledik. Bunun yerine alt durumun olası değerlerinden herhangi birini kullanabiliriz: ölü, çıkıldı, başarısız, etkin değil veya çalışıyor.

Başarısız hizmetleri arayalım:

 systemctl --type=service --state=başarısız 

systemctl ile başarısız hizmetler hakkında raporlama

Alt durum kombinasyonları kullanılabilir. Bunları virgülle ayrılmış liste olarak yazın. Seçenekler arasında boşluk bırakmadığınızdan emin olun. Bunun, her iki durumla da eşleşen hizmetleri bulduğunu unutmayın.

 systemctl --type=service --state=başarısız, çıkıldı 

systemctl ile başarısız olan veya çıkan hizmetleri aramak

Ekran dışı sütunlara bakmak için Sağ Ok tuşuna basmak, listede çıkılan ve başarısız olan servislerin bir karışımına sahip olduğumuzu gösterir.

systemctl tarafından bulunan başarısız ve çıkılan hizmetlerin bir karışımı

Varsayılan olarak systemctl , systemd systemd başlatılan süreçleri (hizmetleri ve arka plan programlarını) listeler. Bu nedenle tüm bu süreçlerin kısaltması “birimler”dir.

Birimleri listelemek için systemctl açıkça isteme seçeneği vardır, ancak varsayılan eylem olduğu için sık kullanılmaz.

Bu komutlar aynı sonuçları verir.

 sudo systemctl liste birimleri --type=service --state=çalışıyor
 sudo systemctl --type=service --state=çalışıyor

Birim Dosyalarını Listelemek için systemctl Kullanma

list-unit-files seçeneğini systemctl komutunun kapsamını genişletebiliriz. Bu, yalnızca başlatılan hizmetler ve arka plan programları hakkında rapor vermekle kalmaz, aynı zamanda bilgisayarınızda yüklü olan tüm birim dosyalarını da listeler.

 systemctl liste-birim-dosyaları --durum=etkin 

systemctl ile birim dosyalarını listeleme

Renkli bir tablo görüntülenir.

Daha az dosya tarayıcısında görüntülenen, systemctl tarafından oluşturulan birim dosyalarının listesi

state seçeneğinin kaldırılması filtrelemeyi kaldırır. Çıktı, durumlarından bağımsız olarak kurulu tüm birim dosyalarını içerecektir.

 systemctl liste-birim dosyaları 

Filtreleme olmadan birim dosyalarını listelemek için systemctl kullanma

Çıktı, önceki komutların sonuçlarından çok daha fazla girdi içerecektir.

systemctl tarafından listelenen ve daha az dosya tarayıcısında görüntülenen tüm birim dosyaları

Test bilgisayarımızdaki sonuç listesi, önceki komutlarımızın çıktısından neredeyse dört kat daha uzundur.

state seçeneğini kullanmak istiyorsanız, daha önce gördüğümüz gibi birden fazla durum kullanabilirsiniz. Aynı kurallar geçerlidir. Seçenekleri virgülle ayrılmış değerler olarak sağlayın ve boşluk bırakmayın.

Bu komut, devre dışı bırakılmış veya başlatılamayan tüm birim dosyalarını listeler.

 systemctl liste-birim dosyaları --durum=etkin,başarısız 

İki durumdan biriyle eşleşen birim dosyalarını aramak için systemctl kullanma

Durum seçeneğiyle yaptığınız seçimlere göre filtrelenmiş, azaltılmış sayıda sonuç gösterilir.

systemctl tarafından bulunan devre dışı bırakılmış ve başarısız birim dosyalarının bir karışımı

Tek Hizmete Ayrıntılı Olarak Bakmak

Bir hizmet veya arka plan programı hakkında bir şey ilginizi çekiyorsa ve daha derine inmeyi hak ediyorsa, systemctl durum seçeneğini kullanarak ona ayrıntılı olarak bakabilirsiniz.

SSH arka plan programı sshd'ye bir göz atalım. Tek yapmamız gereken durum seçeneğini ve hizmetin veya arka plan programının adını kullanmak.

 systemctl durumu sshd 

systemctl tarafından görüntülenen tek bir hizmetin ayrıntıları

Bu kompakt ekran şunları gösterir:

  • Kısa bir açıklama ile birlikte hizmetin adı. Renk kodlu bir nokta, çalışıp çalışmadığını gösterir. Yeşil çalıştığı anlamına gelir, kırmızı çalışmadığı anlamına gelir.
  • Birim dosyasının yolu da dahil olmak üzere yüklenenler.
  • Ne kadar süredir çalışıyor.
  • Belgelerin man kılavuzunda bulunduğu yer.
  • Çalışan örneğin İşlem Kimliği.
  • Bu hizmetin kaç eşzamanlı örneği çalışıyor. Genellikle bu bir olacaktır.
  • Ne kadar bellek tüketiliyor.
  • Ne kadar CPU zamanı tüketildi.
  • Hizmetin ait olduğu kontrol grubu.

Sistem günlüğündeki ilgili girişler de gösterilir. Bunlar genellikle hizmetin başlatılması gibi olaylardır. Doğru başlatılmayan bir hizmet veya arka plan programı arıyorsanız, bunlar bilgilendirici olabilir.

İLGİLİ: Journalctl Linux Sistem Günlüklerini Okumak İçin Nasıl Kullanılır

Otonom Sistemler

Hizmetler ve cinler, işletim sisteminizin birçok otomatik eylemini sağlar, bu nedenle hayati önem taşırlar. Bu, sağlıklarının da hayati önem taşıdığı anlamına gelir.

Hizmetleriniz, arka plan programlarınız ve birim dosyalarınız hakkında bir görünüm elde etmek kolay ve bilgilendiricidir. Bir hizmet veya arka plan programı başlamayı reddederse, bu aynı zamanda değerli bir sorun giderme adımıdır.

İLGİLİ: Linux'ta "Çok Fazla Açık Dosya" Hatası Nasıl Çözülür