Skrypt - podtrzymywanie pracy programu - jak to zrobi

Potrzebujesz pomocy z C, C++, perl, python, itp.
Jacekalex
Posty: 30
Rejestracja: 06 stycznia 2008, 17:12

Skrypt - podtrzymywanie pracy programu - jak to zrobić?

Post 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ść.
;-)
zbyshek
Posty: 19
Rejestracja: 05 września 2007, 09:37
Lokalizacja: Polska

Post 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
salmon
Beginner
Posty: 296
Rejestracja: 12 października 2007, 23:28
Lokalizacja: Gliwice/Bielsko-Biała

Post autor: salmon »

Jacekalex pisze:instances=' ps ax | grep glxgears | grep -v grep |wc -c '
użyłeś złych cudzysłowów, zamiast ' daj `
Jacekalex
Posty: 30
Rejestracja: 06 stycznia 2008, 17:12

DZiałający skrypt:

Post 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
Awatar użytkownika
markossx
Beginner
Posty: 489
Rejestracja: 26 maja 2007, 16:01
Lokalizacja: Polska

Post 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 ;-)
ODPOWIEDZ