Neron-ek pisze:
Potrzebuję prosty skrypt który uruchamia polecenie xxx i w otrzymanym komunikacie wyszukuje podanego ciągu znakow yyzz. Jeśli dany ciag znakow znajdzie to end jeśli nie to kiluje proces vvv i uruchamia go ponownie.
Pozdrawiam i z góry dziekuje.
#!/bin/sh
/scieżka/do/xxx | grep yyzz
if [ $? = 0 ]; then
echo "Znalazłem yyzz. Kończę!"
exit 0
else
echo "Nie znalazłem yyzz. Restartuję vvv."
killall vvv && /sciezka/do/vvv
if [ $? = 0 ]; then
echo "vvv zrestartowane. Kończę."
exit 0
else
echo "Nie udało się zrestartować vvv. Kończę"
exit 1
fi
fi
1. można to jeszcze uprościć
2. zabijanie procesu to nie jest najbardziej elegancka metoda, poza tym nie podałeś czy vvv to nazwa czy numer procesu, jesli nazwa to używasz killall, jeśli numer procesu to używasz kill.
3. podobnie jak w pkt 2 - nie podałes jak uruchamiasz proces vvv więc przyjąłem, że to jest jakiś wykonywalny plik na dysku.
4. echa oczywiście możesz wywalić.
5.powyżej masz sprawdzanie czy vvv został zabity i czy się uruchomił - program zakończony sukcesem zazwyczaj zwraca kod błędu ($?) 0 (zero), zakończony błędem zwraca wartość $? różną od zera.