Hizmetler nasıl etkinleştirilir veya devre dışı bırakılır?

Ubuntu'daki hizmetleri nasıl etkinleştirip devre dışı bırakacağımı okudum ve bunları yönetmek için farklı olasılıklar var gibi görünüyor.

Bulduğum ilk yöntem şudur update-rc.d başlatmaya yeni hizmetler eklemek için /etc/init.d klasör ve içeriği.

Bulduğum diğer düzenleme .conf içindeki dosyalar /etc/init klasör.

Hizmetleri etkinleştirmenin / devre dışı bırakmanın / eklemenin önerilen yolu nedir ve neden?

Ubuntu'da bir hizmetin nasıl ekleneceği ve etkinleştirilip devre dışı bırakılacağı konusunda kısa bir kurşun geçirmez adım adım örnek verebilir misiniz?

GUI kullanılarak etkinleştirilebilen / devre dışı bırakılabilen hizmetler vardır (örneğin startup uygulama) veya terminal.

Terminal için birkaç seçeneğiniz var. İlk olarak, bir terminal açın (örneğin, çizgiye "terminal" yazın ve açın). Sonra:

Hizmetleri geçici olarak etkinleştirme / devre dışı bırakma

Hizmetleri durdurmak ve başlatmak için geçici (Gelecekteki önyüklemeler için bunları etkinleştirmez / devre dışı bırakmaz), yazabilirsiniz service SERVICE_NAME [action]. Örneğin:

  • sudo service apache2 stop: İstemek durmak apache hizmetini yeniden başlatana kadar veya yeniden başlatana kadar.
  • sudo service apache2 start: İstemek Başla Apache servisi daha önce durdurulduğunu varsayıyor.
  • service apache2 status: Etkinse / devre dışı / çalışmıyor ise, hizmetin durumunu size bildirir.
  • sudo service apache2 restart: İstemek BAŞLATMAK hizmet. Bu, en çok bir yapılandırma dosyasını değiştirdiğinizde kullanılır. Bu durumda, bir PHP yapılandırmasını veya Apache yapılandırmasını değiştirdiyseniz. Yeniden başlatma, sizi 2 komut satırıyla durdurmak / başlatmak zorunda kalmaktan kurtaracaktır
  • service apache2: Bu durumda, hizmet için yürütülecek eylemden bahsetmediğiniz için, söz konusu hizmet için kullanılabilen tüm seçenekleri size gösterecektir. Bu yön, hizmete bağlı olarak değişir, örneğin MySQL ile yalnızca bir parametrenin eksik olduğundan bahseder. Ağ hizmeti gibi diğer hizmetler için mevcut tüm seçeneklerin küçük listesinden bahseder.

Sistemdname

Ubuntu 15.04 ile başlayarak, Upstart Systemd lehine kullanımdan kaldırılacaktır. Hizmetleri yönetmek için Systemd ile aşağıdakileri yapabiliriz ( systemctl action SERVICE desen):

  • sudo systemctl start SERVICE: Bir hizmeti başlatmak için kullanın. Yeniden başlatıldıktan sonra devam etmiyor
  • sudo systemctl stop SERVICE: Bir hizmeti durdurmak için kullanın. Yeniden başlatıldıktan sonra devam etmiyor
  • sudo systemctl restart SERVICE: Bir hizmeti yeniden başlatmak için kullanın
  • sudo systemctl reload SERVICE: Hizmet destekliyorsa, hizmeti kullanan herhangi bir işlemi kesintiye uğratmadan ilgili yapılandırma dosyalarını yeniden yükler.
  • systemctl status SERVICE: Bir hizmetin durumunu gösterir. Bir hizmetin şu anda çalışıp çalışmadığını söyler.
  • sudo systemctl enable SERVICE: Hizmeti açar, bir sonraki yeniden başlatmada veya bir sonraki başlat olayında. Yeniden başlatıldıktan sonra devam eder.
  • sudo systemctl disable SERVICE: Bir sonraki yeniden başlatmada veya bir sonraki durdurma olayında hizmeti kapatır. Yeniden başlatıldıktan sonra devam eder.
  • systemctl is-enabled SERVICE: Bir hizmetin şu anda bir sonraki yeniden başlatmada başlatılacak veya başlatılmayacak şekilde yapılandırılıp yapılandırılmadığını kontrol edin.
  • systemctl is-active SERVICE: Bir hizmetin etkin olup olmadığını kontrol edin.
  • systemctl show SERVICE: Servisle ilgili tüm bilgileri gösterir.
  • sudo systemctl mask SERVICE: Bir hizmeti aşağıdakilere bağlayarak tamamen devre dışı bırakın /dev/null hizmeti el ile başlatamaz veya hizmeti etkinleştiremezsiniz.
  • sudo systemctl unmask SERVICE: Bağlantıyı kaldırır /dev/null ve hizmeti etkinleştirme ve / veya el ile başlatma yeteneğini geri yükler.

