Önyükleme ile başlayan tüm hizmetleri listele


15

Ben önyükleme başlaması (veya başlatılmış) olması gereken tüm hizmetlerin (/etc/init.d veya upstart veya systemd) bir listesini almak için bir yol arıyorum.

Tüm başlangıç ​​hizmetlerinin bir listesini nasıl alırsınız? - Bu soruyu biliyorum ve kullanmayı önerir service --status-all.

Ama bu bana hangi servislerin ÇALIŞTIRILMASI gerektiğini gösteriyor . Tüm init betiklerini " status" argümanıyla çağırır . Bu, çalıştırılabilecek tüm hizmetlerin bir listesidir.

Ancak, önyüklemede başlatılan bir hizmetin hala çalışıp çalışmadığını bilmek istiyorum.

Misal…

Yüklü webfs var. Ama önyüklemede çalışmasını istemiyorum. Böylece onu devre dışı: sudo update-rc.d webfs disable. Ayrıca samba yükledim ve önyüklemede çalışıyor olmalı. Ancak durdurulur (herhangi bir nedenle). sudo service --status-allburada bana yardım etmiyor:

$ sudo service --status-all 2>/dev/null | grep -E 'samba$|webfs'
 [ - ]  samba
 [ - ]  webfs

Her ikisi de kapalı ama hiçbir fikrim yok, bir (samba) açık olması gerekiyordu.

Yani…

Açılışta başlayan tüm hizmetlerin bir listesini nasıl alabilirim? Ve bir uzantı olarak, bu hizmetlerin "durumunu" almanın kolay bir yolu var mı (eğer değilse, ben sadece bu liste üzerinde döngü ve "hizmet $ hizmet durumu" ya da bunun gibi bir şey çalıştıracağım).

Teşekkürler, Alexander

Edit 2015-05-04: Ubuntu 14.04'deyim .

Bu sorunun ana odağı şudur:

Ancak, önyüklemede başlatılan bir hizmetin hala çalışıp çalışmadığını bilmek istiyorum.

Bu nedenle, initctl listpek yardımcı olmuyor. /etc/init.dKomut dosyaları tarafından başlatılan hizmetleri (başlangıçtaki komut dosyaları ile karşılaştırıldığında /etc/init) gerçekten dikkate almaz .

Ayrıca bir listesi /etc/rc?.d/S*yardımcı olmaz. Belirli bir çalışma seviyesinde başlatılmış olabilecek hizmetlerin bir listesini oluşturur. Başlamam gereken bir hizmet hala çalışıyorsa bana göstermiyor.

Temel olarak, svcs -xUbuntu için Solaris gibi bir şey arıyorum . İle svcs -x, başlatılan bir hizmet artık çalışmıyorsa çıktı alırım. Bu, Ubuntu'ya da ihtiyacım var.

Sebep: Icinga / Nagios izleme sistemimiz için (daha fazla veya daha az ...) genel bir kontrol yaptırmak istiyorum, bu da beni bir hizmetin artık çalışmaması durumunda çalışmalıdır. Birçok farklı müşteri için birçok farklı sunucumuz olduğundan, "önemli" hizmetlerin bir listesini tanımlamak gerçekten ölçeklendirilmez.


Hangi Ubuntu sürümü?
AB


@Parto Bu sorudaki kabul edilen yanıt initctl list, başlatılan / çalıştırılan işlemleri listeleyen, ancak bu liste de elle başlatılan işlemleri de içerecektir
Sergiy Kolodyazhnyy

@AB Ubuntu'dayım 14.04.
Alexander Skwar

@Parto askubuntu.com/questions/218/… tam olarak bir cevap vermedi. @Serg'in yazdığı gibi, cevap kullanılacaktı initctl list. Ancak bu, manuel olarak başlatılan hizmetleri de göstereceği için gerçekten cevap vermiyor. Ve çalışmayan hizmetleri göstermiyor.
Alexander Skwar

Yanıtlar:


19

Tüm hizmetler başlangıçta başlar:

initctl list

Sistemde bulunan tüm hizmetlerin listesi:

service --status-all

Yanlış. Ayrıca etkinleştirilmiş hizmetlerin listesini de başlatmayın (başlangıçta başlar). Bilinen tüm hizmetleri (bazıları devre dışı bırakılabilecek) ve şu anda çalışıyor olup olmadıklarını (otomatik olarak başlatıldıkları anlamına gelmez) gösterirler.
Reinier Post

2

İşte benim oneliner'im grep -i 'runlevel' /etc/init/* | awk '!/#/ && /start on/ && /2/ {gsub("/"," "); print $0 }' | cut -d ' ' -f4-

