Upstart ne voit pas mon nouveau script

27

J'ai ajouté un nouveau script à /etc/init/called minecraft.confqui contient le script:

start on startup
stop on shutdown
respawn
respawn limit 20 5

script
  export HOME="/root"
  exec /root/minecraft/start.sh 2>&1 >> /var/log/minecraft.log
end script

post-start script
   echo "minecraft started"

Lorsque j'essaye, start minecraftj'obtiens l'erreur:start: Unknown job: minecraft

J'ai essayé de courir initctl listet mon travail minecraft n'est pas répertorié. J'ai essayé de courir initctl reload-configurationet ça ne fait aucune différence.

Les autres travaux répertoriés par initctl listfonctionnent correctement avec démarrage, arrêt et redémarrage.

Pourquoi pas parvenu à voir mon nouveau script?

Jasarien
la source
Cela pourrait être une question stupide mais ... ne devrait pas être votre script /etc/init.d/?
Wolfer
@snow merci, mais je l'ai déjà lu et j'ai toujours le problème.
Jasarien
@Wolfer selon le guide de mise en route upstart, il dit: "Une fois satisfait, placez les fichiers /etc/initet maintenant vous êtes prêt à redémarrer et à utiliser upstart."
Jasarien
J'ai essayé de reproduire le problème mais sans succès. J'ai copié collé votre code dans /etc/init/minecraft.conf et émis sudo start minecraftsans problème. Voici le contenu du fichier journal ~$ sudo cat /var/log/upstart/minecraft.log minecraft started /proc/self/fd/9: 3: exec: /root/minecraft/start.sh: not found minecraft startedPouvez-vous fournir plus de détails sur la version d'Ubuntu que vous utilisez et des informations utiles de syslog?
Goran Miskovic

Réponses:

12

Vérifiez les journaux de démarrage (c'est le cas /var/log/syslog) lors du rechargement de la configuration à l'aide de initctl reload-configuration. S'il y a une erreur de syntaxe, elle apparaîtra là-bas. C'est généralement pourquoi vous ne pouvez pas utiliser votre nouvelle configuration parvenu.

rcomblen
la source
11

Un moyen simple de vérifier la syntaxe de votre script consiste à utiliser la commande suivante:

init-checkconf -d /etc/init/service_name.conf

J'ai trouvé que même avec un fichier Upstart valide si le fichier n'existait pas lors du dernier démarrage du serveur, je dois redémarrer le serveur pour qu'Uststart puisse voir le fichier.

Mike Bethany
la source
9

Je me sens un peu stupide ... Mais le voici:

J'ai raté la strophe "End Script" à la toute fin du script upstart ...

post-start script
   echo "minecraft started"

aurait du être

post-start script
   echo "minecraft started"
end script

Je ne sais pas pourquoi cela a fonctionné pour @schkovich sans le end script, cependant ...

Jasarien
la source
2
Parce que j'ai ajouté une strophe de script de fin. Complétez le code automatique (esprit). :(
Goran Miskovic
J'ai rencontré le même problème mais de manière exaspérante, rien n'apparaît dans / var / log et initctl reload-configuration --verbose est silencieux.
Neil McGill
4

Dans mon cas, c'était un authorchamp vide , comme ceci:

author ""

Cela n'a fonctionné qu'après avoir ajouté quelque chose dans les guillemets.

# initctl reload-configuration

jetait également /etc/init/servicename.conf:2: Expected token à syslog au lieu de stdout . Trop occupé pour déposer un rapport de bogue pour un paquet mourant.

int_ua
la source
3

Peut-être pas applicable spécifiquement à cela, mais mérite d'être mentionné: Si vous modifiez un fichier de configuration Upstart pour un service en cours d'exécution, l'exécution restartne recharge PAS la configuration. Vous devez exécuter stopet startpour que les nouveaux changements prennent effet.

http://upstart.ubuntu.com/cookbook/#restart

kristi
la source