Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#26 Le 11/01/2008, à 18:43

Fake

Re : vérifier si une application est bien lancée et sinon la lancer.

En fait si effectivement news n'accepte pas de se lancer deux fois... et se bloque automatiquement tu n'as pas besoin de ce test... et il suffit de faire comme disait Alain.g... C'est le plus simple, le plus court, le moins de commandes exécutées donc moins de ressources bouffées je pense... (la je suis pas sur)

Sinon ben cron je connais pas...

sleep  permet de faire attendre pendant un certain temps... (info sleep dans un terminal pour les détails)

on rajoute donc la ligne :

sleep 5m

juste avant ou apres la ligne du ps... a chaque boucle on attend 5 minutes...

Hors ligne

#27 Le 11/01/2008, à 20:03

pmdzlineur

Re : vérifier si une application est bien lancée et sinon la lancer.

essaie tu verras wink


je ne suis pas informaticien, juste utilisateur un peu averti ;-)
http://www.freemedforms.com/fr/start
http://code.google.com/p/rapidcomptamed/
médecin volant, mais pas en même temps ;-)

Hors ligne

#28 Le 14/01/2008, à 16:28

moi_Totor

Re : vérifier si une application est bien lancée et sinon la lancer.

cron est préférable sinon, il faudrait le lancer à  chaque démarrage du pc (et en nohup de surcroit ou utiliser le fichier /etc/rc.local)

busterbel a écrit :

Merci à  vous tous Fake, nowan et Alain.g et les autres ...

Juste...

O๠je peux mettre le "sleep" (pour faire une pause je présume)...
ex : toutes les 5 minutes, le script vérifie si mon application news est active,
SI elle ne l'est pas (ou plus), ALORS le script la relance automatiquement. Qu'en pensez-vous ?
ou utiliser ... cron mais je ne sais pas comment çà  fonctionne et il diffère de koi par rapport à  "sleep" ?

Encore Merci à  vous,

Alain.g a écrit :
Fake a écrit :

Je dirais donc une combinaison des deux serait le mieux...

while true ; do 
ps -e | grep -q news || news &
done

surtout pas comme cela, la vérification se ferait en continu : il faudrait au moins ajouter "sleep" pour faire une pause (ou utiliser cron)

#29 Le 14/01/2008, à 16:38

busterbel

Re : vérifier si une application est bien lancée et sinon la lancer.

Bjr moi_Totor et merci pour tes commentaires... mais

que veux-tu dire en nohup ?
cron est preferable mais peux-tu m'expliquer un peu car je ne vois pas du tout ce que c'est cron ?!

moi_Totor a écrit :

cron est préférable sinon, il faudrait le lancer à  chaque démarrage du pc (et en nohup de surcroit ou utiliser le fichier /etc/rc.local)

Dernière modification par busterbel (Le 14/01/2008, à 16:38)


Busterbel
Newbie depuis le 30/12/07
Ubuntu 6.10-Athlon 2200+

Hors ligne

#30 Le 14/01/2008, à 16:58

Alain.g

Re : vérifier si une application est bien lancée et sinon la lancer.

busterbel a écrit :

cron est preferable mais peux-tu m'expliquer un peu car je ne vois pas du tout ce que

la documentation est la pour cela : http://doc.ubuntu-fr.org/cron

tu irais plus vite en cherchant un peu par toi-même wink


Xubuntu Karmic !

Hors ligne

#31 Le 14/01/2008, à 16:59

freebird

Re : vérifier si une application est bien lancée et sinon la lancer.

cron est preferable mais peux-tu m'expliquer un peu car je ne vois pas du tout ce que c'est cron ?!

Et dieu inventa la doc http://doc.ubuntu-fr.org/cron wink

que veux-tu dire en nohup

10 secondes de recherches google : "Exécuter un programme en le rendant insensible aux déconnexions." http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man1/nohup.1.html

Hors ligne

#32 Le 15/01/2008, à 08:38

busterbel

Re : vérifier si une application est bien lancée et sinon la lancer.

Merci à  vous freebird et Alain.g pour vos réponses et vos liens vers de la doc.
Je vais me pencher sur cette documentation de suite.
C'est super sympa de votre part.
@+ bonne journée,


Busterbel
Newbie depuis le 30/12/07
Ubuntu 6.10-Athlon 2200+

Hors ligne

#33 Le 15/01/2008, à 12:37

busterbel

Re : vérifier si une application est bien lancée et sinon la lancer.

Resalut

J'ai installé le paquet gcrontab pour pouvoir éditer ce fameux fichier crontab.