Biraz daha temiz çıktı elde edilebilir. grep -i 'runlevel' /etc/init/* | awk '/start on/ && /2/ {gsub("/"," "); gsub(":", " ");gsub(".conf"," "); print $3 }'

Şimdi ayrıntılara girelim. Başlatma işlerinin tümü içinde depolanıyor /etc/init/, değil mi? Oradaki işlerin hangi çalışma seviyesine başladıklarını belirten bir çizgisi var. Çalışma seviyesi 2 normal bir önyükleme, varsayılan çalışma seviyesidir. Bu nedenle runlevel, grep'in çıktısını söyleyen ve temizleyen tüm satırları sadece awk start onve runlevel # 2 ile eşleşecek şekilde awk ile temizlersek , uptart işlerinin listesini alırız. Geri kalanı sadece ihtiyaçları belirlemek, dosya adlarını uzaya değiştirmek ve dosya adlarını kendileri bırakarak bu dosyaların yolunu kesmek içindir.

!/#/Bölüm muhtemelen ben şahsen manuel olarak eklenen etmişti başlangıç direktifleri, dışarı yorumladı adrese etmektir.

Diğer şeylerin yanı sıra, /etc/rc2.d(doğru anlarsam) daha az öncelikli komut dosyalarına sahip olduğunuz yer vardır.

Bunun için ham bir astar: ls /etc/rc2.d/* | grep S | awk '{sub("S"," "); print $2}

Bu klasörde gerçekten çalışma düzeyi 2'de çalışan komut dosyaları, S ile başlayıp ardından öncelik numarası ile adlandırılır. Şimdi, temel olarak, S ile başlayan tüm dosyaları alıyoruz ve sadece öncelikli adla listeliyoruz (yine de bunu nasıl temizleyeceğimizi bulmamız gerekiyor).

Muru yorumlarda düzgün bir şekilde işaret /etc/init/*.overrideettiği gibi, "... Bir işin yapılandırma dosyasını doğrudan değiştirmek zorunda kalmadan nasıl çalışacağını değiştirebilecek dosyalar" da var ( init manpage )

Şu anda, bu dosyalarla pek fazla deneyimim olmadığından, bu .override dosyalarına yalnızca 'grep' manual '/etc/init/*.override' komutunu kullanarak başlatılması söylenen hizmetleri listelemeyi önerebilirim manuel olarak initctlveya serviceskomutları ile.


Olay bağımlılıkları nedeniyle, belirli bir hizmetin diğer hizmetlerin başlatılmasına neden olup olmayacağını kolayca belirleyemeyeceğinizi unutmayın. Küçük .overridedosyalar da var.
muru

@ Teşekkürler. Ancak bu sadece başlangıçlarla ilgilidir. Ayrıca "ls /etc/rc2.d/* ..." pek yardımcı olmuyor. Hangi hizmetlerin başlatılmış olabileceğini gösterecektir. Ancak, hangi hizmetlerin hala çalıştığını göstermez. Sanırım gönderimin ana noktası belli değildi. Aradığım: Ama bilmek istiyorum ki, önyüklemede başlatılan bir hizmet hala çalışıyor. Solaris'i tanıyor musunuz bilmiyorum. Orada, sadece "svcs -x" yapardım ve eğer bir şey döndürürse, bir şeyin çalışmadığını biliyorum. Ubuntu için böyle bir şeye ihtiyacım var.
Alexander Skwar

Biri orada benim bir astar ve initctl listesinin çıktılarını karşılaştırmak için bir komut dosyası veya bashrc işlevi yazabilirsiniz. Bunu göndermemi ister misin?
Sergiy Kolodyazhnyy

@ İyi günler - eğer teklif ediyorsanız;)
Alexander Skwar

2

Tüm hizmetleri ve ilgili çalışma seviyesi durumunu listele - chkconfig stili:

# sysv-rc-conf --list

acpid        2:on       3:on    4:on    5:on
apache-htcac 0:off      1:off   2:off   3:off   4:off   5:off   6:off
apache2      0:off      1:off   2:on    3:on    4:on    5:on    6:off

Listelenenlerin tümü için etkileşimli metin tabanlı düzenleme:

# sysv-rc-conf

l SysV Runlevel Config   -: stop service  =/+: start service  h: help  q: quit qk
x 
x service      1       2       3       4       5       0       6       S 
x ----------------------------------------------------------------------------
x acpid       [ ]     [X]     [X]     [X]     [X]     [ ]     [ ]     [ ]
x apache-ht$  [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]     [ ]
x apache2     [ ]     [X]     [X]     [X]     [X]     [ ]     [ ]     [ ]
x
x Use the arrow keys or mouse to move around.      ^n: next pg     ^p: prev pg
x                        space: toggle service on / off

Yoksa, yüklemeniz gerekebilir:

apt install sysv-rc-conf
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.