web-dev-qa-db-fra.com

La dernière tâche ne fonctionne qu'avec un démarrage / arrêt manuel

J'ai un très petit travail de démarrage dans /etc/init/tsm.conf pour démarrer le client de sauvegarde après le démarrage du réseau. Cela fonctionne juste bien si je le démarre/l’arrête manuellement via service tsm start|stop|status. Mais service tsm enable dit tsm: unrecognized service. Donc, il ne démarre pas automatiquement au démarrage. Sudo service --status-all ne l'affiche pas non plus dans la liste des tâches connues.

C'est ici:

start on started networking
stop on stopped networking

respawn

script
#!/bin/bash
dsmc schedule > /dev/null
end script

Je lance Ubuntu 12.04.4. La version Upstart est 1.5-0ubuntu7.2. Quelqu'un pourrait-il m'aider? :)

UPDATE

L'utilisation de initctl list et d'autres commandes initctl affiche mon travail.

3
Alexander

D'après mon expérience, vous n'avez rien à "activer", il suffit de mettre le fichier .conf dans/etc/init et de profiter de tout.

Vous pouvez vérifier que le script est exécuté en ajoutant une ligne comme celle-ci:

echo "alive" > /alive_and_well

Cela créera le fichier "alive_and_well" dans votre répertoire racine si le script est exécuté.

Si ce n'est pas le cas, le problème provient probablement de la strophe "start on". Voici ce que j'utilise pour de telles choses (connues pour fonctionner):

start on (local-filesystems and net-device-up IFACE!=lo)
stop on runlevel [!2345]

De plus, les shebangs dans les scripts Upstart ne sont pas pris en charge. "#!/Bin/bash" est donc inutile (autant que je sache).

3
Shnatsel

Jetez un coup d'œil aux autres travaux parus listés dans /etc/init.d/. Sur mon système, ils sont tous des liens symboliques vers /lib/init/upstart-job, ce qui permet à la commande service de fonctionner (je suis en train de lancer Saucy).

Essayez de créer le même lien symbolique si vous voulez que la commande service fonctionne.

Sinon, utilisez start, stop et restart directement.

0
Robie Basak

On dirait que le service est en cours d’exécution, mais vous ne voyez pas le comportement que vous attendez de lui. S'il doit être exécuté avec un certain utilisateur ou avec des variables d'environnement définies, vous devrez peut-être les spécifier. Assurez-vous que la commande dsmc est dans votre PATH ou changez le répertoire dans lequel il réside.

À partir du livre de recettes Upstart: http://upstart.ubuntu.com/cookbook/

Variables d'environnement: Upstart vous permet de définir des variables d'environnement qui seront accessibles aux travaux pour lesquels ils sont définis dans les fichiers de configuration de travaux. Les variables d'environnement sont définies à l'aide du mot-clé env.

env ENV_VAR=value

Définir l'ID de groupe: Modifications apportées au groupe avant l'exécution du processus du travail.

setgid <groupname>

Définir l'ID utilisateur: Modifications apportées à l'utilisateur avant l'exécution du processus du travail.

setuid <username>

Changer de répertoire: Exécute les processus du travail avec un répertoire de travail dans le répertoire spécifié à la place de la racine du système de fichiers.

chdir <directory>
0
thinkmassive