Sonradan Görme (15.04'ten Beri Kullanımdan Kaldırılmıştır)

Resmi Upstart yöntemini kullanmak istiyorsak (şu an için tüm hizmetlerin Upstart'a dönüştürülmediğini unutmayın), aşağıdaki komutları kullanabiliriz:

status SERVICE - Bu bize dönüştürülmüş bir hizmetin çalışıp çalışmadığını söyleyecektir. Bunun lehine kullanımdan kaldırıldığını unutmayın start, stop, status &amfi; restart. Ayrıca, bir hizmetin henüz upstart'a dönüştürülüp dönüştürülmediğini de bize bildirir:

Dönüştürülen bir hizmet genellikle geçerli durumu (Başlatma, Çalıştırma, Durdurma) çıkarır... ve süreç KİMLİĞİ. Dönüştürülmeyen bir hizmet hakkında bir hata verir. bilinmeyen iş.

Bazı kısayollar yalnızca aşağıdaki kısayollarla çalışabilir: service yukarıdaki komut, ancak% 100 başlangıç hizmetlerine dönüştürülmedikçe aşağıdaki komutlarla değil:

  • sudo start mysql: Başlamak
  • sudo stop mysql: Durdurmak
  • sudo restart mysql: Başlatmak
  • sudo status smbd: Durum

Bir hizmeti etkinleştirme / Devre dışı bırakma

Bir hizmetin başlatılmasını veya durdurulmasını kalıcı olarak değiştirmek için şunları yapmanız gerekir:

echo manual | sudo tee /etc/init/SERVICE.override

stanza nerede manual Upstart'ın bir sonraki açılışta hizmeti otomatik olarak yüklemesini durduracaktır. İle herhangi bir hizmet .override bitiş, özgün hizmet dosyasına göre önceliklidir. Hizmeti ancak daha sonra manuel olarak başlatabileceksiniz. Bunu istemiyorsanız, sadece silin .override.Örneğin:

echo manual | sudo tee /etc/init/mysql.override

MySQL hizmetini içine alacak manual mod. Bunu istemiyorsanız, daha sonra basitçe yapabilirsiniz

sudo rm /etc/init/mysql.override

ve hizmetin otomatik olarak yeniden başlaması için yeniden başlatın. Elbette bir hizmeti etkinleştirmek için en yaygın yol onu yüklemektir. Apache, Nginx, MySQL veya diğerlerini yüklerseniz, yükleme tamamlandıktan sonra otomatik olarak başlatılır ve bilgisayar her önyüklendiğinde başlatılır. Yukarıda belirtildiği gibi devre dışı bırakılması hizmeti kullanacaktır manual.

Şu anda Ubuntu'da yazılımın hizmet olarak başlatılması için üç farklı yol var, Sistemvname, Sonradan görme ve sistemdname. Burada bir hizmet, doğrudan kullanıcı tarafından başlatılan ve çalıştırılanın aksine, sistem tarafından arka planda çalıştırılan bir program olarak tanımlanır.

Sistemvname

Linux'ta hizmetleri başlatmanın geleneksel yolu, bir komut dosyası yerleştirmekti /etc/init.d, ve sonra kullan update-rc.d komut (veya RedHat tabanlı dağıtımlarda, chkconfig etkinleştirmek veya devre dışı bırakmak için.

Bu komut, sembolik bağlantılar oluşturmak için biraz karmaşık mantık kullanır /etc/rc#.d bu, hizmetlerin başlatılma sırasını kontrol eder. Eğer kaçarsan ls /etc/rc2.d hizmetlerin aşağıdaki gibi bir dosya adıyla öldürülme sırasını görebilirsiniz K##xxxx ve dosya adlarıyla başladı S##xxxx. Bu ## içinde S##xxxx hizmet için "başlangıç siparişi" anlamına gelir xxxx. Tersine, ## içinde K##xxxx hizmet için öldürme emri anlamına gelir xxxx.

İle bir büyük sorun Sistemvname sistemi önyüklerken bu muydu, her şey seri olarak yapılmalıydı, birbiri ardına, sistem önyükleme sürelerini gerçekten yavaşlatıyordu. Bunu paralelleştirmek için girişimlerde bulunuldu, ancak gelişigüzel ve tam olarak yararlanmak zordu. Bunun başlıca nedeni buydu Sonradan görme oluşturuldu.

Sonradan görme

Upstart, iş tanımı dosyalarını kullanır /etc/init bir hizmetin hangi olaylarda başlatılması gerektiğini tanımlamak için. Böylece, sistem önyüklenirken, upstart çeşitli olayları işler ve ardından paralel olarak birden çok hizmeti başlatabilir. Bu, örneğin, başka bir CPU'ya bağlı hizmet çalışırken veya ağ dinamik bir IP adresinin atanmasını beklerken diske bağlı bir hizmeti başlatarak sistemin kaynaklarını tam olarak kullanmalarını sağlar.

Tüm başlangıç iş dosyalarını çalıştırarak görebilirsiniz ls /etc/init/*.conf

Burada durmama izin verin ve bir hizmetin ne olduğunu veya ne yaptığını bilmiyorsanız, onu devre dışı bırakmayın!

Tüm hizmetler sonradan görmeye dönüştürülmedi. Son birkaç aydır Canonical'daki sunucu ekibinde çalışırken, bir dizi dönüştürülmüş iş dosyası üzerinde çalıştım ve en güzel yanı, tüm "sihir" komut dosyasından kurtulmasına ve tam olarak nasıl başlayacağınızı tanımlamak için buraya ve oraya birkaç komut koymasına izin vermesidir. hizmet ve başka bir şey değil. Ama şimdilik, sadece bir avuç geleneksel ağ hizmeti, örneğin kalamar ve samba, dönüştürüldü.

Bir hizmet başlangıç tabanlı mı?

Bir hizmetin başlangıç tabanlı olup olmadığını anlamak için durum komutunu çalıştırabilirsiniz:

status servicename

Eğer bir sonradan görme eyüp, bunu gösterecek.:

$ status statdstatd start/running, process 942

Ama değilse, daha çok böyle bir şey göreceksin.:

$ status apache2status: Unknown job: apache2

Bu durumda, apache2 dönüştürülmedi sonradan görme. Yani, devre dışı bırakmak için apache2 sadece çalıştırın

sudo update-rc.d apache2 disablesudo service apache2 stop

Upstart'ta hizmetleri (işleri) devre dışı bırak

Upstart iş tanımları yok update-rc.d komut. İşi devre dışı bırakmak için iş dosyasını devre dışı bırakmak üzere doğrudan düzenlemeniz gerekir. Bunu yapmak için iki yol vardır.

Eğer hala elle başlatmak mümkün olmak istiyorsanız, o zaman açıklama gerekiyor start on koşul. Yüklemek istediğinizi söyleyin samba ama otomatik olarak başlamasın. İşte iş dosyası (natty'de):

description "SMB/CIFS File Server"author      "Steve Langasek <steve.langasek@ubuntu.com>"start on local-filesystemsstop on runlevel [!2345]respawnpre-start script    RUN_MODE="daemons"    [ -r /etc/default/samba ] && . /etc/default/samba    [ "$RUN_MODE" = inetd ] && { stop; exit 0; }    install -o root -g root -m 755 -d /var/run/sambaend scriptexec smbd -F

Sakatlamak samba, sadece bir koyabilirsiniz # önünde "start on local-filesystems". Önyüklemede yedeklenmeyecek olsa da, bu sefer yine de durdurmanız gerektiğini unutmayın

sudo service smbd stop

Ancak, asla istemezseniz samba başlamak için paketi kaldırmanızı öneririm. Eğer yüklü istediğiniz, ama başlatılabilir, sen de yap:

mv /etc/init/smbd.conf /etc/init/smbd.conf.disabled

Başlat / durdur stanzasını kullanarak bir hizmeti devre dışı bırakma (11.04 itibariyle)

11.04'te olacak olan upstart sürümünden başlayarak, devre dışı bırakan yeni bir anahtar kelime var start on ve stop on kıtalar: manual. Bu nedenle, hizmeti 11.04'ten itibaren devre dışı bırakmanın başka bir yolu da yapmaktır:

echo 'manual' | sudo tee /etc/init/mysql.override# command from root shellecho manual >> /etc/init/mysql.override

Bir tane oluşturabilirsiniz override iş tanımını hiç düzenlemeden bir hizmeti devre dışı bırakmak için dosyayı manual içinde anahtar kelime var.

sysv-rc-conf

Kullanmayı deneyin sysv-rc-conf

sudo apt-get install sysv-rc-conf

ve hizmetleri yönetmeye başlamak için şu adımları izleyin:

sudo sysv-rc-conf

Bunun gibi etkileşimli bir pencere açacak

Sayfalar arasında daha fazla gezinebilirsiniz Ctrl+n sonraki sayfa için ve Ctrl+p önceki sayfa için. Hizmetleri seçerek etkinleştirebilir ve devre dışı bırakabilirsiniz SPACE istenilen çalışma seviyelerinde.

İşler-Yönetici

Başka bir alternatif şöyle olurdu İşler-Yönetici üzerinden yükleyerek

sudo apt-get install jobs-admin

Ayrıca böyle bir GUI sağlar

Daha fazla iş göstermek için şunları işaretlemeniz gerekir: Korunan İşleri Göster kendi menüsünden.

chkconfigname

Ve üçüncü seçenek şöyle olurdu chkconfigname,

sudo apt-get install chkconfig

CLI üzerinden kullanılabilir chkconfig Açık/Kapalı işleri gösteren liste.Ayrıca sistem hizmetlerini kullanarak görüntüleyebiliriz chkconfig –list

Hizmetler kullanılarak açılabilir

chkconfig <service> on

Hizmetler kullanılarak kapatılabilir

chkconfig <service> off

Ve uygun başlıklara sahip uygun bir init betiği kullanarak kendi hizmetimizi bile ekleyebiliriz.

chkconfig --add <service>

güncelleme-rc.d

Ve başka bir seçeneğe atıfta bulunulabilir işte güncelleme-rc.d , kısaca açıkladı burada.

Ubuntu Server 12.04 için bunu unutmayın, update-rc.d chkconfig yerine kullanılır.

Ubuntu'yu ssh üzerinden çalıştıranlar için bence en güzel seçenek rcconf - metin tabanlı bir program:

sudo apt-get install rcconfsudo rcconf

Sekme ve ok tuşlarıyla gezinin, etkinleştirmek / devre dışı bırakmak için ara çubuğu'na basın. Değişiklikler yeniden başlatmalarda kalıcıdır.

Ekran görüntüsü ödünç alındı bu blog yazısı, ayrıca gösterir sysv-rc-conf - çalışma seviyesini ayarlamanıza da izin veren benzer bir araç. (Çalışma seviyelerini değiştirmek isteyecek kadar önemseyen kişiler için :)

Ne yazık ki, rcconf upstart ile çalışmıyor (listelenen hizmetler /etc/init/*), sadece geleneksel mekanizma ile (ls -l /etc/init.d/* - sembolik bağ olmayanlar).

Neyse ki, bir sunucuya ssh-ing yaparken ilgili hizmetlerin çoğu (Apache, Tomcat, mdadm, boınc-client...) henüz upstart'a taşınmadı.

Öğrendim biyonik kadar bu GUI aracı var, BUM gibi bir şey ama Upstart ile uyumlu: Jobs-Admin

sudo apt-get install jobs-admin

Varolan başlangıç yapılandırma dosyasını (yukarıda açıklandığı gibi) düzenlemek iyi bir fikir değildir. Güncelleştirilmiş bir paket güncelleştirilmiş bir yapılandırma sağlayabilir ve değişikliklerinizi tekrar tekrar yapmanız gerekir.

De alarak bir bak man 5 init biri daha uygun bir çözüm bulacaktır: geçersiz kılma yapılandırmasını kullanma. Kısa örnek: "foobar" adlı bir hizmetimiz olduğunu varsayalım, bu yüzden adında bir dosya olurdu /etc/init/foobar.conf başlangıç yapılandırması ile. Şimdi bu dosyayı kaldırmak ya da değiştirmek istemiyorsunuz - ama ne bu hizmetin çalışmasını istiyorsunuz? Yani bir yer geçersizleştirmek yanındaki dosya: /etc/init/foobar.override, içeren (isteğe bağlı olarak açıklama içeren başlık ve) yerine start on / stop on tek kelimeli bir satır yerleştirdiğiniz satırlar: manual. Bu şekilde, upstart'a temel olarak foobar.conf ancak, yalnızca bu hizmeti el ile zorlandığında başlatmak için başlangıç tanımını geçersiz kılın (vıa service foobar start bizim örnek) olarak.

Ayrıca var Önyükleme Yöneticisi.

Yüklemek: sudo apt-get install bum

Daha fazla bilgi : http://www.marzocca.net/linux/bum.html

Sadece CLI kullandığım için benim için en basit yöntem update-rc.d.

Etkinleştirmek veya disble otomatik yeniden başlat vb :

sudo update-rc.d <daemon|service> <enable|disable>

Örnek:

update-rc.d spamassassin enable

Bir daemonu durdurmak veya başlatmak veya durumunu kontrol etmek için:

sudo service <daemon|service> <start|stop|restart|reload|force-reload|status>

Örnek:

sudo service spamassassin status  spamassassin.service - Perl-based spam filter using text analysis   Loaded: loaded (/lib/systemd/system/spamassassin.service; disabled; vendor preset: enabled)   Active: active (running) since Thu 2020-05-21 13:04:10 SAST; 4s ago  Process: 1928 ExecStart=/usr/sbin/spamd -d --pidfile=/var/run/spamd.pid $OPTIONS (code=exited, status=0/SUCCES Main PID: 1949 (spamd)    Tasks: 3 (limit: 2361)   CGroup: /system.slice/spamassassin.service           ├─1949 /usr/bin/perl -T -w /usr/sbin/spamd -d --pidfile=/var/run/spamd.pid --create-prefs --max-child           ├─1951 spamd child           └─1952 spamd child`  etc  etc

update-rc.d yukarıda gösterilen temelden biraz daha fazlasını yapabilir:

usage: update-rc.d [-f] <basename> remove       update-rc.d [-f] <basename> defaults       update-rc.d [-f] <basename> defaults-disabled       update-rc.d <basename> disable|enable [S|2|3|4|5]        -f: force

Her zaman olduğu gibi; sen van bakın manpage.

Kullanıyorum Stacercomment:

Stacer, kullanıcıların tüm sistemi farklı yönleriyle yönetmelerine yardımcı olan açık kaynaklı bir sistem iyileştirici ve uygulama monitörüdür, hepsi bir arada sistem yardımcı programıdır.

Hizmetleri ve süreçleri de gösterir. Tam bir GUI sistemi araç kutusu.

Ubuntu 14.04’ün cevabının hala burada eksik olduğunu unutmayın.

@MarcelloNuccio: Ubuntu 15.04 ile başlayarak, Upstart Systemd lehine kullanımdan kaldırıldı.

Ağ iletişimi için lütfen bakınız: How to restart the networking service? - Ask Ubuntu

[Bu](Enabling/Disabling Services in Fedora 12 | RyuSlash's Blog /) Fedora 12’de sıkışmış ve buraya inmiş olanlar için yararlı olacaktır. Linkrot’un chkconfig olması durumunda aradığınız şey budur.

Otomatik başlatma programları otomatik başlatma bildirimlerinde veya ‘*’ seçeneğinde yapılandırılır.hizmetçeşitli konumlardaki dosyaların yanı sırainit.d’ veya ‘crontab’. Bakınız: upstart - How to start application after login on CentOS? - Unix & Linux Stack Exchange