it-swarm.asia

Linux hizmetinin chkconfig tarafından desteklenmesi için neler gerekir?

Ben bir linux hizmeti ile boottime otomatik başlangıç ​​eklemek için çalışıyorum

chkconfig -add <servicename> 

ve bir mesaj alıyorum

service <servicename> does not support chkconfig

Red Hat Enterprise 4 kullanıyorum. Boottime'ta otomatik başlatmaya eklemeye çalıştığım komut dosyası şudur:

#!/bin/sh

soffice_start() {   if [ -x /opt/openoffice.org2.4/program/soffice ]; then
        echo "Starting Open Office as a Service"
        #echo " soffice -headless -accept=socket,port=8100;urp;StarOffice.ServiceManager
-nofirststartwizard"
        /opt/openoffice.org2.4/program/soffice
-headless -accept="socket,Host=0.0.0.0,port=8100;urp;StarOffice.ServiceManager"
-nofirststartwizard &   else
        echo "Error: Could not find the soffice program. Cannot Start SOffice."   fi }

soffice_stop() {   if [ -x /usr/bin/killall ]; then
        echo "Stopping Openoffice"
        /usr/bin/killall soffice 2> /dev/null   else
        echo "Eroor: Could not find killall.  Cannot Stop soffice."   fi }

case "$1" in  'start')    soffice_start    ;;  'stop')    soffice_stop    sleep 2    ;;  'restart')    soffice_stop    sleep 5  soffice_start    ;;  *)    if [ -x /usr/bin/basename ]; then
        echo "usage: '/usr/bin/basename $0' start| stop| restart"    else
        echo "usage: $0 start|stop|restart"    fi esac
35
Geo

Komut dosyasının 2 satırı olmalıdır:

# chkconfig: <levels> <start> <stop>
# description: <some description>

örneğin:

# chkconfig: 345 99 01
# description: some startup script

345 - levels to configure
99 - startup order
01 - stop order

Yukarıdaki başlıkları ekledikten sonra chkconfig --add <service>.

73
katriel

Katriel bunu zaten bir init betiği oluşturmak için gereken minimum minimum değerle cevaplasa da, /etc/init.d/skeleton ve bunu init betiğinizi temel alacağınız bir şablon olarak kullanma. Çok daha tutarlı ve okunabilir bir komut dosyası elde edersiniz.

4
Kamil Kisiel

Geo'nun özel sorunu zaten çözülmüş gibi görünüyor, ancak yönetilen bir hizmet olarak sidekiq ile bir Rails uygulaması kurmaya çalışırken) benzer bir mesajla karşılaştım. benim gibi diğer yenilere yardımcı olması durumunda çözümümü burada açıkla.

Bir CentOS yüklemesi üzerinde çalışıyorum ve chkconfig zaten httpd, mysql ve redis gibi diğer birçok hizmetle kuruldu. Çoğu hizmetin yalnızca çalışma düzeylerinde etkinleştirilmesi gerektiğini unutmayın 3 vasıtasıyla 5.

chkconfig --list
> httpd             0:off   1:off   2:on    3:on    4:on    5:on    6:off
> mysqld            0:off   1:off   2:on    3:on    4:on    5:on    6:off
> redis-server      0:off   1:off   2:on    3:on    4:on    5:on    6:off
> (etc...)

sidekiq hizmeti için yeni bir betik eklemem gerekiyordu, bu yüzden betiği https://Gist.github.com/CD1212/5326706 adresinde yakaladım, benim uygulamanıza uyacak şekilde değiştirdim parametrelerini seçip /etc/rc.d/init.d/sidekiq (oradaki diğer tüm komut dosyaları gibi root'a aittir).

Ancak bu yeni hizmeti kaydetmeye çalıştığımda, chkconfig hatası aldım:

Sudo chkconfig --add sidekiq
> service sidekiq does not support chkconfig

Sonra bazı ekstra okuma Her chkconfig betiğinin üstünde tanımlanan öncelik numaralarının benzersiz olması gerektiğini keşfettim. Daha net bir hata mesajı güzel olurdu! Başka bir komut dosyasının kapatma önceliği seviyesi 75 vardı, bu yüzden benimkini 76 olarak değiştirip tekrar denedim. İşte init betiğimin başı:

#!/bin/bash
#
# sidekiq    Init script for Sidekiq
#
# chkconfig: 345 99 76
# processname: sidekiq
# pidfile: /var/www/visual_testing_tool/sidekiq.pid
# description: Starts and Stops Sidekiq message processor for the Rails app.
#

Bu zaman, Sudo chkconfig --add sidekiq hiç şikayet etmedi. Sonra koştuğumda Sudo chkconfig --list sidekiq, sidekiq hizmeti, uygun çalışma seviyeleri için on olarak gösterildi.

1
Topher Hunt

Öncelik sayılarının benzersiz olması gerekmez. Yalnızca bir hizmet siparişini temsil ederler.

ls -l /etc/rc.d/rc3.d/*Oracle lrwxrwxrwx 1 kök kökü 16 Eyl 16 12:28 /etc/rc.d/rc3.d/S99Oracle -> ../init.d/Oracle

ls -l /etc/rc.d/rc3.d/*it
lrwxrwxrwx 1 kök kökü 12 Eyl 16 12:36 /etc/rc.d/rc3.d/S99it -> ../init.d/it

Chkconfig, "it" hizmetini eklerken bir sorunla karşılaşmadı. Aksi takdirde 100 hizmetle sınırlı kalırsınız.

Ayrıca benim örneğimde, komut dosyaları alfabetik olarak çalıştırıldığı için Oracle'dan önce çalışır.

0
George Zamroz