Bir servisin tüm çalışma seviyelerinde başlamasını engelleyin mi?


61

fooŞu anda runlevel 3 ve üstünde başlayan bir servisim var . Bunu yapmadan nasıl durdurabilirim, kullanmadan update-rc.d foo stop 3 ., hangisini (doğru anlıyorsam) her çalışma düzeyindeki değişiklikte hizmeti kapatabilir.

(yani, eğer çalışma seviyesi 1’de olsaydım ve etkin fooolsaydım, o zaman çalışma seviyesi 3’e geçtiğimde devre dışı kalırdı, değil mi?)

Debian GNU / Linux Lenny'i çalıştırıyorum.

Yanıtlar:


57

"Dur" terimi, arka planın başlamasını engellemez, ancak belirtilen çalışma seviyesine girerken onu kapatır.

Sadece tek bir çalışma seviyesinde bir hizmet / cini kaldırmak isterseniz update-rc.dbei belirttiği gibi Freiheit veya basitçe sembolik kaldırmak gelen /etc/rcX.d/X çalışma seviyesi olduğu,. Servisin otomatik olarak başlamasını update-rc.d -f foo removeistemiyorsanız, numarayı yapacağız.


2
Debian 8'de nasıl yapılır? sudo update-rc.d -f sunrpc removeçalışmıyor; Bir yeniden başlatmadan sonra hala mevcut.

Debian 9 Bu benim için işe yaramadı ve sonra farkettim ki, oh derp, sudo'ya ihtiyacım var. sudo yapmayı unutursanız, update-rc.d bir geri bildirim vermez. Bağlantıların gittiğini doğruladımls /etc/rc*.d
Jason Dunkelberger

Komut, Ubuntu'da başarısız oldu16.04
Stephane,

Doğru hizmet adını ilettiğinizden emin olun, update-rc.d yoksa geri bildirimde bulunmaz.
marcovtwout

Ya daha sonra tekrar etkinleştirmek istiyorsanız? Aşağıda "Şimdi Değil" in cevabı daha iyi, çünkü sonradan etkisizleştirip tekrar etkinleştirebilirsiniz. update-rc.d apache2 disable
Wadih M.


15

Kısa:

Bunu çabuk yapmanın güvenilir bir yolu yok.

Uzun:

Şu anki Debian (2012-06-01 itibariyle kararsız olan Debian) şu anda bir hizmeti / arka plan programı sürekli olarak devre dışı bırakmak için güvenilir bir kısa yol bulunmuyor. - Çünkü bir daemon paketinin yükseltme işlemi koşulsuz olarak "/etc/init.d/package restart" komutunu çalıştırdığından, bu çalışma düzeyi için devre dışı bırakılmış olsun veya olmasın.

Bir arka plan programı başlamadığından emin olmak için şunları yapabilirsiniz:

  • kaldır
  • /etc/init.d/xyz betiğinin yerel yönlendirmesini yapın (bu şekilde, hiçbir araç bulamaz)
  • o betiğin erken çıkışını teşvik etmek için ilgili paketin bir config dosyasını kullanın / kulanın (ör. init betiğinden kaynaklanmış olması durumunda / etc / default / xyz öğesinin başında bir "çıkış" koyun)
  • Bu tanımlamayı yapamayacak önceden tanımlanmış “resmi” yollar için bu başlangıç ​​koduna bakınız.

Bu eksik işlevselliği doldurması gereken Debian'da init betikleri için bazı init-policy-bir şey (/) basamağı vardı. - Kullanmaya çalıştım, karmaşık buldum, bir hata buldum ve bir daha asla dokunmadım.

Güncelleme:

“İnitd” ye alternatif olan “systemd” e geçin. Bir debian paketi var ve böyle bir şeyle bir hizmeti devre dışı bırakabilirsiniz:

cd /etc/systemd/system
ln -s /dev/null xyz.service

1
+1 Bu çok yararlı bir cevap - ve eğer başıma gelmeseydim daha sonra sokulmuştum - teşekkürler!

Sen unlink xyz.servicede yapabilir misin ?
jaggedsoft

@NextLocal, neden yazdığımı unuttum, ancak bir sistemin System V init komut dosyaları olup olmadığına inanıyorum systemd. - Böylece bağlantı onlara aramamalarını söyler.
Robert Siemer

