Scenariusz:
- otrzymujemy binarną aplikację napisaną w jakimś języku (C/Java).
- aplikacja po uruchomieniu działa. Po wyłączeniu przestaje działać. ;)
- aplikacja nie przechodzi sama w tło, nie tworzy również pliku pid, nie potrafi sama zadbać o to, by nie uruchomiło się więcej niż 1 instancja.
W jaki sposób sobie z takimi aplikacjami radzicie?
Do tej pory spotkałem się z różnymi podejściami:
- przepisywanie aplikacji/modułowanie jej tak, by tworzyła pidfile, locka zapobiegającego ponownemu uruchomieniu i sama przechodziła w tło(co jest mozolne i nie zawsze wykonywalne)
- obudowywanie w/w feature'ów w skrypt startowy, pobierający pid przez $!, sprawdzający, czy to jedyna instancja, uruchamianie samej aplikacji przez nohup/przekierowanie wejść/wyjść i & w tło.
- użycie "gotowców" (np.start-stop-daemon)
- użycie monita
- uruchamianie aplikacji pod screenem, gdzie screen dba o to, by się nie zduplikowały sesje
A może znacie jeszcze jakieś inne podejścia/rozwiązania?
Pomijam kwestię paczkowania, wirtualizacji itp.