Le service Upstart ne démarre ni ne s'arrête jamais complètement

11

J'essaie de créer un script simple pour le serveur TeamSpeak, mais je ne peux pas le faire fonctionner.

Quand je dis initctl start, il s'exécute mais ne se termine jamais ou n'émet même aucun message. Il en va de même pour l' arrêt .

Pour être sûr que je ne fais rien de mal, j'ai copié le script cron et essayé de l'exécuter, mais cela se produit de la même manière.

qu'est-ce que je fais mal ici?

MISE À JOUR:

voici mon script pour 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

J'ai essayé même avec le script le plus simple, et cela ne fonctionne pas non plus:

description     "regular background program processing daemon"

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

expect fork
respawn

exec echo example
console output

Merci de votre aide.

danizmax
la source
Vous voudrez peut-être montrer le travail parvenu que vous essayez d'exécuter afin que nous puissions le déboguer? Difficile de savoir pourquoi il pend sans le voir.
slangasek
J'ai copié le script cron et essayé de l'exécuter et cela se produit de la même manière, s'arrête et ne revient jamais dans le shell
danizmax
Nous avons encore besoin de voir votre script parvenu. Sans cela, nous ne pouvons rien faire. Veuillez le poster ou nous fournir un lien vers celui-ci.
hggdh
Sans voir le script, tout ce que je peux faire est de deviner: votre script tient-il à ce qu'il soit exécuté en tant que root par upstart? Le CHEMIN de Root est différent. Si votre script veut utiliser une application qui n'est pas dans le PATH de root, vous devez spécifier le chemin complet. Y a-t-il un prog dans votre script qui ne revient pas?
waltinator

Réponses:

1

il y a un certain nombre de bizarreries dans votre travail parvenu qui me font me gratter la tête.

1) emit n'est pas un programme que je connaisse, donc à moins que vous ne l'ayez ajouté au chemin système, cela cause probablement des erreurs. Voulez-vous dire 'echo'? Cela peut ne pas être utile non plus, car il ira à la console système qui peut ne pas être visible.

2) En supposant que la strophe `` emit '' fonctionne, vous dites `` attendez-vous à fork '', mais en fait, forkez deux fois . Une fois pour le «script», puis à nouveau lorsque le script teamspeak se bifurque en arrière-plan.

3) vous "su" d'exécuter le script, mais start-stop-daemon est en fait plus simple dans la plupart des cas:

Avec 11.10, vous n'avez pas besoin de faire le chdirscript in, je ne sais pas si cela a été ajouté après la version de upstart que vous avez. Vérifiez man 5 initle motchdir

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

De plus, des erreurs seront probablement signalées dans / var / log / syslog. Vous pouvez augmenter considérablement le niveau d'erreur en exécutant

initctl log-priority info

man initctl pour plus de niveaux de journal.

SpamapS
la source
Pas l'OP, mais il utilise (danimaz) su pour exécuter le serveur en tant qu'utilisateur, pas pour devenir root.
Javier Rivera
Hah doh, a raté la barre de défilement en bas .. parfaitement aligné pour cacher le nom d'utilisateur. :-P
SpamapS