Le script Upstart ne démarre pas

33

Ubuntu 10.04

J'ai créé ce script ( /etc/init/pure-ftpd.conf ):

# pure-ftpd - FTP server

description "Pure-FTPd server"

start on filesystem
stop on runlevel S

respawn
respawn limit 10 5
pid file /var/run/pure-ftpd.pid
console output

pre-start script
    test -x /usr/local/sbin/pure-ftpd || { stop; exit 0; }
end script

exec /usr/local/sbin/pure-ftpd --maxclientsnumber 2 --maxclientsperip 10 --prohibitdotfileswrite --prohibitdotfilesread --noanonymous --chrooteveryone --dontresolve --nochmod --pidfile /var/run/pure-ftpd.pid

Mais ...

# start pure-ftpd
start: Unknown job: pure-ftpd

et

# service pure-ftpd start
start: Unknown job: pure-ftpd


Quel est le problème?
Est-il nécessaire de faire quelque chose de plus?
Est-il nécessaire de créer un script dans /etc/init.d aussi?

    
posée Juan Simón 17.03.2011 - 17:22
la source

6 réponses

24

Cela signifie généralement que vous avez une erreur dans le fichier .conf - par exemple, je ne suis pas sûr que la strophe pid soit prise en charge dans 10.04, stop ne peut pas être utilisé dans le script, etc.

J'essaierais de démarrer le fichier à partir de zéro (avec seulement start , stop etc), puis de le construire lentement en ajoutant de plus en plus de lignes et en le testant via start pure-ftpd .

Par exemple:

# cat pure-ftpd.conf 
start on filesystem
stop on runlevel S

respawn
respawn limit 10 5

# start pure-ftpd
pure-ftpd start/running

# cat pure-ftpd.conf 
start on filesystem
stop on runlevel S

respawn
respawn limit 10 5
pid file /var/run/pure-ftpd.pid

# start pure-ftpd
start: Unknown job: pure-ftpd
    
réponse donnée arrange 17.03.2011 - 18:44
la source
46

Vous pouvez également exécuter init-checkconf pour vérifier la syntaxe

init-checkconf /etc/init/job.conf
File /etc/init/job.conf: syntax ok
    
réponse donnée Stefano Gargiulo 13.03.2013 - 02:34
la source
26

Tout d’abord, vous pouvez vérifier que votre travail est bien connu pour démarrer:

sudo initctl list | grep your_job_name

... où your_job_name est le nom de votre script de démarrage moins l'extension .conf .

Si elle n’est pas trouvée, vous pouvez essayer de recharger la configuration puis de vérifier à nouveau:

sudo initctl reload-configuration

# re-check
sudo initctl list | grep your_job_name

Ensuite, essayez à nouveau de démarrer votre travail:

sudo start your_job_name

Si vous n'obteniez aucune connexion dans /var/log/daemon.log ou /var/log/syslog auparavant, vous pourriez en avoir maintenant.

    
réponse donnée Mark Stosberg 06.05.2013 - 20:25
la source
6

La référence la plus pertinente pour la syntaxe du fichier de travail sera disponible lorsque vous exécuterez la commande:

man 5 init

sur votre système. Pour Ubuntu 10.04, comme vous l’avez constaté dans la réponse précédente, la syntaxe du fichier pid est incorrecte.

Chaque fois que vous obtenez cette erreur "job inconnu", c'est une bonne idée de vérifier les journaux (avant 11.04, /var/log/daemon.log, 11.04 et plus tout va dans / var / log / syslog)

Vous pouvez voir une erreur comme celle-ci:

init: /etc/init/test.conf:2: Unknown stanza
    
réponse donnée SpamapS 28.03.2011 - 20:10
la source
3

Quoi qu’il en soit, je suis ici parce que j’ai eu le même problème, mais ma syntaxe était correcte à 100%.

Après un débogage, j'ai découvert un autre problème qui peut provoquer cette erreur "Travail inconnu" :

upstarts utilise inotify pour surveiller les modifications de fichiers .conf et les travaux d’installation automatique, ce qui est très intéressant (pour cela, vous n’avez pas besoin de quelque chose comme la mise à jour). rc with upstart!) mais peut ne pas être parfait si vous (comme moi dans ce cas) utilisez un programme d'interface utilisateur FTP / SCP pour télécharger et éditer des configurations sur des serveurs distants, le travail peut être désinstallé déposer de cette manière.

pour réparer, faites simplement ça (qui m'a sauvé)

touch /etc/init/*

il va générer des événements inotify pour rafraîchir tous les confits d’arrivée.

    
réponse donnée Stefano Gargiulo 13.03.2013 - 02:48
la source
2

J'ai eu le même problème avec mes conteneurs Ubuntu 14.04 Docker. Il se trouve que l'image Ubuntu 14.04 (sinon d'autres) de Docker ne prend pas en charge Upstart comme le ferait une machine virtuelle complète.

Pour répondre à cette question, pourquoi le service ne démarre pas, c'est parce que initctl n'est pas un programme Upstart réel: il est mappé sur / bin / true.

Pour vérifier, exécutez les opérations suivantes sur un conteneur Docker Ubuntu 14.04 par rapport à une gouttelette Vagrant et vs. une DigitalOcean

$ ls -al /sbin/initctl

Vous verrez que initctl n'est pas la même chose dans Docker et les autres.

Un lien qui peut vous aider à mieux comprendre .. lien

    
réponse donnée Johnathan J. 28.09.2014 - 17:47
la source

Lire d'autres questions sur les étiquettes