IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Vérifier si un processus est actif


Sujet :

Langage Perl

  1. #21
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Points : 208
    Points
    208
    Par défaut
    Et en shell ton teste ne fonctionne pas non plus.
    J'ai pris ton 1er test chez moi avec httpd au lieu de csup et voilà ce que ça donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ~/trash$ pidof httpd
    23363 23362 23361 23360 23359 23357
    ~/trash$ if [ ' ' != "`pidof httpd`" ]; then echo "updating";fi
    updating
    ~/trash$ su -c 'killall -9 httpd'
    Password:
    ~/trash$ pidof httpd
    ~/trash$ if [ ' ' != "`pidof httpd`" ]; then echo "updating";fi
    updating
    que httpd est en marche ou pas il affiche toujours updating

  2. #22
    Membre chevronné
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Points : 2 004
    Points
    2 004
    Par défaut
    Bonjour,

    Je pense également qu'au lieu de chercher une solution à ton problème il faudrait l'exprimer en français que l'on vois ce que l'on peut faire pour toi. Personnelement je ne comprend pas vraiment et je n'arrive donc pas à te donner de solution.

    Donc peux-tu faire ça histoire que tout soit clair ?

  3. #23
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Je suis au regret de t'annoncer que le statut reste toujours sur updating quelque soit le test mais ton raisonnement est le bon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/bin/sh
     
    pidcsup="csup"
     
    if [ '' != "`pidof $pidcsup`" ]
          echo "running"
    else
          echo "stopping"
    fi
    Mon script shell avec csup fonctionne mais pas en perl

    L'histoire, tu dois la connaître, si tu as lu le début

    Les explications:


    - Le fichier de log est abscent, j'affiche "unavailable"
    - Le fichier de log est vide, j'affiche "standby"
    - Le processus est actif, j'affiche normelement "updating"
    - Le fichier de log n'est pas vide, j'affiche son contenu

  4. #24
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Points : 208
    Points
    208
    Par défaut
    Exactement.

    La question qui se pose : Quand veux tu tester

    - Le fichier de log est abscent, j'affiche "unavailable"
    - Le fichier de log est vide, j'affiche "standby"
    - Le fichier de log n'est pas vide, j'affiche son contenu

    ?

    Quand le processus est actif ou inactif?

    Oui, j'ai lu le début, mais ce n'est pas claire, sinon je n'aurais pas posé la question?

    Je ne pense pas qu'il y a des choses qu'on puisse faire en shell et pas en Perl.

    Comme je te l'ai demandé dans un de mes messages, affiche ici le résultat de tes tests en shell avec toutes les situations.

  5. #25
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Il ne faut pas dire que mon script shell cité un peu plus haut ne fonctionne pas. Je suis sous FreeBSD et cela fonctionne correctement. Je ne vais pas venir sur le forum perl avec un script de merde. J'essaye de faire en sorte qu'il fonctionne avant de le réécrire dans un langage différent. Ce que je peux remarquer c'est qu'on peut pas utiliser awk avec perl. Je pense que si c'était le cas, mon problème serait réglé depuis longtemps. Je vais repartir avec mon script shell et point barre mais il faut arrêter de dire que je ne suis pas clair. Tous les tests fonctionnes sauf celui avec pidof. Vu que je débute en perl, je ne pas être d'un grand secours.

    Merci

  6. #26
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Points : 208
    Points
    208
    Par défaut
    essai ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $cmd=`/bin/ps -ef | grep csup | awk '{ print \$2 }'`;

  7. #27
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par Olivier Regnier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/bin/sh
     
    pidcsup="csup"
     
    if [ '' != "`pidof $pidcsup`" ]
          echo "running"
    else
          echo "stopping"
    fi
    Sauf que dans tous tes scripts précédents tu avais écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [ ' ' != "`pidof $pidcsup`" ]
    et non :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [ '' != "`pidof $pidcsup`" ]
    Il me semble qu'il s'agit là d'une erreur, qui a été répétée depuis dans tous les script Perl (lami20j l'a fait remarquer, mais ça ne semble pas avoir été enregistré)...
    En bref :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    #! /usr/bin/perl
    use warnings;use strict;
     
    my $logfile="/var/log/pupd.log";
     
    if (`pidof csup` =~ m/\d/){  # si le processus est en marche
        print "updating\n";
    }elsif ( ! -e $logfile ){# si le fichier n'existe pas
        print "unavailable\n";
    }elsif ( -z $logfile ){# si le fichier existe mais est vide
        print "standby\n";
    }else {
        print `cat $logfile | awk '{ print \$6 }'`,"\n";
    }
    __END__
    devrait convenir si je ne me suis trompé

    --
    Jedaï

  8. #28
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Points : 208
    Points
    208
    Par défaut
    Tu est tombé dans la même piège que moi
    else if
    au lieu de elsif

  9. #29
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Bah oui, j'ai fait un copier-coller... et je n'ai corrigé que les problème de logique. En tout cas j'espère que celui-là marchera.

    --
    Jedaï

  10. #30
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Je suis très content de vous, le script fonctionne. J'ai vu qu'il y avait une petite erreur dans le premier script que j'ai posté mais c'est involontaire car sur ma machine, le code est correct. Merci encore à tous les deux

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [Batch] Vérifier si un processus est lancé ou non ?
    Par hackoofr dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 25/04/2014, 22h13
  2. Vérifier si un processus est lancé ou non
    Par AZzjeioafh dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 03/12/2009, 19h55
  3. Réponses: 5
    Dernier message: 20/07/2009, 18h04
  4. Vérifier qu'un démon est toujours actif
    Par GLDavid dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 16/03/2007, 22h23
  5. Vérifier si un process est actif
    Par Olivier Regnier dans le forum Linux
    Réponses: 3
    Dernier message: 10/03/2007, 02h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo