Strona 1 z 1

Skrypt - podtrzymywanie pracy programu - jak to zrobić?

: 10 stycznia 2008, 15:26
autor: Jacekalex
Witam

Potrzebuję skryptu - który podtrzymuje pracę programu i automatycznie go włącza po wyłączeniu.

W książce "100 sposobów na linux" znalazłem taki skrypt:
Przykład (glxgears - to dla testowania skryptu).

Kod: Zaznacz cały

#!/bin/bash

echo " *  uruchamiam glxgears -- test"

instances=' ps ax | grep glxgears | grep -v grep |wc -c '
if  [ $instances = 0 ]; then
	while true; do 'glxgears'  ; done
else 	
	exit 1
fi[/color]
Otrzymuję wynik:
$ ./test
* uruchamiam glxgears -- test
./test: line 6: [: too many arguments
Jaki błąd jest w tym skrypcie?

Przeszukałem różne poradniki dotyczące basha - i nie widzę - jak to poprawić.

To mój pierwszy skrypt w bashu - i w ogóle w języku programowania - więc proszę o wyrozumiałość.

Pozdrawiam i dziękuję za cierpliwość.
;-)

: 10 stycznia 2008, 16:05
autor: zbyshek
Hej

Błąd może jest w warunku instrukcji if

Kod: Zaznacz cały

if [ $instances = 0 ]; then 
spróbuj wpisać coś takiego:

Kod: Zaznacz cały

if [ -z $instances ] ; then
-z $instances zwróci prawdę jesli dlugosc lancucha wynosi zero

Mogę się mylić bo nie mam jak tego sprawdzić, gdyż odpisuje z czytelni na uczelni (brak Linuksa).

Pozdrawiam

: 10 stycznia 2008, 18:36
autor: salmon
Jacekalex pisze:instances=' ps ax | grep glxgears | grep -v grep |wc -c '
użyłeś złych cudzysłowów, zamiast ' daj `

DZiałający skrypt:

: 05 lutego 2009, 07:59
autor: Jacekalex
Witam

Wygląda tak:

Kod: Zaznacz cały

#!/bin/bash
echo " * uruchamiam snorta" 
instances=`ps ax | grep "snort -A full -i eth0 -c /etc/snort/snort.conf -p -D" | grep -v grep | wc -l`
if [ $instances = 0 ] ; then
   while true; do sleep 2 && sudo snort -A full -i eth0 -c /etc/snort/snort.conf -p -D ; done
else
   exit 1
fi
- ten akurat jest do snorta.

Pozdrawiam

: 05 lutego 2009, 13:32
autor: markossx
Można się "męczyć" ze skryptem jednak w repo Debianka mamy:

Kod: Zaznacz cały

monit
który w niektórych wypadkach spełnia swoje zadanie ;-)