Après avoir lu la doc, je m'aperçois que CRON permet de programmer des tà¢ches et là , je ne suis pas sûr de tout que celà  réponde à  ma demande de départ çà d qu'il relance mon application news si elle devient inactive...

Ma demande au départ était de vérifier toutes les x minutes si mon application news était toujours active et si non, la redémarrer automatiquement...

J'ai créé un document sur mon bureau renews.sh avec çà  dedans :

#!/bin/sh
while true ; do 
ps -e | grep -q news || news &
sleep 5m
done

Je l'ai copié dans mon /home/monUser/
puis exécuté cette commande (pour qu'il soit exécutable)
chmod +x /home/monUser/renews.sh

et je l'ai exécuté via le terminal :
/home/monUser/renews.sh

Est-ce bon ?
Les 2 applications sont dans mon moniteur système (processus) :
news
et
renews.sh

Comment incorporer CRON dans mon fichier renews.sh au fait ?

Merci pour toute idée.


Busterbel
Newbie depuis le 30/12/07
Ubuntu 6.10-Athlon 2200+

Hors ligne

#34 Le 15/01/2008, à 13:49

Fake

Re : vérifier si une application est bien lancée et sinon la lancer.

pmdzlineur et moi_Totor avaient l'air de dire que le sleep était pas très propre comme solution... mais je ne sais pas pourquoi...

En tout cas je pense que si tu utilise cron tu n'a pas besoin du sleep... bref...

Pour programmer une tache on doit pouvoir la programmer toutes les 5 minutes, ca me parait pas une fonctionnalité ahurissante... :-) bref se renseigner sur CRON...

http://en.wikipedia.org/wiki/Crontab

avec un truc du genre :
[toutes les heures a pile ] renews.sh
[toutes les heures a 5] renews.sh
[toutes les heures a 10] renews.sh
[toutes les heures a 15] renews.sh
...

(tu veus pas faire toutes les 10 minutes finalement ??? :-)

[edit] : apres relecture en détail...
tu peux dire 0,5,10,15,20,25,30,35,40,45,50,55 * * * * renews.sh et hop ca marche il est lancé tous les jours toutes les heures a pile, 5, 10, et quart!!!

Dernière modification par Fake (Le 15/01/2008, à 13:52)

Hors ligne

#35 Le 15/01/2008, à 14:02

busterbel

Re : vérifier si une application est bien lancée et sinon la lancer.

Salut Fake alain.g freebird et les autres ...

Ok je crois piger...

le script renews.sh pour la vérif si l'application tourne toujours cà d si elle est toujours active ...
et la périodicité avec CRON, c bien çà  ?

J'ai modifié mon /home/monUser/renews.sh (j'ai enlevè sleep 5m)

#!/bin/sh
while true ; do 
ps -e | grep -q news || news &
done

ET

j'ai mis çà  dans mon crontab pour exécuter renews.sh toutes les 10 minutes :

*/10 *  * *  * /home/monUser/renews.sh

- cette syntaxe est-elle juste ?

- Comment peut-on vérifier que crontab est bien lancé ? Je ne vois pas de processus crontab dans mon moniteur système ?!

-Qu'en pensez-vous ?

Dernière modification par busterbel (Le 15/01/2008, à 16:25)


Busterbel
Newbie depuis le 30/12/07
Ubuntu 6.10-Athlon 2200+

Hors ligne

#36 Le 15/01/2008, à 16:30

busterbel

Re : vérifier si une application est bien lancée et sinon la lancer.

J'ai la forte impression que mon crontab n'est pas actif (voir post précédent)...

Comment peut-on vérifier que crontab est bien lancé ?
Je ne vois pas de processus crontab dans mon moniteur système ?! Normal ?


Busterbel
Newbie depuis le 30/12/07
Ubuntu 6.10-Athlon 2200+

Hors ligne

#37 Le 15/01/2008, à 17:18

eldadou38

Re : vérifier si une application est bien lancée et sinon la lancer.

Tu devrais avoir ceci pour savoir si ton crontab est OK :

polaris@Madness:/$ ps -ef | grep cron | grep -v grep
root      4587     1  0 Jan14 ?        00:00:00 /usr/sbin/cron

wink


In Ubuntu I trust

Hors ligne

#38 Le 15/01/2008, à 22:09

pmdzlineur

Re : vérifier si une application est bien lancée et sinon la lancer.

j'aurais tendance à  écrire dans le shell
while ! 'ps -e | grep -q news'
do
chemin/news
done

mais quand la condition est remplie, le shell s'arrête ?
D'ailleur c'est quoi news ?  wink

