Ubuntu 10.04
Ich habe dieses Upstart-Skript ( /etc/init/pure-ftpd.conf ) erstellt:
# 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
Aber...
# start pure-ftpd
start: Unknown job: pure-ftpd
und
# service pure-ftpd start
start: Unknown job: pure-ftpd
Was ist das Problem?
Muss man noch etwas tun?
Muss in /etc/init.d auch ein Skript erstellt werden?
Antworten:
Normalerweise bedeutet dies, dass Sie einen Fehler in der
.conf
Datei haben - zum Beispiel bin ich nicht sicher, ob diepid
Zeilengruppe in 10.04 unterstützt wird,stop
nicht im Skript verwendet werden kann usw.Ich würde versuchen, die Datei von Grund auf neu zu starten (nur
start
mitstop
usw.) und sie dann langsam aufzubauen, indem ich mehr und mehr Zeilen hinzufüge und sie über testestart pure-ftpd
.Beispielsweise:
quelle
pid
Zeilengruppe wurden seit der Version entfernt0.5.0 2008-08-12 "One of those deaf-mutes"
. Benutze es nicht.Sie können auch ausführen
init-checkconf
, um die Syntax zu überprüfenquelle
start
Befehl eingebaut werden, damit Sie eine aussagekräftigere Fehlermeldung erhalten ...Zunächst können Sie überprüfen, ob bekannt ist, dass der Start Ihres Jobs tatsächlich erfolgt:
... wo
your_job_name
ist der Name Ihres Upstart-Skripts abzüglich der.conf
Erweiterung.Wenn es nicht gefunden wird, können Sie versuchen, die Konfiguration neu zu laden und dann erneut zu überprüfen:
Versuchen Sie dann erneut, Ihren Job zu starten:
Wenn Sie wurden keine Protokollierung immer in
/var/log/daemon.log
oder/var/log/syslog
vor, könnten Sie einige jetzt haben.quelle
Die relevanteste Referenz für die Jobdateisyntax ist verfügbar, wenn Sie den Befehl ausführen:
auf Ihrem System. Für Ubuntu 10.04 ist, wie Sie in der vorherigen Antwort festgestellt haben, die Syntax der PID-Datei falsch.
Jedes Mal, wenn Sie diesen "unbekannten Job" -Fehler zurückerhalten, ist es eine gute Idee, die Protokolle zu überprüfen (vor 11.04, /var/log/daemon.log, 11.04 und höher, alles in / var / log / syslog).
Möglicherweise sehen Sie einen Fehler wie diesen:
quelle
Wie auch immer, ich bin hier, weil ich das gleiche Problem hatte, aber meine Syntax war 100% korrekt.
Nach einigem Debuggen habe ich ein anderes Problem entdeckt, das diesen Fehler "Unbekannter Job" verursachen kann:
upstarts verwendet inotify , um Änderungen an der .conf-Datei zu überwachen und Jobs automatisch zu installieren. Dies ist sehr cool (dafür brauchen Sie nicht so etwas wie update.rc mit upstart!) , kann aber nicht perfekt sein, wenn Sie (wie ich in diesem Fall) verwenden In einigen FTP / SCP-GUI-Programmen zum Hochladen und Bearbeiten von Konfigurationen auf Remote-Servern kann der Job unbeaufsichtigt von upstart deinstalliert werden, wenn Sie die Datei auf diese Weise bearbeiten.
einfach das machen (das hat mich gerettet)
Es werden Inotify-Ereignisse generiert, um alle Upstart-Confs zu aktualisieren.
quelle
Ich hatte das gleiche Problem in meinen Ubuntu 14.04 Docker Containern. Wie sich herausstellt, unterstützt das Ubuntu 14.04-Image (wenn nicht andere) für Docker Upstart nicht so wie eine vollständige virtuelle Maschine.
Um diese Frage zu beantworten, warum der Dienst nicht startet, liegt es daran, dass initctl kein tatsächliches Upstart-Programm ist: Es ist / bin / true zugeordnet.
Führen Sie zur Überprüfung die folgenden Schritte auf einem Ubuntu 14.04 Docker-Container gegen Vagrant und gegen ein DigitalOcean-Droplet aus
Sie werden feststellen, dass initctl in Docker nicht dasselbe ist wie in den anderen.
Ein Link, der Ihr Verständnis fördern kann. Https://github.com/docker/docker/issues/1024
quelle