PDA

View Full Version : [HELP] Script/Programma che mi RI-lancia 1 programma se esso si chiude...


The X
11-12-2003, 18:54
Come da topic, stavo cercando uno script, servizio, programma che controllasse (es. ogni 5/10 min) se un programma da me impostato è attivo nel sistema oppure no ed in caso negativo lo rilanciasse....

E' 1 classico esempio il programma per windows "emule monitor"....

Io vorrei avere la stessa cosa MA x linux....

Qlc mi sa indicarne 1 ?

tnk

Jøhñ Ðøë
11-12-2003, 19:30
la cosa più ciofeca che mi è venuta in mente, dovrebbe funzionare cmq..


#!/bin/bash

IS_THERE=`ps aux | grep amule | grep -v grep`

if [ "$IS_THERE" = "" ]
then
amule &
fi


lo butti in un file di testo (con permessi di esecuzione), gli dai un nome sensato, dopodichè lo metti in cron e lo fai andare ogni x minuti
per fare ciò lo aggiungi a un tuo file di crontab (che crei tu se non hai) e seguendo la sintassi giusta (man crontab) lo aggiungi ai processi periodici tramite il comando

crontab -u <tuo_utente> <file_crontab>


John

The X
12-12-2003, 01:40
Originariamente inviato da Jøhñ Ðøë
la cosa più ciofeca che mi è venuta in mente, dovrebbe funzionare cmq..


#!/bin/bash

IS_THERE=`ps aux | grep amule | grep -v grep`

if [ "$IS_THERE" = "" ]
then
amule &
fi


lo butti in un file di testo (con permessi di esecuzione), gli dai un nome sensato, dopodichè lo metti in cron e lo fai andare ogni x minuti
per fare ciò lo aggiungi a un tuo file di crontab (che crei tu se non hai) e seguendo la sintassi giusta (man crontab) lo aggiungi ai processi periodici tramite il comando

crontab -u <tuo_utente> <file_crontab>


John

Il tuo script funziona a livello d codice MA c'è 1 problema :

xMule è un'applicazione Gtk e nn può essere lanciata da console (cioè se io la lancio da console xmule parte ma poi mi rimane legata alla console) per questo motivo c vorrebbe uno script/programma fatto apposta per le applicazione gtk/kde (o in ogni caso grafiche).....

ilsensine
12-12-2003, 07:55
Originariamente inviato da The X
xMule è un'applicazione Gtk e nn può essere lanciata da console (cioè se io la lancio da console xmule parte ma poi mi rimane legata alla console) per questo motivo c vorrebbe uno script/programma fatto apposta per le applicazione gtk/kde (o in ogni caso grafiche).....
Aggiungi
DISPLAY=:0
prima dell'if. Dovrebbe bastare.

The X
13-12-2003, 21:13
Originariamente inviato da ilsensine
Aggiungi
DISPLAY=:0
prima dell'if. Dovrebbe bastare.

Ok, fatto.... adesso il mulo mi sta scaricando a piena banda quindi non me la sento d chiuderlo per provare....
Appena mi cala, o peggio appena crasha, t farò sapere se con la tua opzione mi funziona ^_^

The X
14-12-2003, 13:28
Qlc mi sa dire come mai kCRON non funziona ?

Ho impostato l'attivazione ogni 5 minuti ma nn succede nulla......

maxithron
14-12-2003, 20:06
Come hai indicato lo script suggeritoti da John nel cron?

The X
15-12-2003, 00:28
Originariamente inviato da maxithron
Come hai indicato lo script suggeritoti da John nel cron?

Ho aperto KCRON; ho fatto Nuovo; ho selezionato il mio script e poi ho cliccato sulle varie opzioni per dirgli d attivarlo ogni 5 minuti.... Allo scadere dei 5 minuti però nn mi parte nulla mentre se faccio "ESEGUI ORA" funziona....

maxithron
15-12-2003, 08:32
Normalmente nei cron devi indicare il path specifico dello script.

Ad es.:

se il mio script si chiama "esegui" ed è salvato in /home/maxithron

nel cron dovrò scrivere:

* * * /home/maxithron/./esegui

The X
15-12-2003, 09:09
Originariamente inviato da maxithron
Normalmente nei cron devi indicare il path specifico dello script.

Ad es.:

se il mio script si chiama "esegui" ed è salvato in /home/maxithron

nel cron dovrò scrivere:

* * * /home/maxithron/./esegui

Si certo MA KCron è o non è un programma grafico ? C'è il pulsante sfoglia ed io con quello sono andato a selezionare il mio file e mi ha messo /home/thex/xmule_monitor

Devo per caso modificare il path in /home/thex/./xmule_monitor ?

