Newsgroup: it.comp.os.linux.software
Titolo: Monitorare e riavviare automaticamente un processo che crasha (xmule :))

Salve a tutto il ng.. è un po' che lo lurko e lo trovo davvero 
interessante :)
Veniamo al dunque:
Ho un pc con mandrake 9.1 (bamboo) sempre connesso a distruggersi con 
seti e xmule
ogni tanto il caro xmule crasha senza apparente motivo. Esiste un modo 
per far si che quando questo succede si riavvii automaticamente dopo 
circa un minuto o 2? (altrimenti la porta 4662 resta occupata :/)
Un grazie in anticipo a chi mi saprà aiutare :)
bach

avevo lo stesso problema , ho risolto passando ad amule , magari prova.
ciao.
-- 
-------------------------------------------------------------------------------
Parigi.  Vandalo irrompe nel Louvre e attacca due braccia alla Venere di
Milo.
                -- Da it.hobby.umorismo
-------------------------------------------------------------------------------

 ha 
scritto:


 L'ho trovato per caso, e non l'ho provato ma dovrebbe fare al caso tuo...
non gli serve , la funzione wait della bash fa' la stessa cosa .
-- 
-------------------------------------------------------------------------------
[Se ne avessi i poteri,] modificherei in prima persona l'esame di
maturita', ma non come vuol fare il Parlamento: se esame di maturita'
dev'essere, chi e' che puo' sapere se uno e' maturo?  Esatto!  Proprio
lui: il Presidente della Commissione d'Esame sarebbe l'Uomo del Monte!
Si', diplomato.  No, bocciato.  E via, fine, stop, senza voto.  Si' o
no.  Niente voto, forse solo uno smiley: sorriso :-) per chi e' andato
bene, tristezza :-( per chi e' andato male, e via...
                -- Andrea `Zuse' Balestrero, in una e-mail a
 
sm...@mbox.mir.it
-------------------------------------------------------------------------------

 circa un minuto o 2? (altrimenti la porta 4662 resta occupata :/)
Non so se  funzioni mettendo il controllo nella  crontab, visto che il
programma e' grafico,  non mi sono mai posto  il problema.  Per essere
sicuro che funzioni io costruirei uno script di questo tipo:
#!/bin/bash
function check_lop {
	if [ ! $(ps aux | grep -v grep | grep lopster) ]; do
		# lopster manca, lo riavvio
		lopster &
	fi
}
while [ true ]; do
	check_lop
	sleep 10m
done
Guarda che l'ho scritto ad occhio  e non e' testato, fai qualche prova
prima di fare casini ;-)
Ciao
-- 
Sono un servitore del Fuoco Segreto, e reggo la fiamma di Anor.
A nulla ti servira' il fuoco oscuro, fiamma di Udun.
Torna nell'Ombra! Non puoi passare.

Ho provato e in effetti la situazione č migliorata... perň vorrei 
qualcosa di piů generico. Una cosa tipo operazioni pianificate per windows..
nero ha scritto:


 windows..
.....nocomment..... mai sentito parlare di cron ?
-- 
-------------------------------------------------------------------------------
Che diavolo stai dicendo, Willis?
                -- Arnold Jackson, "Il mio amico Arnold"
-------------------------------------------------------------------------------

 .....nocomment..... mai sentito parlare di cron ?
cron non mi sembra che vada bene per il problema che era stato posto
inizialmente (e probabilmente neanche operazioni pianificate).
cron esegue operazioni ad una determinata ora, mentre la richiesta era
di eseguire operazioni all'avverarsi di una determinata condizione.
-- 
Ciao, Pippo Peppo
Registered Linux User #315573

 di eseguire operazioni all'avverarsi di una determinata condizione.
da sempre, di fronte ad un problema del genere, cron avvia in maniera
tempestiva (leggi, ogni tot, dove tot e` limite per te ragionevole per
fare il controllo, 1 minuto, 5 minuti), uno script che si occupa di fare
quello che chiedi (verificare la determinata condizione).
Un alternativa e` lanciare uno script che rimane in attesa della
condizione e basta. Cmq, cron ti puo` essere utile per verificare
l'esistenza di questo e nel caso, riavviarlo. (una forma di
rindondanza).
-- 
                          Maurizio - Tannoiser - Lemmo
                 Founder Member of ERLUG 
http://erlug.linux.it
-------------------------------------------------------------------------------
Always remember that you are unique.  Just like everyone else.

 ha
scritto:

--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

