J'essaie d'ajouter au démarrage automatique à boottime un service linux via le
chkconfig -add <servicename>
et je reçois un message disant
service <servicename> does not support chkconfig
J'utilise Red Hat Enterprise 4. Le script que je tente d'ajouter au démarrage automatique à l'heure de démarrage est le suivant:
#!/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
Réponses:
Le script doit avoir 2 lignes:
par exemple:
Après avoir ajouté les en-têtes ci-dessus, vous pouvez exécuter
chkconfig --add <service>
.la source
Bien que katriel ait déjà répondu à cela avec le minimum nécessaire pour créer un script init, je pense que vous seriez également bien inspiré de regarder
/etc/init.d/skeleton
et d’utiliser cela comme modèle sur lequel baser votre script init. Vous vous retrouverez avec un script beaucoup plus cohérent et lisible.la source
/etc/init.d/skeleton
n'est pas présent sur les systèmes RHEL, uniquement sur Debian et les systèmes associés (Ubuntu, je pense).Il semble que le problème spécifique de Geo ait déjà été résolu, mais je suis tombé sur un message similaire en essayant de configurer une application Rails avec
sidekiq
un service géré. J'expliquerai ma solution ici au cas où cela aiderait un autre débutant comme moi.Je travaille sur une installation CentOS et chkconfig est déjà configuré avec plusieurs autres services tels que httpd, mysql et redis. Notez que la plupart des services ne doivent être activés sur les niveaux d' exécution à
3
travers5
.Je avais besoin d'ajouter un nouveau script pour le
sidekiq
service, alors je saisis le script à https://gist.github.com/CD1212/5326706 , modifié pour l' adapter à mes paramètres d'application, et l' avez sauvegardé à/etc/rc.d/init.d/sidekiq
(appartenant à root comme tous les autres scripts là-bas).Cependant, lorsque j'ai essayé d'enregistrer ce nouveau service, j'ai eu l'erreur chkconfig:
Après quelques lectures supplémentaires, j'ai découvert que les numéros de priorité définis en haut de chaque script chkconfig doivent être uniques. Un message d'erreur plus clair aurait été bien! Un autre script avait le niveau de priorité d’arrêt 75, alors j’ai changé le mien à 76 et j’ai réessayé. Voici la tête de mon script d'initialisation:
Cette fois,
sudo chkconfig --add sidekiq
n'a donné aucune plainte. Ensuite, lorsque j'ai exécuté la commandesudo chkconfig --list sidekiq
, le service sidekiq a été affiché commeon
pour les niveaux d' exécution appropriés.la source
Les numéros de priorité n'ont pas besoin d'être uniques. Ils ne représentent qu'une commande de services.
Chkconfig n'a pas eu de problème en ajoutant le service "it". Sinon, vous seriez limité à 100 services.
Dans mon exemple également, il serait exécuté avant oracle car les scripts sont exécutés par ordre alphabétique.
la source