Ich versuche, dem Autostart zur Startzeit einen Linux-Dienst über das Internet hinzuzufügen
chkconfig -add <servicename>
und ich bekomme eine nachricht sagen
service <servicename> does not support chkconfig
Ich verwende Red Hat Enterprise 4. Das Skript, das ich zur Startzeit zum Autostart hinzufügen möchte, ist das folgende:
#!/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
Antworten:
Das Skript muss 2 Zeilen haben:
zum Beispiel:
Nachdem Sie die obigen Header hinzugefügt haben, können Sie ausführen
chkconfig --add <service>
.quelle
Während Katriel dies bereits mit dem Nötigsten beantwortet hat, das zum Erstellen eines Init-Skripts erforderlich ist, sind Sie meiner Meinung nach auch in der Lage, dieses
/etc/init.d/skeleton
als Vorlage für Ihr Init-Skript zu betrachten und zu verwenden. Sie erhalten ein viel konsistenteres und lesbareres Skript.quelle
/etc/init.d/skeleton
auf RHEL-Systemen nicht vorhanden, nur auf Debian und verwandten (Ubuntu, denke ich).Es hört sich so an, als ob das spezifische Problem von Geo bereits gelöst ist, aber ich bin auf eine ähnliche Meldung gestoßen, als ich versuchte, eine Rails-App
sidekiq
als verwalteten Dienst einzurichten . Ich werde meine Lösung hier erklären, falls es 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
3
durch aktiviert werden müssen5
.Ich musste ein neues Skript für den
sidekiq
Dienst hinzufügen , also habe ich das Skript unter https://gist.github.com/CD1212/5326706 abgerufen , es an die Parameter meiner App angepasst und unter/etc/rc.d/init.d/sidekiq
(im Besitz von root wie alle anderen) gespeichert andere Skripte dort).Als ich jedoch versuchte, diesen neuen Dienst zu registrieren, erhielt ich den Fehler chkconfig:
Nach einigem Nachlesen stellte ich fest, dass die Prioritätsnummern, die oben in jedem chkconfig-Skript definiert sind, eindeutig sein müssen. Eine klarere Fehlermeldung wäre schön gewesen! Ein anderes Skript hatte die Priorität 75 für das Herunterfahren, daher habe ich mein Skript auf 76 geändert und es erneut versucht. Hier ist der Kopf meines Init-Skripts:
Diesmal
sudo chkconfig --add sidekiq
gab es keine Beschwerde. Als ich dann liefsudo chkconfig --list sidekiq
, wurde der Sidekiq-Dienston
für die entsprechenden Runlevel angezeigt .quelle
Die Prioritätsnummern müssen nicht eindeutig sein. Sie stellen nur eine Bestellung von Dienstleistungen dar.
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 ausgeführt, da die Skripte alphabetisch ausgeführt werden.
quelle