Linux : Savoir si un process toure ou pas

guigeek -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je cherche sous Linux (en fait sur un Synology) à ne lancer une commande que si un process ne tourne pas... Je ne connait pas son PID, uniquement sa description

Donc en gros, je lance mon script via le cron. Si "wget" tourne, il ne fait rien. Si "wget" ne tourne pas, il execute une commande.

J'ai pensé à un

if [ps -ax | grep 'wget']
then
wget http://www.site.org/rep/01/fichier.txt
fi

Est ce que ca a une chance de marcher ? (je n'ai pas accès a mon Linux avant demain soir...)

Merci par avance

Guigeek

7 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Non, aucune ;-(

    En fait c'est pas la commande qu'il faut tester, mais le code retour de cette commande ($?).
    De plus il existe une commande sous GNU/Linux qui combine la recherche "grep" d'un processus via la commande "ps", elle s'appelle "pgrep".
    [tmpfs]$ pgrep firefox-
    4120
    
    [tmpfs]$ echo $?
    0
    
    [tmpfs]$ pgrep ftp
    [tmpfs]$ echo $?
    1
    [tmpfs]$
    Donc je suppose qu'un simple :
    pgrep wget
    retval=$?
    if [ "$retval" = 1 ]
    then
    wget http://www.site.org/rep/01/fichier.txt
    fi 
    Si la commande n'est pas présente sur ton système, remplace la par :
    ps -e | grep wget
    ;-))
    8
  2. guigeek
     
    Ca Marche.

    T'est un dieu.

    Je t'aime.

    Bon, je m'emballe mais j'y ai passé trop de temps pour pas m'enflammer...

    C'est comme ca qu'on apprends, mais quand même ...

    Encore merci
    1
  3. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    bien joué la ruse !
    1
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Ouais, mais malheureusement elle n'est pas de moi ;-((

      Mais bon, le jour où je l'ai lue, j'ai mis ça dans une de mes rares cases mémoires qui fonctionnent ;-)))
      0
  4. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    je suis pas certain de la syntaxe, mais je ne voi pas pourquoi ça ne fonctionnerai pas.
    Par contre, attention aux : *wget*
    tu peux l'avoir dans windowget par exemple.
    peut être un grep ' wget ' fonctionnerzai mieux
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. guigeek
     
    Merci pour faire avancer le shmilblick...

    La commande n'est pas présente, dont j'utilise ta seconde solution.

    problème, il se trouve lui même et me renvoie deux lignes...

    ps -e | grep wput
    9779 root 620 S wput
    11155 root 216 S grep wput

    as tu une idée ?

    Merci par avance
    0
  7. guigeek
     
    pour info, j'ai fait le test là avec wput au lieu de wget, mais le principe est le même...
    0
  8. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    ps -e | grep w[p]ut 
    ;-))
    -1