Comment exécuter un script automatiquement au démarrage du système dans Centos


8

J'ai installé avec succès TeamCity ib CentOS 6.2 Minimal. Je suis coincé à essayer d'exécuter un script automatiquement au démarrage du système:

/opt/TeamCity/bin/teamcity-server.sh start

J'ai parcouru Google et essayé différentes méthodes qui semblent toutes échouer. La plupart des méthodes indiquent l'ajout du script de démarrage à l'un des fichiers rc.local:

/etc/rc.d/rc.local
/etc/rc.local

Et le contenu de rc.local contient la ligne:

/opt/TeamCity/bin/teamcity-server.sh start

Aucun ne démarrera le serveur Teamcity

Il n'y a aucun problème si j'exécute le script manuellement.

Cela semble simple, mais comment puis-je exécuter automatiquement un script shell?


1
Vous devrez décrire ce que vous entendez par «aucune de ces méthodes». Parce que sans cela, tout le monde devine. Peut-être décrire plus en détail ce que vous avez fait et quels messages ou événements de sortie ou d'échec se sont produits?
— EightBitTony

c'est le bon endroit pour le mettre, il semble donc que quelque chose ne soit pas casher avec l'entrée /etc/rc.d/rc.local ou avec le script lui-même. Êtes-vous en mesure de publier le contenu du script et le rc.local? En outre, le script shell teamcity-server.sh s'exécute-t-il lorsque vous le faites manuellement?
— Quinn Murphy

Oui, le serveur teamcity fonctionne correctement manuellement. Mais ce n'est pas pratique de le faire à chaque redémarrage du serveur ...
— atp03

Le faire fonctionner manuellement mais pas via rc.local implique des différences environnementales. Quel est ton CHEMIN? D'autres variables env?
— cjc

@cjc Je ne sais pas ce que vous entendez par 'PATH' - Cependant, si je lance manuellement /etc/rc.d/rc.local, le serveur teamcity peut également démarrer correctement. Cela fait-il encore une différence?
— atp03

Réponses:


15

Si le script de démarrage de teamcity est un script d'initialisation compatible LSB (c'est-à-dire s'il fournit des arguments de démarrage , d' arrêt et autres ), vous pouvez simplement copier le script dans un /etc/init.ddossier et l'exécuter (en tant que root):

# chkconfig --add <script_name>
# chkconfig <script_name> on

Un lien symbolique pour le fichier devrait également être OK. Essayez donc (en tant que root):

# ln -s /opt/TeamCity/bin/teamcity-server.sh /etc/init.d/teamcity-server
# chkconfig --add teamcity-server
# chkconfig teamcity-server on

S'il ne démarre pas à l'initialisation, mais démarre manuellement sans problème, vous devez vérifier:

  1. autorisations (peut-être que le programme ne peut pas être exécuté en tant que root. Essayez de vous connecter en tant que root et exécutez-le), et;
  2. votre CHEMIN (peut-être que le script a besoin de quelque chose mais il ne sait pas où il se trouve).

Pour imprimer le contenu de votre PATH, lancez simplement:

echo $PATH

Pour vérifier si la raison pour laquelle le script ne démarre pas est le CHEMIN, essayez:

$ cd /
$ PATH= /opt/TeamCity/bin/teamcity-server.sh

Cette commande effacera temporairement votre PATH et exécutera la commande. Si la commande a besoin d'informations spécifiques sur le PATH, elle échouera (veillez à exécuter exactement comme indiqué ci-dessus, IL Y A UN ESPACE entre PATH = et le reste de la commande).


6

dans la commande Fedora 17

# chkconfig --add teamcity-server

dire: le service teamcity-server ne prend pas en charge chkconfig, vous devez ajouter un en-tête comme:

#! /bin/bash
# chkconfig: - 10 90

seulement après cette première exécution de la commande.


2
Et assurez-vous que votre script se trouve dans /etc/init.d/:-)
— Bart De Vos

2

Lorsque le script est exécuté manuellement, il fonctionne correctement. Mais, lorsqu'il est exécuté automatiquement, cela ne fonctionne pas.

J'ai trouvé le coupable: TeamCity fonctionne sous l'utilisateur teamcity. Il doit être présent dans le /etc/sudoersfichier et vous devez ajouter, en utilisant visudoune ligne comme celle-ci:

Defaults:teamcity !requiretty
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.