So führen Sie ein Skript beim Systemstart automatisch in Centos aus

8

Ich habe TeamCity ib CentOS 6.2 Minimal erfolgreich installiert. Ich versuche nicht, ein Skript beim Systemstart automatisch auszuführen:

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

Ich habe herumgegoogelt und verschiedene Methoden ausprobiert, die alle zu scheitern scheinen. Die meisten Methoden verweisen auf das Hinzufügen des Startskripts zu einer der rc.local-Dateien:

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

Und der Inhalt von rc.local enthält die Zeile:

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

Keiner davon startet den Teamcity-Server

Es gibt keine Probleme, wenn ich das Skript manuell ausführe.

Scheint einfach, aber wie bekomme ich ein Shell-Skript zum automatischen Ausführen?

atp03
quelle
1
Sie müssen beschreiben, was Sie unter "keines davon funktioniert" verstehen. Denn ohne sie raten alle. Beschreiben Sie möglicherweise genauer, was Sie getan haben und welche Ausgabe- oder Fehlermeldungen oder Ereignisse aufgetreten sind.
EightBitTony
Das ist der richtige Ort, um es auszudrücken. Es scheint also, dass etwas mit dem Eintrag /etc/rc.d/rc.local oder mit dem Skript selbst nicht koscher ist. Können Sie den Inhalt des Skripts und des rc.local veröffentlichen? Wird das Shell-Skript teamcity-server.sh auch ausgeführt, wenn Sie es manuell ausführen?
Quinn Murphy
Ja, der Teamcity-Server läuft manuell einwandfrei. Aber es ist nicht praktisch, dies jedes Mal zu tun, wenn der Server neu gestartet wird ...
atp03
Das manuelle Ausführen, jedoch nicht über rc.local, impliziert Umgebungsunterschiede. Was ist dein WEG? Irgendwelche anderen env-Variablen?
cjc
@cjc Ich bin mir nicht sicher, was du mit 'PATH' meinst. Wenn ich jedoch /etc/rc.d/rc.local manuell starte, kann der Teamcity-Server auch gut starten. Macht das noch einen Unterschied?
atp03

Antworten:

15

Wenn das Teamcity-Startskript ein LSB-kompatibles Init-Skript ist ( dh wenn es Start- , Stopp- und andere Argumente enthält ), können Sie das Skript einfach in den /etc/init.dOrdner kopieren und ausführen (als Root):

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

Ein symbolischer Link für die Datei sollte ebenfalls in Ordnung sein. Also versuchen Sie (als root):

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

Wenn es nicht bei der Initialisierung startet, sondern ohne Probleme manuell startet, sollten Sie Folgendes überprüfen:

  1. Berechtigungen (möglicherweise kann das Programm nicht als root ausgeführt werden. Versuchen Sie, sich als root anzumelden und auszuführen) und;
  2. Ihr PFAD (vielleicht braucht das Skript etwas, aber es weiß nicht, wo es ist).

Um den Inhalt Ihres Pfads zu drucken, führen Sie einfach Folgendes aus:

echo $PATH

Versuchen Sie Folgendes, um zu überprüfen, ob der Grund dafür, dass das Skript nicht gestartet wird, der Pfad ist:

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

Dieser Befehl löscht vorübergehend Ihren PFAD und führt den Befehl aus. Wenn der Befehl bestimmte Informationen zum PATH benötigt, schlägt er fehl (achten Sie darauf, dass er genau wie oben angegeben ausgeführt wird. Zwischen PATH = und dem Rest des Befehls befindet sich ein Leerzeichen ).

Diego Queiroz
quelle
6

in Fedora 17 Befehl

# chkconfig --add teamcity-server

say: service teamcity-server unterstützt chkconfig nicht du solltest einen header hinzufügen wie:

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

Erst danach den ersten Befehl ausführen.

burtsevyg
quelle
2
Und stellen Sie sicher, dass sich Ihr Skript in befindet /etc/init.d/:-)
Bart De Vos
2

Wenn das Skript manuell ausgeführt wird, funktioniert es ordnungsgemäß. Aber wenn es automatisch ausgeführt wird, funktioniert es nicht.

Ich habe den Schuldigen gefunden: TeamCity läuft unter dem Benutzer teamcity. Es muss in der /etc/sudoersDatei vorhanden sein und Sie sollten mit visudoeiner Zeile wie der folgenden hinzufügen :

Defaults:teamcity !requiretty
Kupolua
quelle