¿Qué se necesita para que un service linux sea compatible con chkconfig?

Estoy tratando de añadir al arranque automático en el arranque de un service linux a través de la

chkconfig -add <servicename> 

y recibo un post diciendo

 service <servicename> does not support chkconfig 

Estoy usando Red Hat Enterprise 4. El script que bash agregar al inicio automático durante el arranque es el siguiente:

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

El guión debe tener 2 líneas:

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

por ejemplo:

 # chkconfig: 345 99 01 # description: some startup script 345 - levels to configure 99 - startup order 01 - stop order 

Después de agregar los encabezados anteriores, puede ejecutar chkconfig --add <service> .

Mientras que katriel ya ha respondido esto con el mínimo necesario para crear un script init, creo que también estaría bien servido con mirar /etc/init.d/skeleton y usarlo como una plantilla sobre la cual basar su script init . Usted terminará con un script mucho más coherente y legible.

Parece que el problema específico de Geo ya se ha resuelto, pero me encontré con un post similar al intentar configurar una aplicación de Rails con sidekiq como un service administrado. Voy a explicar mi solución aquí en caso de que ayuda a cualquier otros novatos como yo.

Estoy trabajando en una installation de CentOS, y chkconfig ya está configurado con varios otros services como httpd, mysql y networkingis. Tenga en count que la mayoría de los services solo deben estar habilitados en los niveles 3 ejecución 3 a 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 > networkingis-server 0:off 1:off 2:on 3:on 4:on 5:on 6:off > (etc...) 

Necesitaba agregar un nuevo script para el service sidekiq , así que agarré el script en https://gist.github.com/CD1212/5326706 , lo sidekiq para que se ajustara a los parameters de mi aplicación y lo /etc/rc.d/init.d/sidekiq en /etc/rc.d/init.d/sidekiq (propiedad de root como todos los demás scripts allí).

Sin embargo cuando intenté registrar este nuevo service, conseguí el error del chkconfig:

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

Después de leer un poco más , descubrí que los numbers de prioridad definidos en la parte superior de cada script chkconfig deben ser únicos. ¡Un post de error más claro habría sido agradable! Otro script tenía nivel de prioridad de apagado 75, así que cambié el mío a 76 y lo intenté de nuevo. Aquí está el jefe de mi script init:

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

Esta vez, sudo chkconfig --add sidekiq no se quejó. Entonces cuando funcioné sudo chkconfig --list sidekiq , el service de sidekiq fue demostrado como on para los runlevels apropiados.

Los numbers de prioridad no necesitan ser únicos. Sólo representan un order de services.

ls -l /etc/rc.d/rc3.d/*oracle lrwxrwxrwx 1 raíz raíz 16 Sep 16 12:28 /etc/rc.d/rc3.d/S99oracle -> ../init.d/oracle

ls -l /etc/rc.d/rc3.d/*it
lrwxrwxrwx 1 raíz raíz 12 Sep 16 12:36 /etc/rc.d/rc3.d/S99it -> ../init.d/it

Chkconfig no tuvo un problema añadiendo el service "it". De lo contrario, estaría limitado a 100 services.

También en mi ejemplo, se ejecutaría antes de oracle porque los scripts se ejecutan alfabéticamente.