/etc/default/xyzBir dosya eklemek için dosyayı düzenlemenin, exitpaketleyicinin bir sonraki güncellemede dosyanın doğru sürümle üzerine yazmasını engellemeyeceğini unutmayın. (Paket yapılandırma dosyalarını kaydeder ve çoğu durumda init komut dosyaları bu şekilde görüntülenmez.) Bu nedenle çoğu durumda yardımcı olmaz.
Alexis Wilke,

Devuan kurtarmaya gelir: sistemd yerine klasik SysV rc.d / init.d sistemini (ya da birisi bunu seçerse açık.
Csaba Toth,

5

Bu komutu çalıştır

apt-get install yükleme rcconf

Kurulduktan sonra, SSH'de rcconf komutunu çalıştırın; açılışta çalıştırılacak tüm servisleri gösteren bir iletişim kutusu alacaksınız. Özelliği devre dışı bırakmak / etkinleştirmek için Boşluk tuşuna basarak olanları seçin ve işlemi tamamlayın, Tamam'a basitçe tıklayın ve bu hizmet bir sonraki açılışta tekrar başlamak için canınızı sıkmayacak. Bunu yıllarca kullanmak. Benim gibi Debian / Ubuntu kullanıcıları için çok kullanışlı bir araç.


1,2,3 kadar kolay! Bu küçük komut satırı aracı için teşekkürler.
DanielaWaranie

2

Ne yapmaya çalıştığınla kafam karıştı.

Foo'nun hangi koşu seviyelerinde çalışmasını istiyorsunuz?

Her zaman çalışmasını istiyorsanız, kullanın update-rc.d foo defaults; Bu, 0, 1 ve 6'da duracak ve onu 2, 3, 4 ve 5. sıralarda bırakacak şekilde durduracaktır.

Tam olarak hangi çalışma seviyelerinin çalıştırılacağını belirlemek istiyorsanız:

update-rc.d foo stop 0 1 6 3 . start 2 4 5 .


1

Debian7'den insserv kullanmaya başla

Tüm hizmetleri ve çalışma seviyesini gösterir.

insserv --showall

Listelenen komut dosyalarını tüm çalışma seviyelerinden kaldırın

insserv --remove [specify_script]

0

Ubuntu'nun Bootup Manager yazılımı bir çeşit sysv-rc-conf ışığı , daha arkadaşça bir GUI sürümü ve bu konuyu okuyan birçok kişi bunu takdir edecektir.

http://www.marzocca.net/linux/bum.html


0

Kırmızı şapka tabanlı bir sistemde kullanabilirsiniz

chkconfig httpd off
chkconfig httpd --del

sunucuyu çalışma seviyelerinden kaldırmak için

debian tabanlı sistemde tüm servislerin /etc/rc?.d/ dizinlerinde bulunan dosyalar tarafından başlatılması gerekiyor ve bu dosyalar daha sonra /etc/init.d/ dizinindeki ilgili dosyalara sembolik bir bağ oluşturuyor. Bir hizmetin varsayılan olarak başlamamasını istiyorsanız, /etc/rc?.d dizininden yeniden adlandırabilir / kaldırabilirsiniz. Değişiklik, başlangıç ​​bağlantılarından biri hala içinde göründüğü sürece paket yükseltme işleminde korunur diğer (3,4 ve 5) dizinler. Veya linkleri değiştirmek için update-rc.d komutunu kullanabilirsiniz ve servisi daha sonra başlatmak istiyorsanız /etc/init.d/service_name start komutunu baştan sona erdirirseniz kullanabilirsiniz. durdurma, yeniden başlatma, yeniden yükleme gibi ...

Sanırım devre dışı bırakmak için sysv-rc-conf 'ı kullanabilirsin.


Soru Debian, Fedora veya Red Hat değil.

0
sudo update-rc.d SERVICE disable

Çalışma seviyelerini belirlemek istiyorsanız.

sudo update-rc.d SERVICE disable|enable [S|2|3|4|5]

Hizmeti programın adına değiştirmeyi unutmayın .

sudo service SERVICE restart

0

Neden başlangıç ​​komut dosyasını başka bir yere yedekleyip /etc/init.d/ içinde kaldırmıyorsunuz? Update-rc.d çalışmıyorsa.

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.