Jak zdiagnozować błędy Upstart?

8

Mam plik conf Upstart w / etc / init, który zaczyna się dobrze, jeśli uruchomię go ręcznie w następujący sposób:

sudo initctl start myconf

Jeśli uruchomię go bez polecenia sudo, pojawi się błąd error name = (nieustawiony), który wynika z uprawnień użytkownika, ale nie powinno to stanowić problemu, gdy zadanie jest inicjowane podczas rozruchu systemu, gdy uruchamia się Upstart, prawda? (ponieważ to wszystko jest uruchamiane przez root).

Treść skryptu to:

start on runlevel [2345]
stop on runlevel [^2345]

exec /spatial/server_init.sh

... gdzie server_init.sh uruchamia serwer oparty na skrypcie Python. Kiedy sprawdzam status skryptu zaraz po zalogowaniu się do powłoki, mówi stop / czekam. Próbowałem też pliku conf z „start on net-device-up”, ale nic się nie zmienia. Czy istnieje sposób, aby wyświetlić dziennik systemu Upstart lub coś podobnego, co może pomóc mi w debugowaniu problemu.

Dzięki

U2ros
źródło
Czasami, jeśli masz chdirw skrypcie upstart i ten start: Job failed to start
katalog

Odpowiedzi:

13

Próbować:

/var/log/upstart/JOBNAME.log

Podczas debugowania warto rozważyć przekształcenie go w zadanie.

zacznij od startu przestrzennego

zadanie

exec /spatial/server_init.sh

następnie z konsoli:

initctl emituje start przestrzenny
status initctl start przestrzenny
ppetraki
źródło
Dam też szansę, dzięki. Zakładam, że w rzeczywistości powoduje to pojawienie się konkretnych problemów; czy zawiera również błędy składniowe w plikach conf?
U2ros,
W tym miejscu stdout / err jest przekierowywany, więc lepiej być pełnym.
ppetraki
1

Ok, znalazłem jeden sposób, ale działa tylko wtedy, gdy wystąpi błąd w programie wykonywanym przez skrypt (i jeśli ten program oczywiście zwraca komunikaty o błędach), nie sam Upstart, ale tego właśnie potrzebowałem w tym przypadku. To, co zrobiłem, to przekierowanie wyniku programu do pliku dziennika takiego jak ten:

exec /spatial/server_init.sh >> /spatial/ogc.log 2>&1

Jeśli chodzi o inne, odkryłem, że możesz zwiększyć gadatliwość Upstart, więc jeśli będę tego potrzebować, zacznę od tego.

U2ros
źródło
0
  1. Sprawdź, czy istnieje katalog upstart: / var / log / upstart (jeśli nie, utwórz katalog)
  2. Sprawdź swoją wersję upstart poprzez: initctl version lub apt-cache policy upstart

    Dla wszystkich wersji Upstart wcześniejszych niż 1.4 domyślną wartością konsoli była konsola brak . Od wersji Upstart 1.4 wartością domyślną jest dziennik konsoli .

  3. Dodaj dziennik konsoli do Ciebie na początku (przed fazą skryptu)
  4. Twój dziennik będzie dostępny na: /var/log/upstart/"upstart-JOBNAME".log

Przykład:

dziennik konsoli

scenariusz

exec /spatial/server_init.sh

koniec skryptu

Dziennik konsoli - Łączy standardowe wejście z / dev / null. Standardowe wyjście i standardowy błąd są podłączone do jednego końca pseudo-terminala, tak że każde wyjście zadania jest automatycznie logowane do pliku w katalogu / var / log / upstart / dla zadań systemowych i $ XDG_CACHE_HOME / upstart / (lub $ HOME /). cache / upstart / if $ XDG_CACHE_HOME nie jest ustawiony) dla zadań sesji.

Brak konsoli - łączy standardowe wejście, standardowe wyjście i standardowe deskryptory plików błędów zadania z / dev / null.

Aby uzyskać więcej informacji o konsoli, kliknij poniższy link:

http://upstart.ubuntu.com/cookbook/#console-log

zachlaniado
źródło