Mam bardzo prosty skrypt w języku Python, który chciałbym zawsze uruchamiać na moim serwerze Ubuntu 12.04. Myślałem o użyciu Upstart + Monitor. Problem polega na tym, że te narzędzia wydają się dość skomplikowane dla zwykłego śmiertelnika, takiego jak ja, i nie mogę znaleźć prostego przykładu w Internecie.
Czy overstart + monitor przesada? Czy ktoś zna prostszą alternatywę lub dobry samouczek dla upstart + monitor? Jeśli chcę mieć pewność, że skrypt jest zawsze uruchomiony, czy w ogóle wymagany jest monit?
python
upstart
monitoring
Sebpiq
źródło
źródło
Odpowiedzi:
Najprostszym sposobem na to jest umieszczenie tego w
/etc/init/something.conf
:Respawn uruchomi go ponownie, jeśli zostanie zabity lub wyjdzie z zera (jak nieprzechwycony wyjątek). To zadziała, wracając do Ubuntu 10.04.
Jeśli masz 12.04, możesz uzyskać więcej fantazji. Powyższe uruchomi twój skrypt jako root. W 12.04 możesz dodać setuid / setgid:
Jeśli twój skrypt kończy działanie, gdy nie ma dostępnej sieci i planujesz uruchomić go na niestabilnym połączeniu sieciowym, cóż, powinieneś to naprawić i po prostu sprawić, by pozostał przy życiu / spróbuj ponownie. Ale jeśli nie możesz, może być konieczne ręczne uruchomienie go za każdym razem, gdy pojawi się urządzenie sieciowe. Możesz więc umieścić to w
/etc/network/if-up.d/yourscript
(uczynić to wykonywalnym za pomocą chmod + x)Gdzie twój skrypt jest po prostu czymś arbitralnym i unikalnym dla tego konkretnego skryptu, a „coś” jest takie samo jak nazwa zadania (jak
/etc/init/something.conf
sugerowane wcześniej).źródło
upstart
prawda? Czy to oznacza, że skrypt będzie również uruchamiany przy starcie systemu (co byłoby świetne!)? Irespawn
wystarczy, aby nie trzeba było konfigurowaćmonit
?Tradycyjnym podejściem z dawnych czasów było zapisanie pliku zawierającego znacznik czasu lub identyfikator procesu,
/tmp
a następnie sprawdzenie, czy ten identyfikator procesu nadal działa lub, odpowiednio, czy znacznik czasu jest wciąż aktualny.Możesz także zrobić prosty sposób,
while [ 1 ]; do phyton-script.ph; done
który zrestartowałby skrypt w przypadku jego powrotu.Aby uzyskać więcej możliwości, podaj więcej informacji o skrypcie. Zwłaszcza dlatego, że spodziewasz się niespodziewanego wyjścia lub awarii.
źródło