Dernière modification par pmdzlineur (Le 15/01/2008, à 22:12)


je ne suis pas informaticien, juste utilisateur un peu averti ;-)
http://www.freemedforms.com/fr/start
http://code.google.com/p/rapidcomptamed/
médecin volant, mais pas en même temps ;-)

Hors ligne

#39 Le 15/01/2008, à 22:20

Fake

Re : vérifier si une application est bien lancée et sinon la lancer.

Je sais pas mais ca a l'air d'etre un programme important a faire tourné 24/24 ... :-)

En tout cas on y est presque venu a bout...

Ta ligne de crontab me parait bien (mieux que la mienne d'ailleurs... )
Je pense que cette methode est plus propre que de laisser un script tourner en continu avec un sleep...

Bref si tu as bien le cron dans tes processus et ben ca a l'air de marcher...
essaye de killer news et tu verra bien si il est de nouveau lancé 5minutes apres .. :-)

Et si ca marche oublie pas d'éditer ton premier poste pour mettre un Résolu dans le sujet... :-)

Hors ligne

#40 Le 15/01/2008, à 22:28

Jos31

Re : vérifier si une application est bien lancée et sinon la lancer.

busterbel a écrit :

Salut Fake alain.g freebird et les autres ...

Ok je crois piger...

le script renews.sh pour la vérif si l'application tourne toujours cà d si elle est toujours active ...
et la périodicité avec CRON, c bien çà  ?

J'ai modifié mon /home/monUser/renews.sh (j'ai enlevè sleep 5m)

#!/bin/sh
while true ; do 
ps -e | grep -q news || news &
done

ET

j'ai mis çà  dans mon crontab pour exécuter renews.sh toutes les 10 minutes :

*/10 *  * *  * /home/monUser/renews.sh

- cette syntaxe est-elle juste ?

- Comment peut-on vérifier que crontab est bien lancé ? Je ne vois pas de processus crontab dans mon moniteur système ?!

-Qu'en pensez-vous ?

Il faut enlever la boucle si tu utilise cron. Dans ton script, le cron va se déclencher, et ton script va boucler en permanence en pompant d'ailleurs sans doute ton CPU de maniere importante. De plus toutes les 5 minutes un nouveau script va se lancer et boucler également...
En bref au bout de 15min ta machine aura du mal  smile

Il faut que tu mettes ceci dans ton script s'il est appellé par cron toutes les 5 minutes:

#!/bin/sh
ps -e | grep -q news || news &

#41 Le 15/01/2008, à 23:14

busterbel

Re : vérifier si une application est bien lancée et sinon la lancer.

Oui, j'arrive +/- au bout grâce à votre aide et au doc
malheureusement mon cron n'est pas dans mes processus !!!!
je pense que mon fichier crontab n'est pas au bon endroit ou ... pas lancé/activé correctement...
je ne vois pas de cron dans mon moniteur systeme

de plus j'ai plein de processus renews.sh en état "zombie" ou "en cours" à cause de la boucle je présume comme a dit Jos31

yess dès que c résolu (loin d'être fait), je modifierai le poste de départ, of course !

Fake a écrit :

Je sais pas mais ca a l'air d'etre un programme important a faire tourné 24/24 ... :-)

En tout cas on y est presque venu a bout...

Ta ligne de crontab me parait bien (mieux que la mienne d'ailleurs... )
Je pense que cette methode est plus propre que de laisser un script tourner en continu avec un sleep...

Bref si tu as bien le cron dans tes processus et ben ca a l'air de marcher...
essaye de killer news et tu verra bien si il est de nouveau lancé 5minutes apres .. :-)

Et si ca marche oublie pas d'éditer ton premier poste pour mettre un Résolu dans le sujet... :-)


Busterbel
Newbie depuis le 30/12/07
Ubuntu 6.10-Athlon 2200+

Hors ligne

#42 Le 15/01/2008, à 23:18

busterbel

Re : vérifier si une application est bien lancée et sinon la lancer.

Salut Jos31 !
J'ai ce souci là  exactement comme tu l'as décris !

1. Comment déclencher le cron correctement, je ne le vois pas dans mes processus de mon moniteur systeme ?!
et comment vérifier qu'il tourne bien ?

Je viens de voir que dans /etc/ il y a plusieurs sous-répertoires :
/cron.d/
/cron.daily/
/cron.hourly/
/cron.monthly/
/cron.weekly/

moi, si j'exécute la commande crontab -e, il m'ouvre un fichier dans
/tmp/crontab.NoGeUS/crontab
je l'ai édité et mis ce code

*/10 *  * *  * /home/monUser/renews.sh

