Ubuntu 10.04
Utworzyłem ten skrypt wstępny ( /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
Ale...
# start pure-ftpd
start: Unknown job: pure-ftpd
i
# service pure-ftpd start
start: Unknown job: pure-ftpd
Jaki jest problem?
Czy trzeba zrobić coś więcej?
Czy konieczne jest również utworzenie jednego skryptu w /etc/init.d?
Odpowiedzi:
Zwykle oznacza to błąd w
.conf
pliku - na przykład nie jestem pewien, czypid
sekcja jest obsługiwana w 10.04,stop
nie można jej użyć w skrypcie itp.Chciałbym spróbować uruchomić plik od podstaw (z tylko
start
,stop
etc), a następnie powoli budując go poprzez dodawanie coraz więcej linii i sprawdzając je za pomocąstart pure-ftpd
.Na przykład:
źródło
pid
zwrotka została usunięta od wersji0.5.0 2008-08-12 "One of those deaf-mutes"
. Nie używaj tego.Możesz także uruchomić,
init-checkconf
aby sprawdzić składnięźródło
start
komendę, aby wyświetlał bardziej pouczający komunikat o błędzie ...Po pierwsze, możesz sprawdzić, czy Twoja praca jest rzeczywiście znana:
... gdzie
your_job_name
jest nazwa twojego skryptu początkowego minus.conf
rozszerzenie.Jeśli nie zostanie znaleziony, możesz spróbować ponownie załadować konfigurację, a następnie ponownie sprawdzić:
Następnie spróbuj ponownie, aby rozpocząć pracę:
Jeśli nie dostawali żadnego rejestrowania się
/var/log/daemon.log
lub/var/log/syslog
wcześniej, może mieć pewne teraz.źródło
Najbardziej odpowiednie odniesienie do składni pliku zadania będzie dostępne po uruchomieniu polecenia:
w twoim systemie. W przypadku Ubuntu 10.04, jak stwierdzono w poprzedniej odpowiedzi, składnia pliku pid jest nieprawidłowa.
Za każdym razem, gdy pojawia się błąd „nieznane zadanie”, warto sprawdzić dzienniki (przed 11.04, /var/log/daemon.log, 11.04 i więcej, wszystko jest w / var / log / syslog)
Może pojawić się taki błąd:
źródło
W każdym razie jestem tutaj, ponieważ miałem ten sam problem, ale moja składnia była w 100% poprawna.
Po debugowaniu odkryłem inny problem, który może powodować błąd „Nieznane zadanie” :
upstarts używa inotify do monitorowania zmian plików .conf i zadań automatycznej instalacji, jest to bardzo fajne (do tego nie potrzebujesz czegoś takiego jak update.rc z upstart!), ale może nie być idealne, jeśli (podobnie jak ja w tym przypadku) używasz niektóre programy GUI FTP / SCP do wysyłania i edytowania konfiguracji na zdalnych serwerach, zadanie może zostać dyskretnie odinstalowane przez upstart podczas edycji pliku w ten sposób.
naprawić po prostu zrób to (to mnie uratowało)
wygeneruje zdarzenia inotify, aby odświeżyć wszystkie początkowe konf.
źródło
Miałem ten sam problem w moich kontenerach Docker Ubuntu 14.04. Jak się okazuje, obraz Ubuntu 14.04 (jeśli nie inne) dla Dockera nie obsługuje Upstart w taki sam sposób jak pełna maszyna wirtualna.
Aby odpowiedzieć na to pytanie, dlaczego usługa się nie uruchamia, to dlatego, że initctl nie jest rzeczywistym programem Upstart: jest odwzorowany na / bin / true.
Aby zweryfikować, uruchom następujące czynności na kontenerze Ubuntu 14.04 vs. Vagrant i na kropli DigitalOcean
Zobaczysz, że initctl nie jest taki sam w Docker vs.
Link, który może pomóc Ci zrozumieć. https://github.com/docker/docker/issues/1024
źródło