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?

atp03
la source
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).

Diego Queiroz
la source
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.

burtsevyg
la source
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
kupolua
la source