donc, mon cron est en ce moment à  cette place ? bizarre ??!
Pense pas qu'il soit au bon endroit, qu'en pensez-vous ?

J'ai modifié mon script renews.sh, j'ai enlevé la boucle.

Merci d'avance.

Jos31 a écrit :

Il faut enlever la boucle si tu utilise cron. Dans ton script, le cron va se déclencher, et ton script va boucler en permanence en pompant d'ailleurs sans doute ton CPU de maniere importante. De plus toutes les 5 minutes un nouveau script va se lancer et boucler également...
En bref au bout de 15min ta machine aura du mal  smile

Il faut que tu mettes ceci dans ton script s'il est appellé par cron toutes les 5 minutes:

#!/bin/sh
ps -e | grep -q news || news &

Dernière modification par busterbel (Le 15/01/2008, à 23:48)


Busterbel
Newbie depuis le 30/12/07
Ubuntu 6.10-Athlon 2200+

Hors ligne

#43 Le 16/01/2008, à 12:37

Jos31

Re : vérifier si une application est bien lancée et sinon la lancer.

Pour vérifier que ton script se lance bien tu peux ajouter ceci a la fin de ton script:

#!/bin/sh
ps -e | grep -q news || news &
touch ~/running_at_`date +%k_%M_%S`

La derniere ligne (touch ...) va créer un fichier dans ton home directory qui se nomme running_at_HH_MM_SS (HH_MM_SS est la date de lancement)
Si le cron fonctionne tu devrait avoir un nouveau fichier dans ton répertoire a chaque fois que le prog se lance

Sinon pour lancer un programme s'il n'existe pas déja j'avais fait un autre script pour un programme, au cas ou tu en aurais besoin.

#!/bin/sh
prog=news
isRunning=`ps -edf | grep $prog | grep -v defunct | grep -v grep | awk '{print $2}'`
if [ "$isRunning" = "" ]
then
  $prog &
#else
  #echo Running
fi

Dernière modification par Jos31 (Le 16/01/2008, à 12:38)

Hors ligne

#44 Le 16/01/2008, à 13:33

busterbel

Re : vérifier si une application est bien lancée et sinon la lancer.

Merci Jos31 pour els explications mais mon ficheir crontab ne se lance pas.
Pas de processus cron dans mon moniteur système.

Ou dois-je mettre mon fichier crontab dans quel répertoire ?
et comment le lancer ?

Dans le répertoire /etc/ il y a plusieurs sous-répertoires :
/cron.d/ --> j'ai un fichier [b]ancron[/b] dans ce répertoire
/cron.daily/ --> j'ai 11 fichiers dans ce répertoire dont le fichier [b]0anacron[/b] ...
/cron.hourly/ --> 0 élément dans ce répertoire
/cron.monthly/ --> j'ai 3 fichiers dans ce répertoire dont 0anacron, scrollkeeper et standard
/cron.weekly/ --> j'ai 4 fichiers dans ce répertoire dont 0anacron

moi, si j'exécute la commande crontab -e, il m'ouvre un fichier dans
[b]/tmp/crontab.NoGeUS/crontab[/b]

je l'ai édité et mis ce code :
*/10 *  * *  * /home/monUser/renews.sh

Merci d'avance de ton aide.

Dernière modification par busterbel (Le 16/01/2008, à 13:47)


Busterbel
Newbie depuis le 30/12/07
Ubuntu 6.10-Athlon 2200+

Hors ligne

#45 Le 16/01/2008, à 18:51

Jos31

Re : vérifier si une application est bien lancée et sinon la lancer.

Crée un fichier run.sh dans ton home directory

gedit ~/run.sh

Dedans, met ce contenu:

#!/bin/sh
prog=news
isRunning=`ps -edf | grep $prog | grep -v defunct | grep -v grep | awk '{print $2}'`
if [ "$isRunning" = "" ]
then
  $prog &
fi

Ensuite il faut le rendre executable en tapant:

chmod a+x ~/run.sh

Ensuite lance crontab

crontab -e

puis ajoute un cron

# m h  dom mon dow   command
* * * * * ~/run.sh

Tape Ctrl + X puis O puis entrée pour sauver le fichier

Ensuite vérifie que le cron est bien sauvé:

crontab -l

La réponse doit etre:

# m h  dom mon dow   command
* * * * * ~/run.sh

Voila normalement toutes les minutes le script run.sh va etre lancé, et ton programme news sera lancé s'il n'est pas en cours d'execution.

Dernière modification par Jos31 (Le 16/01/2008, à 18:56)

Hors ligne

