Der Upstart-Dienst wird nie vollständig gestartet oder gestoppt

11

Ich versuche, ein einfaches Startskript für den Teamspeak-Server zu erstellen, kann es aber nicht zum Laufen bringen.

Wenn ich initctl start sage, wird es nur ausgeführt, aber nie beendet oder gibt sogar eine Nachricht aus. Gleiches passiert für Stop .

Um sicherzugehen, dass ich nichts falsch mache, habe ich das Cron-Skript kopiert und versucht, es auszuführen, aber es passiert genauso.

Was mache ich hier falsch?

AKTUALISIEREN:

Hier ist mein Skript für TS3:

# myservice - myservice job file
description "my service description"
author "Me <[email protected]>"

# Stanzas
#
# Stanzas control when and how a process is started and stopped
# See a list of stanzas here: http://upstart.ubuntu.com/wiki/Stanzas#respawn

# When to start the service
start on runlevel [2345]

# When to stop the service
stop on runlevel [016]

# Automatically restart process if crashed
respawn

# Essentially lets upstart know the process will detach itself to the background
expect fork

# Start the process
script
       emit going into TS3 dir
       chdir /home/danizmax/teamspeak3-server_linux-x86/
       emit starting TS3
       exec su -c "/home/danizmax/teamspeak3-server_linux-x86/ts3server_startscript.sh start" danizmax &
       emit done
end script

Ich habe es sogar mit dem einfachsten Skript versucht, und das funktioniert auch nicht:

description     "regular background program processing daemon"

start on runlevel [2345]
stop on runlevel [!2345]

expect fork
respawn

exec echo example
console output

Danke für deine Hilfe.

danizmax
quelle
Vielleicht möchten Sie den Startjob anzeigen, den Sie ausführen möchten, damit wir ihn debuggen können? Schwer zu wissen, warum es hängt, ohne es zu sehen.
Slangasek
Ich habe das Cron-Skript kopiert und versucht, es auszuführen, und es passiert genauso, hört einfach auf und kehrt nie mehr zur Shell zurück
danizmax
Wir müssen noch Ihr Startskript sehen. Ohne sie können wir nichts tun. Bitte posten Sie es oder geben Sie uns einen Link dazu.
hggdh
Ohne das Skript zu sehen, kann ich nur raten: Interessiert es Ihr Skript, dass es von Anfang an als root ausgeführt wird? Roots PFAD ist anders. Wenn Ihr Skript eine Anwendung verwenden möchte, die nicht im Root-Pfad enthalten ist, müssen Sie den vollständigen Pfad angeben. Gibt es einen Prog in Ihrem Skript, der nicht zurückkehrt?
Walzer

Antworten:

1

Es gibt eine Reihe von Kuriositäten in Ihrem Emporkömmling, die mich am Kopf kratzen lassen.

1) emit ist kein mir bekanntes Programm. Wenn Sie es also nicht zum Systempfad hinzugefügt haben, verursacht dies wahrscheinlich Fehler. Meinten Sie "Echo"? Dies ist möglicherweise auch nicht hilfreich, da es zur Systemkonsole geht, die möglicherweise nicht sichtbar ist.

2) Angenommen, die Zeilengruppe 'emit' funktioniert, sagen Sie 'Fork Fork', aber dann tatsächlich zweimal . Einmal für das 'Skript' und dann wieder, wenn sich das Teamspeak-Skript selbst in den Hintergrund stellt.

3) Sie "su", um das Skript auszuführen, aber Start-Stopp-Daemon ist in den meisten Fällen tatsächlich einfacher:

Mit 11.10 müssen Sie das chdirIn-Skript nicht mehr ausführen. Sie sind sich nicht sicher, ob dies nach einer beliebigen Version des Upstarts hinzugefügt wurde. Suchen Sie man 5 initnach dem Wortchdir

start on runlevel [2345]
stop on runlevel [^2345]

respawn

chdir /home/danizmax/teamspeak-server
expect fork

exec start-stop-daemon --start --user danizmax --group danizmax --exec /home/danizmax/teamspeak3-server_linux-x86/ts3server_startscript.sh -- start

Außerdem werden Fehler wahrscheinlich in / var / log / syslog gemeldet. Sie können die Fehlerquote durch Ausführen erheblich erhöhen

initctl log-priority info

man initctl für mehr Protokollebenen.

SpamapS
quelle
Nicht das OP, aber er benutzt (danimaz) su, um den Server als seinen Benutzer auszuführen, nicht um root zu werden.
Javier Rivera
Hah doh, habe die Bildlaufleiste unten verpasst. Perfekt ausgerichtet, um den Benutzernamen auszublenden. :-P
SpamapS