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

Shell et commandes GNU Discussion :

'ps -aux' sans sortie ?


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Février 2005
    Messages : 36
    Par défaut 'ps -aux' sans sortie ?
    Bonjour,

    j'essaye de faire un simple script Bash qui surveille la présence d'un autre script.
    Mon idée est de faire une boucle while avec un ps -aux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/bash
     
    while ! ps -auxf | grep "[c]ana.php" > /dev/null 2>&1 ; do
    #rien, tu attends !
    date >> /home/fichier.log
    echo "j'ai rien pour l'instant" >> /home/fichier.log
    sleep 5
    done
    Voilà, ce script fonction parfaitement si je le lance à la main.
    Mais lors du boot c'est init qui le lance (je le lance depuis rc.locale)
    et là, ps -aux ne sort rien du tout !!

    Savez vous pourquoi ? Je me doute qu'il y a quelque chose avec l'environnement mais quoi ?

    J'ai fait des recherche sur 'ps' mais je n’aboutis pas !

    Merci

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 504
    Par défaut
    Hello,

    Si tu utilises les options « auxf », je crois qu'il ne faut pas mettre de « - » (syntaxe du ps de BSD).

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Par défaut
    Tu peux aussi t'éviter le ps | grep grâce à la commande pidof

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 679
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 679
    Par défaut
    ou pgrep.

    mais puisque tu connais le nom exact de la commande, pourquoi pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    until ps h -C cana.php >/dev/null 2>&1
    do 
       date >> ~/fichier.log
       sleep 5
    done
    ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 103
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Si tu utilises les options « auxf », je crois qu'il ne faut pas mettre de « - » (syntaxe du ps de BSD).
    Effectivement, il faut savoir qu'il y a 2 syntaxes (cf. man ps)... et il faut choisir!
    Soit ps -ef (style classique) soit ps aux (style BSD), mais pas 'ps -auxf'!

    Il se peut aussi qu'il y ait plusieurs ps sur ta machine. Pour savoir lequel est utilisé par ton script, ajoute 'which ps' au début su script.

    Pour ceux qui pourraient s'étonner de voir 'grep "[c]ana.php"' plutôt que le parfaitement équivalent 'grep "cana.php"' , c'est une astuce qui permet d'éviter le 'grep -v grep' (pour filtrer le process qui fait le grep).

    Sinon, les réponses utilisant pidof ou pgrep sont plus élégantes... mais probablement moins portables...

  6. #6
    Membre averti
    Inscrit en
    Février 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Février 2005
    Messages : 36
    Par défaut
    Bonjour,

    Désolé pour la réponse tardive,
    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    until ps h -C cana.php >/dev/null 2>&1
    do 
       date >> ~/fichier.log
       sleep 5
    done
    Je n'ai pas le bon fonctionnement avec ça.
    d'ailleurs quand je lance en ligne de commande je n'ai pas de sortie. Car je pense que ps réagit plutot à php5 qu'au script php lancé dans la ligne concernant pidof c'est la même chose ça fonctionne avec php5, mais pas du coup si j'ai deux scripts php lancés il n'y a plus de discrimination !

    Qu'en pensez vous ?

  7. #7
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 679
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 679
    Par défaut
    je suis surpris qu'on ne puisse pas mettre php en shebang.

    la façon dont est lancé le script, c'est comme si, pour un shell, on le lançait ainsi sh monScript, alors qu'en étant exécutable, et avec un shebang correct (#!/bin/sh) le script est exécuté ainsi <chemin/>monScript.

    donc on le retrouve par son nom.

    tu peux éditer le script pour lui ajouter un shebang PHP ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Par défaut
    Pourquoi ne mets-tu pas un fichier sémaphore dans ton script php?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $flock = '/tmp/php_flock';
    file_put_contents($flock, '');
    /* ton code php */
    unlink($flock);
    Tu n'as plus ensuite qu'à tester l'existence du fichier dans ton script shell.

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/08/2014, 16h55
  2. Réponses: 2
    Dernier message: 04/10/2011, 15h55
  3. tmap filtre sur jointure sans sortie
    Par Syphys dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 21/09/2010, 14h43
  4. Affectation du résultat d'une ps sans paramètre de sortie
    Par PERRIN38 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 22/08/2005, 15h43
  5. [LG] Exit sans sortie
    Par Belegkarnil dans le forum Langage
    Réponses: 1
    Dernier message: 28/06/2005, 10h49

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