cn73
15-12-2003, 09:26
Attenzione... quando lanci uno script da crontab (che è sto kcron?? :D) devi tenere conto che tutte le variabili di ambiente che hai a disposizione nel tuo enviroment NON vengono conservate. Perciò devi risettarle nello script stesso. In particolar modo io sono solito dare un

cd $working_dir come prima cosa, dove working dir è la directory da cui parte lo script.

Poix81
15-12-2003, 09:32
secondo me ti conviene usare cron da linea di comando che e' molto meglio!!!

ciao ciao

LukeHack
15-12-2003, 10:30
ma perchè nella pipe del grep hai aggiunto il | grep -v grep ?
non capisco a che serve,mi dà lo stesso output con o senza la pipe finale

Mason
15-12-2003, 10:52
e la selezione inversa di grep
"ogni tanto" ps |grep pippo torna anche il processo grep che sta girando giustamente.
con grep -v grep fa la cosa contraria,cioe toglie le righe con la stringa grep.

cmq anche io mi accodo alla richiesta di lukehack,e in particolar modo per la spiegazione di questo comportamento.


-<Yes, Master?>-$ps aux |grep pippo
mason 26281 0.0 0.0 2028 680 pts/0 R 12:37 0:00 grep pippo
-<mason@master:/dev/pts/0>--<1237:lun,15 dic 03>----</home/mason/download/film>-
-<Yes, Master?>-$ps aux |grep init
root 1 0.0 0.0 1484 472 ? S Dec12 0:04 init [3]
mason 717 0.0 0.0 2360 536 vc/2 S Dec12 0:00 xinit /usr/X11R6/lib/X11/xinit/xinitrc -- /usr/X11R6/lib/X11/xinit/xserverrc
-<mason@master:/dev/pts/0>--<1237:lun,15 dic 03>----</home/mason/download/film>-
-<Yes, Master?>-$ps aux |grep grep
-<mason@master:/dev/pts/0>--<1238:lun,15 dic 03>----</home/mason/download/film>-
-<Yes, Master?>-$ps aux |grep pluto
-<mason@master:/dev/pts/0>--<1238:lun,15 dic 03>----</home/mason/download/film>-
-<Yes, Master?>-$ps aux |grep pippo
-<mason@master:/dev/pts/0>--<1238:lun,15 dic 03>----</home/mason/download/film>-
-<Yes, Master?>-$ps aux |grep init
root 1 0.0 0.0 1484 472 ? S Dec12 0:04 init [3]
mason 717 0.0 0.0 2360 536 vc/2 S Dec12 0:00 xinit /usr/X11R6/lib/X11/xinit/xinitrc -- /usr/X11R6/lib/X11/xinit/xserverrc
-<mason@master:/dev/pts/0>--<1238:lun,15 dic 03>----</home/mason/download/film>-
-<Yes, Master?>-$ps aux |grep pippo
-<mason@master:/dev/pts/0>--<1238:lun,15 dic 03>----</home/mason/download/film>-
-<Yes, Master?>-$


perche' nel primo caso ps fa vedere nel istantanea dei processi grep gia' in opera(cosa che dovrebbe far aprtire una volta terminato il proprio output) e nelle successive invece non lo mostra?

l'unica cosa che mi viene in mente e:

il kernel fa partire entrambi e crea una pipe per i 2 proc, questo idealmente, in quanto non parallelo, quindi dipende dallo scheduler dei processi se interrompe il primo per eseguire il secondo con i dati disponibili,oppure puo' capitare che venga concluso il primo nel suo timeslice e coi dati bufferizzati nella pipe fatto poi partire il 2,questa e l'unica spiegazione che mi viene in mente.
quindi l'istantanea dei processi nel primo caso per il processo1 sara' comprensiva del processo2, mentre nel secondo caso no.

e giusto?

Jøhñ Ðøë
15-12-2003, 18:28
Originariamente inviato da LukeHack
ma perchè nella pipe del grep hai aggiunto il | grep -v grep ?
non capisco a che serve,mi dà lo stesso output con o senza la pipe finale

guarda:
senza amule aperto:

jdoe@waste-bin jdoe $ ps aux | grep amule
jdoe 15144 0.0 0.0 1556 412 pts/3 S 20:28 0:00 grep amule
jdoe@waste-bin jdoe $

jdoe@waste-bin jdoe $ ps aux | grep amule | grep -v grep
jdoe@waste-bin jdoe $

Secondo il mio script, nel primo caso $IS_THERE non sarebbe vuota, anche se amule non è running ;)

LukeHack
15-12-2003, 20:30
:D ok tutto chiaro...
il problema è che dopo aver fatto kcron -e, editato in modo tale da avviare emule (con le if dovute:P) ogni 5 minuti, dopo quindi aver scritto kcron -u root, il sistema mette tutto nella cron (infatti eseguendo kcron appare la mia aggiunta con scritto "abilitato")
PERO' NON FUNZIONA UNa sega...
eppure lo script funge bene...
PERCHé?

