Vraag Wat is nodig om een ​​Linux-service te ondersteunen door chkconfig?


Ik probeer aan de auto start toe te voegen tijdens het boottime een linux service via de

chkconfig -add <servicename> 

en ik krijg een bericht met de boodschap

service <servicename> does not support chkconfig

Ik gebruik Red Hat Enterprise 4. Het script dat ik probeer toe te voegen aan de autostart tijdens het boottime is het volgende:

#!/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

33
2018-06-22 15:07


oorsprong


is uw service in init.d / - Rungano
Ja. Het is op inet.d. Bedankt voor uw vraag. - Geo


antwoorden:


Het script moet twee regels bevatten:

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

bijvoorbeeld:

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

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

Nadat u de bovenstaande headers heeft toegevoegd, kunt u deze uitvoeren chkconfig --add <service>.


70
2018-06-22 15:18



De extra ruimte op de tweede regel is toegevoegd door opwaarderen, het is niet nodig - katriel
Hier is wat meer informatie over de Run Levels en andere dingen. tldp.org/HOWTO/HighQuality-Apps-HOWTO/boot.html - Pred


Hoewel katriel dit al heeft beantwoord met het absolute minimum dat nodig is om een ​​init-script te maken, denk ik dat je ook goed geholpen zou zijn met kijken naar /etc/init.d/skeleton en gebruik dat als een sjabloon waarop uw init-script kan worden gebaseerd. Je zult eindigen met een veel consistenter en leesbaar script.


4
2018-06-22 22:23



Theoretisch goed advies, maar /etc/init.d/skeleton is niet aanwezig op RHEL-systemen, alleen op Debian en aanverwante (Ubuntu, denk ik). - Harlan


Het klinkt alsof het specifieke probleem van Geo al is opgelost, maar ik kwam een ​​vergelijkbaar bericht tegen terwijl ik probeerde een Rails-app op te zetten sidekiq als een managed service. Ik zal mijn oplossing hier uitleggen voor het geval dit andere nieuwkomers zoals ik helpt.

Ik werk aan een CentOS-installatie en chkconfig is al ingesteld met verschillende andere services, zoals httpd, mysql en redis. Houd er rekening mee dat de meeste services alleen moeten worden ingeschakeld op runlevels 3 door 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...)

Ik moest een nieuw script toevoegen voor de sidekiq service, dus ik heb het script gepakt https://gist.github.com/CD1212/5326706, aangepast om te passen in de parameters van mijn app en bewaard op /etc/rc.d/init.d/sidekiq (eigendom van root zoals alle andere scripts daar).

Toen ik echter probeerde om deze nieuwe service te registreren, kreeg ik de chkconfig-foutmelding:

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

Na wat extra lectuur Ik ontdekte dat de prioriteitsnummers die zijn gedefinieerd aan de bovenkant van elk chkconfig-script uniek moeten zijn. Een duidelijkere foutmelding zou leuk geweest zijn! Een ander script had prioriteit 75 afgesloten, dus ik veranderde de mijne in 76 en probeerde het opnieuw. Hier is het hoofd van mijn init-script:

#!/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.
#

Deze keer, sudo chkconfig --add sidekiq gaf geen klacht. Toen ik rende sudo chkconfig --list sidekiq, de sidekiq-service werd weergegeven als on voor de juiste runlevels.


1
2018-03-09 15:55





De prioriteitsnummers hoeven niet uniek te zijn. Ze vertegenwoordigen alleen een volgorde van services.

ls -l /etc/rc.d/rc3.d/*oracle   lrwxrwxrwx 1 root root 16 sep 16 12:28 /etc/rc.d/rc3.d/S99oracle -> ../init.d/oracle

ls -l /etc/rc.d/rc3.d/*it
  lrwxrwxrwx 1 root root 12 sep 16 12:36 /etc/rc.d/rc3.d/S99it -> ../init.d/it

Chkconfig had geen probleem met het toevoegen van de "it" -service. Anders zou je beperkt zijn tot 100 services.

In mijn voorbeeld zou het ook vóór oracle lopen omdat de scripts alfabetisch worden uitgevoerd.


0
2017-09-16 02:42