Upstart nie widzi mojego nowego skryptu

27

Dodałem nowy skrypt do /etc/init/wywołania, minecraft.confktóry zawiera skrypt:

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"

Kiedy próbuję start minecraft, pojawia się błąd:start: Unknown job: minecraft

Próbowałem uruchomić initctl listi mojej pracy w Minecraft nie ma na liście. Próbowałem biegać initctl reload-configurationi nie robi to żadnej różnicy.

Inne zadania wymienione według initctl listpracy działają poprawnie z uruchomieniem, zatrzymaniem i ponownym uruchomieniem.

Dlaczego nowy użytkownik nie zobaczy mojego nowego skryptu?

Jasarien
źródło
To może być głupie pytanie, ale ... nie powinien być twoim scenariuszem /etc/init.d/?
Wolfer
@ dziękuję, ale już to przeczytałem i nadal mam problem.
Jasarien
@Wolfer zgodnie z przewodnikiem dla początkujących mówi: „Kiedy /etc/initbędziesz zadowolony, umieść pliki, a teraz możesz zrestartować się i użyć upstart”.
Jasarien
Próbowałem odtworzyć problem, ale bez powodzenia. Skopiowałem twój kod do /etc/init/minecraft.conf i wydałem sudo start minecraftbez problemu. Oto treść pliku dziennika. ~$ sudo cat /var/log/upstart/minecraft.log minecraft started /proc/self/fd/9: 3: exec: /root/minecraft/start.sh: not found minecraft startedCzy możesz podać więcej szczegółów na temat używanej wersji Ubuntu i jakieś przydatne informacje z syslog?
Goran Miskovic

Odpowiedzi:

12

Sprawdź dzienniki upstart (jest w /var/log/syslog) podczas przeładowywania konfiguracji za pomocą initctl reload-configuration. Jeśli wystąpi błąd składniowy, pojawi się tam. Zwykle dlatego nie można użyć nowej konfiguracji upstart.

rcomblen
źródło
11

Prostym sposobem sprawdzenia składni skryptu jest użycie następującego polecenia:

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

Znalazłem, że nawet przy prawidłowym pliku Upstart, jeśli plik nie istniał podczas ostatniego uruchamiania serwera, muszę ponownie uruchomić serwer, aby Upstart mógł zobaczyć plik.

Mike Bethany
źródło
9

Czuję się trochę głupio ... Ale oto:

Brakowało mi zwrotki „end script” od samego końca skryptu upstart ...

post-start script
   echo "minecraft started"

powinien był być

post-start script
   echo "minecraft started"
end script

Nie jestem pewien, dlaczego zadziałało dla @schkovich bez end script...

Jasarien
źródło
2
Ponieważ dodałem sekcję końcowego skryptu. Wbudowane (automatyczne) uzupełnianie kodu. :(
Goran Miskovic
Natrafiłem na ten sam problem, ale irytujące, nic nie pojawia się w / var / log i initctl reload-configuration --verbose milczy.
Neil McGill,
4

W moim przypadku było to puste authorpole, takie jak to:

author ""

Działało to dopiero po dodaniu czegoś do cytatów.

# initctl reload-configuration

rzucał także /etc/init/servicename.conf:2: Expected token do syslog zamiast stdout . Zbyt zajęty, aby złożyć raport o błędzie dla umierającej paczki.

int_ua
źródło
3

Być może nie dotyczy to konkretnie, ale warto wspomnieć: Jeśli edytujesz plik konfiguracyjny Upstart dla uruchomionej usługi, uruchomienie restartNIE spowoduje ponownego załadowania konfiguracji. Musisz uruchomić stopi startwprowadzić nowe zmiany w życie.

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

Kristi
źródło