Newsgroup: it.comp.os.linux.iniziare
Titolo: problema script

ciao.
ho tirato fuori da google uno script da infilare in cron per controllare
se un progrmma e' in esecuzione e, se non lo e', avviarlo.
l'ho dovuto modificare (usando il pidof invece di ps -A | grep
nome_programma), perche' altrimenti non funzionava.
l'attuale script e':
#! /bin/bash
VARIABILE=`pidof lopster`
if [ $VARIABILE="" ]; then
 lopster --display :1
else
         echo "il programma e' in esecuzione"
###
nella versione originale (col ps -A | grep) mi accadeva un problema: se lo
applicavo ad xmms, funzionava tutto senza problemi. se invece mettevo grep
lopster, mi dava errore: line 3: too many arguments. 
ho quindi optato per un pidof e sembrava funzionare. 
ora invece mi sono accorto che spesso e volentieri (anche se lo lancio
fuori da cron, semplicemte dalla console), non funziona proprio; o meglio,
non si accorge che il programma e' in esecuzione, e ne avvia un altro.
dove sbaglio?
-- 
Rossi c'e' ! tutta la vita! Uorld Cempion 2004
inviti gmail disponibili
Mr.Orange							       
antani _chiocciolina_ gmail _punto_ com		
orangeek dot homelinux dot org

 dove sbaglio?
scusate, correggo.
lo script finisce con un 'fi' alla fine. e l'errore che mi da' se
inserisco come VARIABILE ps -A | grep lopster e' questo:
./script.lopster: line 3: [: too many arguments


          echo "il programma e' in esecuzione"
#! /bin/bash
VARIABILE=`pidof lopster`
if [ "$VARIABILE"="" ]; then
   lopster --display :1
else
   echo "il programma e' in esecuzione"
fi
Ciao,
 ___ 
/_|_\  Umberto Salsi
\/_\/  
www.icosaedro.it

 
grazie, ma ... non funziona! anche se lopster e' avviato, non se ne
accorge e lo fa partire un'altra volta. se non sbaglio, confrontando i due
script, la differenza e' solo in "$VARIABILE" compreso tra virgolette
(prima non lo era)...


 (prima non lo era)...
Prova cosě:
#!/bin/sh
if pidof lopster
then
	lopster --display:1
else
	echo "il programma č in esecuzione"
fi
exit

 Prova cosě:
Scusa, mi sono sbagliato....č cosě:
#!/bin/sh
if pidof lopster
then
	echo "il programma č in esecuzione"
else
	lopster --display:1
fi
exit

 accorge e lo fa partire un'altra volta. se non sbaglio, confrontando i due
Ma che succede? E' uscito qualche articolo sullo scripting bash? :-)
Il test sulla non esistenza di una stringa, in bash, lo si fa in due
modi:
if [ -z $VARIABILE ]
if [ z$VARIABILE = z ]
Il risultato di uguaglianza su stringa nulla non e' affidabile, percio'
si imbroglia confrontando la stringa + una costante con la sola
costante.
Se il confronto e' verificato, la stringa e' nulla.
Altrimenti, si usa il costrutto -z che ha proprio il significato di
stringa a lunghezza zero.
-- 
           |Save our planet!
    Ciao   |Save wildlife!
   roberto |For your E-MAIL use ONLY recycled Bytes  !!
           |roberto poggi   
rpo...@softhome.net

 
[CUT]
:)
grazie a te e agli altri (Kaosmos: il tuo funziona! :) per l'aiuto penso
che prima o poi dovrei dare un occhio a ABS. Il problema e' che mi sono
sempre convinto che non mi servirebbe a niente o quasi e quindi mi sono
sempre rifiutato...
sarei curioso di farvi vedere il mio script di backup che tarra le dirs e
le copia su un disco nfs; dato che non so niente di bash, mi sono
ingegnato a forza di comandi semplici e &&, arrivando ad uno script:
- poco affidabile
- stupido
- difficilmente adattabile a diversi contesti
Non lo posto solo per mantenere quel minimo di reputazione che mi sono
fatto negli anni su questo NG... :D
bye e grazie a tutti
