Jak debugować pracę upstart?


10

Mam następującą pracę w /etc/init/collector:

start on runlevel [2345]
stop on runlevel [!2345]

expect daemon

exec /usr/bin/twistd -y /path/to/my/tac/file

Kiedy zaczynam pracę sudo service collector start, zawiesza się. Jeśli ctrl-ci biegnę initctl list, widzę to:

collector start/killed, process 616

Nie widzę instancji twistddemona w ps, a serwer HTTP, który powinien zapewniać, nie istnieje.

Próbowałem nawet tego bez „oczekiwanego demona” iz prostym wywołaniem do jednowierszowego skryptu bash przy użyciu scriptzwrotki, i nadal nie działa. Myślę, że robię coś bardzo złego. Co to mogło być?


Brak odpowiedzi, ale mam problem z podobnym problemem. Może to być nawet błąd w programie Upstart: bugs.launchpad.net/ubuntu/+source/upstart/+bug/438313 Nie wiem, jak wyjść z tego stanu zawieszenia poza restartem. Uważam też, że ma to związek z expect daemonlinią.
zaszkodzi

Odpowiedzi:


14

Można przekierować stdouti stderrcałej skorupy przy użyciu scriptpragma (zamiast exec) w połączeniu z exec >FILE 2>&1, tak jak poniżej:

script
    exec >/path/to/some_log_file 2>&1
    exec your_command_here
end script

Powinno to dać lepszy wgląd w to, co się dzieje. Uznałem to za przydatne do wychwytywania różnego rodzaju problemów w moich skryptach upstart. Państwo może rura Twój polecenia użytkownika stdout/ stderrbezpośrednio, ale będziesz przegapić błędów pochodzących z powłoki (np błędy składniowe).

Z drugiej strony, jeśli servicesię zawiesi, może nawet nie uderzyć w twój skrypt, w którym to przypadku oczywiście nic nie pomoże.


Dzięki, postawiłem mnie na właściwej drodze. Na koniec podłączyłem dane wyjściowe do logger, aby móc po prostu ogonić /var/log/syslog.
Cera,

Dodatkowo, błędy w samym pliku conf są pokazane w dmesg. Dowiedziałem się tego, gdy nie otrzymałem żadnych danych wyjściowych, gdy korzystam z powyższego. Napisałem literówkę w dyrektywie chdir.
codingFoo

Gdzie umieszczasz ten kod?
kev


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.