Właściwie nie jestem pewien, czy powinienem używać Skryptów Shell, czy też istnieją już jakieś sposoby. Ale bez względu na to, jakie zastosujemy podejście, chciałbym, aby Usługa działała cały czas.
Powiedzmy iptables
jako przykład. Następnie ..
- Ilekroć
iptables
usługa jeststopped
lub (innymi słowy) nie działa, chcę go miećstarted
(lubrestarted
) .. automatycznie , gdy tylko przestał (lub nie działa). - Innymi słowy, chcę, aby Usługa działała cały czas.
(Być może mógłbym podać uczciwą częstotliwość do sprawdzenia, jeśli problem stanowi sprawdzanie w czasie rzeczywistym . Powiedzmy, że co 5 minut)
Jedynym sposobem, jaki mogłem wymyślić, jest użycie Skryptów powłoki z Cron Tab.
- Czy jest jakieś inteligentne rozwiązanie?
Dzięki!
alerts
że do czegoś nie działa.restarted
za każdym razem, gdy zostanie zatrzymana, z dowolnego powodu. Nie ma problemu z ponownym uruchomieniem.Odpowiedzi:
Aktualizacja marca 2018 r
Ta odpowiedź jest teraz dość stara i od czasu jej napisania systemd wygrał wojnę z pid1 na Linuksie. Dlatego prawdopodobnie powinieneś utworzyć jednostkę systemd , jeśli systemd jest wbudowany w twoją dystrybucję (która jest ich większość).
Poniższa odpowiedź została zachowana dla potomności.
Powyższa odpowiedź na monit jest poprawna, ale pomyślałem, że wspomnę o kilku alternatywach:
Warto pamiętać, że Twój system operacyjny już rozwiązał problem zarządzania procesami. Tradycyjnie Linux używa sysvinit, który jest w zasadzie zbiorem skryptów widocznych w init.d. Jednak jest dość głupi i nie może monitorować procesów, skrypty init.d są skomplikowane i są wymieniane z ważnego powodu.
Bardziej nowoczesne systemy operacyjne zaczynają zastępować sysvinit, a przodującymi są Upstart i Systemd. Debian skłania się ku systemd, Ubuntu rozwinął się i już prawie przeszedł na Upstart i podobnie jak Debian Redhat / CentOS / Fedora przechodzą na systemd. Dlatego jeśli używasz systemu operacyjnego, który już zastąpił sysvinit, zaleciłbym użycie wbudowanego. Skrypty są znacznie łatwiejsze do napisania niż skrypty init.
Użyłem runit i całkiem mi się podoba, ale najłatwiejszy w użyciu jest superwizor. Jest również bardzo dobrze udokumentowany, działa prawie wszędzie i jest pakowany we wszystkich głównych dystrybucjach.
Ale cokolwiek zrobisz, proszę, nie używaj skryptu powłoki. Jest tak wiele rzeczy złych w tym podejściu!
źródło
iptables
jest kiepskim przykładem, ponieważ tak naprawdę nie jest uruchomiona usługa lub demon, ale część jądra. Nie można tak naprawdę „zatrzymać”iptables
, można jedynie nadać mu konfigurację, a „zatrzymanie” oznacza nadanie mu pustej konfiguracji. Rzeczywiście miałem awarię systemów Linux, ale konfiguracja przekierowania portówiptables
nadal działa.W każdym razie narzędzie o nazwie
monit
zrobi to, co chcesz. Jeśli używasz Debiana, nie maapt-get install monit
go. To trochę wymaga poznania, ale bardzo elastyczne.źródło
Używamy tego prostego skryptu, aby ostrzec i uruchomić usługę, jeśli nie jest uruchomiona. Możesz też dodać więcej usług.
źródło
Alternatywne rozwiązanie dla komputerów stacjonarnych (KDE):
Możemy oglądać usługę ze statusem serwera apletów / widgetów ... po jej zainstalowaniu wystarczy dodać polecenie do widgetu, aby monitorować twoją usługę
Przykład:
systemctl status httpd.service
Wersja KDE 4: https://store.kde.org/content/show.php?content=101336
Wersja KDE 5: https://store.kde.org/p/1190292/
źródło
Wiem, że minęło kilka lat, odkąd pytanie zostało zadane. ale przy pomocy systemd (głównie dostępne z centos i REHL) możesz uruchomić to polecenie bash z cronem, aby sprawdzić i zrestartować, jeśli usługa nie działa.
zapisz go w katalogu bin i nazwij jak monitor. Daj odpowiednie uprawnienia do pliku. następnie uruchom go jak
jeśli chcesz sprawdzić usługę redis i ponownie uruchomić / uruchomić w razie potrzeby.
na koniec dodaj to do swojej pracy crona.
mam nadzieję, że to pomoże
źródło
Aby dodać do długiej listy nadzoru init / svc, jako podkatalog S6, w bloku znajduje się nowy dzieciak, 66, który obsługuje zarządzanie usługami s6 i logowanie w szybki, lekki i przyjazny dla użytkownika sposób. To jest link do oficjalnej dokumentacji dla Obarun-Linux https://web.obarun.org/software
To jest FAQ dotyczące korzystania z tego oprogramowania 66 i sensu s6 http://sysdfree.wordpress.com/266
Od czasu jego stabilnego wydania znaleziono tylko jeden błąd związany ze zmianami jądra od 4.20 -> 5.0, wszystkie inne zgłaszane problemy dotyczyły ludzi uczących się czegoś nowego. Gdyby zarządzanie usługami stało się prostsze, lepszym rozwiązaniem może być przejście na MS-Windows (Linus forbid). Aby zobaczyć, jak to działa, wystarczy pobrać plik Obarun live.iso i grać z nim. Zainstaluj usługi, a ich 66-skrypty umożliwią im, zabij je, zobacz ich logi, zatrzymaj je i uruchom (jeśli są włączone), zgrupuj usługi w drzewo i niech drzewa usług będą uruchamiać i zatrzymywać wszystkie razem, mieć usługi na poziomie użytkownika osobno z systemu. Robi to, co robi s6, i ułatwia użytkownikowi wykorzystanie kuloodpornego systemu pod s6.
Pliki do pobrania można znaleźć tutaj: https://web.obarun.org/index.php?id=74 md5 sprawdź pliki https://repo.obarun.org/iso/
Oprócz init i zarządzania usługami s6 / 66 nie mają żadnych zależności od innych elementów systemu. Jest to warstwa systemu podstawowego, pozostawiając resztę oprogramowania do samodzielnej pracy, init / svc-mgmt. Wszystkie s6 i 66 są napisane w C i nie są specyficzne dla Linux-a ani glibc. Serwery Skarneta (autorzy s6) działają od prawie dekady bez wielu przerw na niestandardowym systemie muzycznym. Alpine, Void i Adelie mają obecnie również oprogramowanie s6 w swoich repozytoriach, Adelie domyślnie używa go do nadzoru serwisowego. Pustka przenosi teraz także 66. Nie wiem, czy i w jakim stopniu ktokolwiek przeniósł s6 na system xxBSD lub inne systemy xxIX.
źródło