#46 Le 16/01/2008, à 19:51

busterbel

Re : vérifier si une application est bien lancée et sinon la lancer.

Salut Jos31, merci pour tout ton aide...
au fait, j'ai vérifié, crontab a bien l'air de fonctionner, il exécute bien le script selon l'intervalle de temps défini dans crontab.
Par contre, le script n'a pas l'air de fonctionner correctement...je m'explique :
le script genere bien un fichier qui se nomme "running_at_19_43_02" dans mon répertoire
mais il ne relance pas le processus news (qui se trouve dans /usr/local/bin/) automatiquement s'il n'est pas actif.
J'ai testé en killant/terminant le processus news mais il ne le relance pas automatiquement.
Si je comprend bien, cette commande n'a pas l'air de passer :

[b]ps -e | grep -q news || news &[/b]

Une idée pourquoi ?
A++ continue mes tests...

Jos31 a écrit :

Pour vérifier que ton script se lance bien tu peux ajouter ceci a la fin de ton script:

#!/bin/sh
ps -e | grep -q news || news &
touch ~/running_at_`date +%k_%M_%S`

Busterbel
Newbie depuis le 30/12/07
Ubuntu 6.10-Athlon 2200+

Hors ligne

#47 Le 16/01/2008, à 20:10

busterbel

Re : vérifier si une application est bien lancée et sinon la lancer.

Re Jos31 !
Oufff!!! Enfin, j'ai trouvé grà¢ce à  ta précieuse aide pourquoi il ne se lançait pas automatiquement ...
J'ai changé un paramètre dans le script :

prog=/usr/local/bin/news

et avec çà , il se lance de suite
Mon application news, puis la mettre autre part ?

Merci merci à  toi

Jos31 a écrit :
#!/bin/sh
prog=news
isRunning=`ps -edf | grep $prog | grep -v defunct | grep -v grep | awk '{print $2}'`
if [ "$isRunning" = "" ]
then
  $prog &
fi

Busterbel
Newbie depuis le 30/12/07
Ubuntu 6.10-Athlon 2200+

Hors ligne

#48 Le 16/01/2008, à 20:22

Jos31

Re : vérifier si une application est bien lancée et sinon la lancer.

busterbel a écrit :

Mon application news, puis la mettre autre part ?

Tout dépends de l'application mais le plus simple est de faire un lien symbolique:

ln -s /usr/local/bin/news /la/ou/tu/veux

Hors ligne

#49 Le 16/01/2008, à 20:33

busterbel

Re : vérifier si une application est bien lancée et sinon la lancer.

Merci encore une fois pour ta réponse rapide pour faire un lien symbolique.

J'ai encore une petite demande (la dernière)...concernant mon application.
Je t'explique :
Souvent, lorsque je relance mon application manuellement (ce qui est le cas aussi en automatique evidemment)...l'application est bien lancé bien entendu mais pas correctement (y a un petit bug dans l'application je précise) et donc je dois la killer (manuellement)

killall -9 news
ou
killall news

et puis j'attend un peu ... une dizaine de secondes

sleep 10

(je pense en linux)
et ensuite je la relance une seconde fois de nouveau simplement...

news

Comment intégrer çà  dans ton script run.sh ??

Donc, en résumé depuis le départ
si l'application est active, ok => on ne fait rien
si l'application n'est pas/plus active, on relance news ... sleep 30 sec ... on la kill ... on attend 10 secondes et on la relance définitivement
Comment intégrer çà  dans le script stp si tu pouvais me faire cette dernière faveur...
Au fait je comrpend pas très bien cette ligne là  et donc, je ne sais pas moi-même l'intégrer.

isRunning=`ps -edf | grep $prog | grep -v defunct | grep -v grep | awk '{print $2}'`
if [ "$isRunning" = "" ]
then
  $prog &
fi

Merci d'avance de ta coopération. A+

Dernière modification par busterbel (Le 16/01/2008, à 20:35)


Busterbel
Newbie depuis le 30/12/07
Ubuntu 6.10-Athlon 2200+

Hors ligne

#50 Le 16/01/2008, à 20:57

Jos31

Re : vérifier si une application est bien lancée et sinon la lancer.

isRunning=`ps -edf | grep $prog | grep -v defunct | grep -v grep | awk '{print $2}'`
if [ "$isRunning" = "" ]
then
  $prog &
  sleep 10
  killall -9 $prog
  $prog &
fi

Comme ca?
Pour le script en fait la variable isRunning recoit un numéro si l'application est lancée (son PID), sinon elle ne recoit rien. Si la variable est vide, on lance le prog

Hors ligne