Witam. Zaczynam przygodę ze skryptami w bashu dlatego bardzo proszę o pomoc w poprawie skryptu napisanego przeze mnie. Program nie wywala błędów ale zawiesza się. A niżej treść zadania:
Program powinien uruchamiać proces w tle i zapisywać jego numer do pidfile.
Posiada takie parametry: start, stop, status, restart
Uruchomiony bez parametrów albo ze złymi wypisuje instrukcje użycia.
Uruchomiony z poleceniem start powinien:
- Sprawdzać czy proces jest uruchomiony
- Jeśli tak wyświetla informacje i wyłącza się
- Jeśli nie uruchamia go w tle i zapisuje PID
Uruchomiony z poleceniem stop powinien:
- Sprawdzać czy proces jest uruchomiony
- Jeśli nie wyświetla informacje i wyłącza się
- Jeśli tak to: prosi proces o zakończenie, czeka 2 sekundy, jeśli proces się nie zakończył wymusza zamknięcie.
Uruchomiony z poleceniem status powinien:
- Sprawdzać czy proces jest uruchomiony i wyświetlić informację
- Jeśli nie wyświetla informacje i wyłącza się
- Jeśli tak to: prosi proces o zakończenie, czeka 2 sekundy, jeśli proces się nie zakończył wymusza zamknięcie.
Uruchomiony z poleceniem restart powinien:
- Sprawdzać czy proces jest uruchomiony i wyświetlić informację
- Jeśli jest uruchomiony wyświetla informacje i wyłącza się
- Następnie uruchamia się
A niżej mój kod z co najmniej jednym niezrozumiałym dla mnie błędem:
#!/bin/bash
nano proces &
pidof nano > pidfile.txt
ZMIENNA =`cat pidfile.txt`
if [ "start" = $1 ]
then
if kill -0 $ZMIENNA
then
echo "proces uruchomiony w tle"
exit 0
else
nano proces &
pidof nano > pidfile.txt
exit 0
fi
elif [ "stop" = $1 ]
then
if kill -0 $ZMIENNA
then
kill $ZMIENNA
sleep 2
if kill -0 $ZMIENNA
then
kill -9 $ZMIENNA
else
exit 0
fi
else
echo "proces nie jest uruchomiony w tle"
exit 0
fi
elif [ "status" = $1 ]
then
if kill -0 $ZMIENNA
then
echo "proces uruchomiony w tle"
exit 0
else
echo "proces nie jest uruchomiony w tle"
exit 0
fi
elif [ "restart" = $1 ]
then
if kill -0 $ZMIENNA
then
echo "proces uruchomiony w tle wiec wylaczam i wlaczam na nowo"
kill $ZMIENNA
sleep 2
if kill -0 $ZMIENNA
then
kill -9 $ZMIENNA
fi
nano proces &
pidof nano > pidfile.txt
exit 0
else
echo "proces nie jest uruchomiony w tle wiec uruchamiam"
nano proces &
pidof nano > pidfile.txt
exit 0
fi
else
echo "Blad! Jako parametr nalezy podac jedna z opcji: start,
stop, status, restart. W innym wypadku program nie będzie
dzialal."
fi
Proszę o pomoc