Mam kilka aplikacji, które muszą cały czas działać na moim laptopie.
Używam skryptu bash do uruchamiania tych aplikacji. W moim skrypcie mam pętlę, która wygląda podobnie do tego:
while true;
do
xterm
done
Spowoduje to uruchomienie aplikacji ( xterm
w tym przypadku), a jeśli aplikacja ulegnie awarii, pętla uruchomi ją ponownie.
Ma to tę wadę, że nie ma „czystego” wyjścia z tej pętli. Więc nawet jeśli intencją użytkownika jest zamknięcie xterm
, pętla uruchamia ją ponownie.
Czy istnieje sposób, aby uruchomić aplikację ze skryptu bash, sprawdzić, czy jest uruchomiona, uruchomić ją ponownie , jeśli skrypt się zawiesi, lub nic nie robić, jeśli użytkownik poprawnie go zamknął?
while xterm; do true; done
while ! xterm; do :; done
!
.W tym
while
przypadku możesz sprawdzić, czy status wyjściaxterm
był udany, czy nie, używając czegoś takiego:$?
zmienna przechowuje status wyjścia ostatnio wykonanej komendy.źródło
Zasugeruję ci użyć.
do xterm; czy echo „program zakończył się ze statusem $?” ; gotowy
Spowoduje to ponowne uruchomienie programu, jeśli zostanie zabity.
źródło
Spróbuj użyć superwizora, to bardzo proste i łatwe do dodania programu lub skryptu do uruchomienia . W twoim przypadku potrzebujesz minimum,
command
a możeexitcodes
w sekcji programx do skonfigurowania.Domyślnie
exitcodes
jest to 0,2, co oznacza:Zasadniczo to jest to, czego chcesz: uruchom go ponownie , jeśli skrypt się zawiesił, lub nie rób nic, jeśli użytkownik poprawnie go zamknął (lub skrypt zakończył się pomyślnie)
najpierw wypróbuj najprostszą konfigurację:
Aby uzyskać większą elastyczność, zapoznaj się z dokumentacją pliku konfiguracji .
źródło