Jøhñ Ðøë
15-12-2003, 23:05
Originariamente inviato da LukeHack

eppure lo script funge bene...


:sofico:

non lo so. prova a dare una letta a crontab e a usare cron normale.

John

LukeHack
15-12-2003, 23:48
Originariamente inviato da Jøhñ Ðøë
:sofico:

non lo so. prova a dare una letta a crontab e a usare cron normale.

John
io USO CRON NORMALE...
kcron era solo una prova alternativa

The X
16-12-2003, 02:10
Originariamente inviato da Jøhñ Ðøë

lo butti in un file di testo (con permessi di esecuzione), gli dai un nome sensato, dopodichè lo metti in cron e lo fai andare ogni x minuti

per fare ciò lo aggiungi a un tuo file di crontab (che crei tu se non hai) e seguendo la sintassi giusta (man crontab) lo aggiungi ai processi periodici tramite il comando

crontab -u <tuo_utente> <file_crontab>


John

Visto ke ho capito che Kcron non funziona andiamo a mano....

Mi spiegheresti come creare un file contrab e come settare 5 minuti come tempo ?

Altra cosa : se faccio "man contrab" mi dice "no manual for contrab" e se lancio "contrab" mi dice "command not found"

Kcron (che non è nient'altro che un KDE Contrab Editor) è installato quindi ipotizzo che lo sia anche cron MA sto contrab non lo trovo ^_^

#!/bin/sh
16-12-2003, 07:59
Originariamente inviato da The X
Come da topic, stavo cercando uno script, servizio, programma che controllasse (es. ogni 5/10 min) se un programma da me impostato è attivo nel sistema oppure no ed in caso negativo lo rilanciasse....

E' 1 classico esempio il programma per windows "emule monitor"....

Io vorrei avere la stessa cosa MA x linux....

Qlc mi sa indicarne 1 ?

tnk
E usare i daemontools? http://cr.yp.to/daemontools.html

Jøhñ Ðøë
16-12-2003, 11:13
Originariamente inviato da The X
Visto ke ho capito che Kcron non funziona andiamo a mano....

Mi spiegheresti come creare un file contrab e come settare 5 minuti come tempo ?

Altra cosa : se faccio "man contrab" mi dice "no manual for contrab" e se lancio "contrab" mi dice "command not found"

Kcron (che non è nient'altro che un KDE Contrab Editor) è installato quindi ipotizzo che lo sia anche cron MA sto contrab non lo trovo ^_^

se non hai crontab... strano, controlla che cron sa installato..

Cmq, crei un file di testo nella tua home (chiamalo ad es mio-crontab) e scrivici



*/5 * * * * $HOME/bin/amule-monitor.sh


son 5 asterischi, il primo dice "tutti i minuti diviso 5", quindi ogni 5 minuti, di tutte le ore (sec asterisco) di tutti i giorni di tutti i mesi e di tutti i gg della settimana, deve eseguire quel comando lì

Poi ti logghi da root e digiti

crontab -u <tuoutente> mio-crontab

e controlli che tutto sia ok con
crontab -u <tuoutente> -l

John

cn73
16-12-2003, 11:36
Altra cosa : se faccio "man contrab" mi dice "no manual for contrab" e se lancio "contrab" mi dice "command not found"

E ha ragione... infatti il comando è crontab


The crontab File Entry Format

A crontab file contains entries for each cron job. Entries are separated
by newline characters. Each crontab file entry contains six fields
separated by spaces or tabs in the following form:

minute hour day_of_month month weekday command

These fields accept the following values:

minute 0 through 59

hour 0 through 23

day_of_month 1 through 31

month 1 through 12

weekday 0 through 6 for Sunday through Saturday

command a shell command

You must specify a value for each field. Except for the command field,
these fields can contain the following:

* A number in the specified range. To run a command in May,
specify 5 in the month field.

* Two numbers separated by a dash to indicate an inclusive range.
To run a cron job on Tuesday through Friday, place 2-5 in the weekday
field.

* A list of numbers separated by commas. To run a command on
the first and last day of January, you would specify 1,31 in the day_of_month
field.

* An * (asterisk), meaning all allowed values. To run a job
every hour, specify an asterisk in the hour field.

Note: The specification of days may be made by two fields (day of
the month and day of the week). If you specify both as a list of elements,
both are adhered to. For example, the following entry:

0 0 1,15 * 1 command

would run command on the first and fifteenth days of each month, as
well as every Monday. To specify days by only one field, the other
field should contain an * .

Per farlo ogni 5 minuti fa come ti ha detto john

The X
18-12-2003, 23:25
Originariamente inviato da cn73
E ha ragione... infatti il comando è crontab
Per farlo ogni 5 minuti fa come ti ha detto john

eh eh

Cmq ho sia cron che crontab installato.....

Qlc mi saprebbe dire come mai Kcron NON funziona ?

Sarebbe molto + comodo e semplice poterlo vedere graficamente...

/\/\@®¢Ø
19-12-2003, 09:30
(da eseuire al posto di xmule stesso)


#!/bin/sh
while test 1 : xmule ; done


Cosi' ogni volta che xmule si pianta (abbastanza spesso :rolleyes: ) riparte subito :D.

The X
19-12-2003, 16:05
Originariamente inviato da /\/\@®¢Ø
(da eseuire al posto di xmule stesso)


#!/bin/sh
while test 1 : xmule ; done


Cosi' ogni volta che xmule si pianta (abbastanza spesso :rolleyes: ) riparte subito :D.

Sto script qui dovrei poi sempre metterlo in cron vero ?

TU sai dirmi come mai il KCron nn funzia ?

Poix81
19-12-2003, 16:08
non devi metterlo in cron, ma lanciarlo al posto xmule.
Infatti e' un loop!

The X
19-12-2003, 16:38
Originariamente inviato da Poix81
non devi metterlo in cron, ma lanciarlo al posto xmule.
Infatti e' un loop!

ah.... ma è un loop che non finisce mai ? ed ogni quanto fa il controllo ?

Mason
19-12-2003, 17:01
il controllo sta proprio nella riga xmule
li lo script si ferma e da il controllo ad xmule
se questo esce per qualche motivo(penso anche se lo chiudi tu)
continua nel ciclo infinito cioe rilancia xmule

The X
20-12-2003, 02:51
Originariamente inviato da Mason
il controllo sta proprio nella riga xmule
li lo script si ferma e da il controllo ad xmule
se questo esce per qualche motivo(penso anche se lo chiudi tu)
continua nel ciclo infinito cioe rilancia xmule

Grazie.... appena mi crasha xMule provo a rilanciarlo con quello script ^_^

The X
21-12-2003, 19:15
/\/\@®¢Ø : Ho provato a lanciare il tuo comando MA mi da errore di sintassi....

AnonimoVeneziano
21-12-2003, 19:17
Hai provato aMule ??

Con la nuova versione 1.2.1 non mi si inchioda da 1 giorno e mezzo (il max che ho provato per ora ) , se usi Amule non dovresti + avere bisogno di sto script :D

Ciao

The X
21-12-2003, 19:29
Originariamente inviato da AnonimoVeneziano
Hai provato aMule ??

Con la nuova versione 1.2.1 non mi si inchioda da 1 giorno e mezzo (il max che ho provato per ora ) , se usi Amule non dovresti + avere bisogno di sto script :D

Ciao

Non lo provato anke se voglio farlo MA in ogni caso mi servirebbe sempre avere un monitor perchè capita che sto via diversi giorni da casa e se mi si inchiode sarebbe un pecccato....

/\/\@®¢Ø
21-12-2003, 19:30
#!/bin/sh
while test 1 ; do xmule ; done

avevo dimenticato il do...

AnonimoVeneziano
21-12-2003, 19:57
Ah, The X , ho scoperto che AMULE ha il WEB SERVER .

Attivarlo è complicatuccio , ed è ankora in fase sperimentale , però puoi trovare le info qua :)

http://amule.sourceforge.net/phpBB2/viewtopic.php?t=8

Ciao

The X
21-12-2003, 21:51
Originariamente inviato da /\/\@®¢Ø

#!/bin/sh
while test 1 ; do xmule ; done

avevo dimenticato il do...

Proverò al prossimo crash ^_^

The X
21-12-2003, 21:54
Originariamente inviato da AnonimoVeneziano
Ah, The X , ho scoperto che AMULE ha il WEB SERVER .

Attivarlo è complicatuccio , ed è ankora in fase sperimentale , però puoi trovare le info qua :)

http://amule.sourceforge.net/phpBB2/viewtopic.php?t=8

Ciao

Se solo potessi provare Linux sui dischi SATA proverei subito amule....

Vorrei mettere linux sul mio desktop PC ma nn riesco a trovare info su come mettere linux su sto pc.....

The X
21-12-2003, 22:18
Originariamente inviato da #!/bin/sh
E usare i daemontools? http://cr.yp.to/daemontools.html

Senti.... ho installato questo daemontools MA come minchia funziona ? ^_^

#!/bin/sh
23-12-2003, 10:04
http://cr.yp.to/daemontools/faq/create.html#install

The X
23-12-2003, 13:35
Originariamente inviato da #!/bin/sh
http://cr.yp.to/daemontools/faq/create.html#install

ah ecco.... grazie ^_^