scusate il doppio post il primo mi è partito x errore.
cmq secondo me la soluzione + semplice è aggiungere una riga al file
/etc/inittab ( man inittab x la sintassi ) nel quale vanno dati i seguenti
parametri : runlevel in cui devi lavorare,modalità respawn,comando da
lanciare x riattivare il servizio,processo che deve rimanere attivo.
questa cosa funziona x forza.
Ciao Stefano


 quello che chiedi (verificare la determinata condizione).
Scusami Maurizio,  ma con cron e'  anche possibile in  questo modo far
partire un programma grafico?  Perche' ora lo sto provando con xmms ma
non sembra funzionare (e me lo aspettavo).  Il messaggio che mi arriva
in mail da cron e' questo: ** CRITICAL **: Unable to open display
Penso  che  l'unico  modo per  fare  questa  cosa  sia di  mettere  in
background su di un xterm un  processo che fa il lavoro di controllare
ed eventualmente riavvire il programma.
Sbaglio?


 in mail da cron e' questo: ** CRITICAL **: Unable to open display
Qui la domanda cambia ed esula da cron: affinche` tu possa lanciare un
programma grafico, esso deve essere a conoscenza del DISPLAY (maiuscolo
perche` e` una variabile).
In questo caso, ed essendo sicuro che il server X sta funzionando,
dovrebbe poter essere possibile lanciare uno script che faccia:
export DISPLAY=":0" && /path/to/program &
(il background, perche` alla fine d'esecuzione il child della shell
viene chiuso).
Resta da vedere se questo e` un set sufficente di variabili d'ambiente
utili per l'esecuzione oppure no.
Nota anche che se lo script e` nel _tuo_ cron, il programma viene
eseguito con i tuoi permessi, se e` nel "globale" con quelli di root.
Nota anche che se il server X e` disabilitato, ovviamente il maccherone
non puo` funzionare.
-- 
                          Maurizio - Tannoiser - Lemmo
                 Founder Member of ERLUG 
http://erlug.linux.it
-------------------------------------------------------------------------------
Microsoft - Where the good job is v10.1 (?)

 export DISPLAY=":0" && /path/to/program &
Sai che, stranamente, hai ragione :-)
Non immaginavo che  la soluzione fosse cosi' semplice,  piu' che altro
pensavo che la  variabile DISPLAY avesse un senso  solo in determinati
contesti (ad  esempio l'essere legato ad un  terminale/una shell), non
pensavo proprio che funzionasse anche in processi senza terminale come
quelli di cron (per lo meno io immagino siano senza terminale).
Grazie.


 Non immaginavo che  la soluzione fosse cosi' semplice,<>
Sai perche` la soluzione "e` semplice"? Perche` X, ovvero l'interfaccia
grafica, in linux e` client-server. Per la prossima volta che qualcuno
denigra X perche` troppo lento (a causa del client-server).
Come e` carino forwardarsi un applicazione che gira su una macchina, ma
ha output grafico su un'altra... tutto banalmente fattibile con un
export DISPLAY appropriato... :)
-- 
                          Maurizio - Tannoiser - Lemmo
                 Founder Member of ERLUG 
http://erlug.linux.it
-------------------------------------------------------------------------------
Real programmers can write assembly code in any language.

 export DISPLAY appropriato... :)
Questo lo  faccio da sempre,  pero' pensavo che fosse  possibile anche
perche' ero gia'  di partenza in un xterm.  Te  lo traduco in italiano
che ho paura di farmi fraintendere se no ;-)
Sono in un xterm sulla macchina  A (lascio perdere ssh se no e' troppo
semplice e perdiamo il gusto dell'export manuale ;-)):
vale@A:~> xhost +B
vale@A:~> telnet B
username: vale
password: vale
vale@B: > export DISPLAY=:0.0
vale@B: > xmms
Ok,  so  che  funziona.    Il  punto  e'  che  (erroneamente)  pensavo
funzionasse perche' ritenevo che  quell'export si riferisse (con :0.0)
all'ambiente grafico  su cui ero  gia' (diciamo a causa  dell'xterm su
cui  ero  in  partenza);  un  po'  come  dire  buttami  l'output  qui,
nell'ambiente grafico su cui sono gia'...
Sembra un delirio lo so... se  non capisci quello che ho detto, non ti
preoccupare che non era  importante, diciamo molto fantasioso piu' che
altro :-)
Ciao


 che ho paura di farmi fraintendere se no ;-)
Avevo capito. Quello che dicevo e`:
Funziona, perche` X ha un architettura client-server. C'e` chi dice che
"e` male", perche` "e` lento" e non serve "a nulla". Io dico che e`
bene, e serve eccome. :)
-- 
                          Maurizio - Tannoiser - Lemmo
                 Founder Member of ERLUG 
http://erlug.linux.it
-------------------------------------------------------------------------------
What goes up, must come down. Ask any system administrator.