Frage Was wird benötigt, damit ein Linux-Dienst von chkconfig unterstützt wird?


Ich versuche, um den automatischen Start bei boottime einen Linux-Dienst durch die hinzufügen

chkconfig -add <servicename> 

und ich bekomme eine Nachricht, die sagt

service <servicename> does not support chkconfig

Ich verwende Red Hat Enterprise 4. Das Skript, das ich dem Autostart bei boottime hinzufügen möchte, ist folgendes:

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


Ursprung


ist Ihr Service in init.d / - Rungano
Ja. Es ist auf inet.d. Danke für deine Frage. - Geo


Antworten:


Das Skript muss 2 Zeilen haben:

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

zum Beispiel:

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

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

Nachdem Sie die obigen Header hinzugefügt haben, können Sie sie ausführen chkconfig --add <service>.


70
2018-06-22 15:18



Der zusätzliche Platz in der zweiten Zeile wurde durch Markdown hinzugefügt, es wird nicht benötigt - katriel
Hier finden Sie weitere Informationen zu den Run Levels und anderen Dingen. tldp.org/HOWTO/HighQuality-Apps-HOWTO/boot.html - Pred


Während katriel dies bereits mit dem notwendigen Minimum beantwortet hat, um ein Init-Skript zu erstellen, denke ich, dass es Ihnen auch gut geht, wenn Sie es betrachten /etc/init.d/skeleton und diese als Vorlage für das Init-Skript verwenden. Sie erhalten ein viel konsistenteres und lesbareres Skript.


4
2018-06-22 22:23



Theoretisch guter Rat, aber /etc/init.d/skeleton ist nicht auf RHEL-Systemen, nur auf Debian und verwandten (Ubuntu, denke ich). - Harlan


Es hört sich an, als wäre Geos spezifisches Problem bereits gelöst worden, aber ich stieß auf eine ähnliche Nachricht, als ich versuchte, eine Rails-App mit zu erstellen sidekiq als Managed Service. Ich werde meine Lösung hier erklären, falls sie anderen Neulingen wie mir hilft.

Ich arbeite an einer CentOS-Installation, und chkconfig ist bereits mit mehreren anderen Diensten wie httpd, mysql und redis eingerichtet. Beachten Sie, dass die meisten Dienste nur auf Runlevels aktiviert werden müssen 3 durch 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...)

Ich musste ein neues Skript für die hinzufügen sidekiq Service, also nahm ich das Drehbuch an https://gist.github.com/CD1212/5326706, es an die Parameter meiner App angepasst und gespeichert /etc/rc.d/init.d/sidekiq (im Besitz von root wie alle anderen Skripte dort).

Als ich jedoch versuchte, diesen neuen Dienst zu registrieren, bekam ich den Fehler chkconfig:

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

Nach dem etwas mehr lesen Ich habe festgestellt, dass die am oberen Rand jedes chkconfig-Skripts definierten Prioritätsnummern eindeutig sein müssen. Eine klarere Fehlermeldung wäre nett gewesen! Ein anderes Skript hatte die Abschaltprioritätsstufe 75, also änderte ich meins auf 76 und versuchte es erneut. Hier ist der Kopf meines Init-Skripts:

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

Diesmal, sudo chkconfig --add sidekiq gab keine Beschwerde. Dann als ich rannte sudo chkconfig --list sidekiq, der sidekiq-Dienst wurde als angezeigt on für die passenden Runlevels.


1
2018-03-09 15:55





Die Prioritätsnummern müssen nicht eindeutig sein. Sie stellen nur eine Reihenfolge der Dienste dar.

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 Wurzelwurzel 12 Sep 16 12:36 /etc/rc.d/rc3.d/S99it -> ../init.d/it

Chkconfig hatte kein Problem beim Hinzufügen des "it" -Dienstes. Andernfalls wären Sie auf 100 Dienste beschränkt.

Auch in meinem Beispiel würde es vor Oracle laufen, weil die Skripte alphabetisch laufen.


0
2017-09-16 02:42