Forum Linux.général j'aime pas les langages interprêtés ...

Posté par  (site web personnel) .
Étiquettes : aucune
0
27
jan.
2006
Pourquoi ?
Par exemple, avec gajim (un client jabber en python), lorsque je fais un ps -A ... il n'apparait nulle part gajim dans la liste ...
Si je veux faie un kill de gajim ... je dois faire un kill de python (en espérant qu'il n'y ait pas d'autres applications python que je risquerait de killer) ... Pourtant lorsque je fais un script shell, le nom de script apparaît bien dans la liste des processus (et non pas 'bash')

Alors, question ... comment faire pour repérer gajim dans ma liste des processus ? comment faire en sorte que 'killall gajim' me tue bien gajim ..?


( Bon, je prenais gajim ... mais ca m'arrive pour d'autres logiciels ... Enfin le problème que je peux avoir avec gajim plus précisément, c'est lorsque le programme qui gère la zone de notification quitte ... gajim reste lancé mais plus moyen de le faire apparaître.
Je dois donc le tuer et le relancer ... )
  • # man ps

    Posté par  . Évalué à 3.

    -f
  • # Exemple

    Posté par  (site web personnel) . Évalué à 3.

    Bah, tu peux par exemple faire comme ça :
    kill `ps aux | grep "gajim" | grep -v "grep" | awk '{ print $2 }'`
    Et si tu comptes t'en servir souvent, faire un alias...

    Enfin, envoyer un bug report sur gajim serait pas mal, si ce comportement se produit souvent.
  • # une solution plus générale ?

    Posté par  (site web personnel) . Évalué à 1.

    Je ne conaissait pas l'option -f de ps ... merci.
    mais en même temps, ce que j'aime bien avec l'option -A toute seule ... c'est que la ligne ps est courte et rentre sur n'importe quel terminal.
    Et en plus, je ne peux pas utiliser killall

    Ce que je me demande c'est pourquoi 'ps -A' m'affiche une ligne '.xsession' alors qu'il sagit ni plus ni moins d'un script shell ... alors qu'il ne m'affiche pas gajim qui lui est un script python ...?
    serait-ce quelquechose a faire dans l'interpreteur python (ou autre) ?

    Concernant gajim ... si j'ai besoin de le redémarrer ce n'est pas a cause de gajim ... mais souvent parce que je quite trayer (qui m'affiche mon system-tray) ... et donc toutes les applications qui y figuraient deviennent inacessibles ... et lorsque je relance trayer, elle ne réaparaissent pas (normal, on ne s'enregistre qu'une fois).
    • [^] # Re: une solution plus générale ?

      Posté par  . Évalué à 3.

      Avec un script comme ca

      #!/usr/bin/python
      while 1:
      x=4+3
      ps -A me donne bien une ligne avec test.py
    • [^] # Re: une solution plus générale ?

      Posté par  . Évalué à 5.

      Le nom affiché par ps -A est le premier élément de la ligne de commande ayant lancé le programme.
      Pour les langages interprétés, il y a deux cas possibles:

      1. l'interprétreur est lancé explicitement en lui passant en argument le programme. Par exemple:
      sh monscript.sh
      python monprog.py


      2. Le script est lancé directement:
      monscript.sh
      monprog.py

      Dans ce cas, le script doit être exécutable (chmod +x) et contenir le nom de l'interpréteur à utiliser dans la première ligne, sous la forme:
      #! path_complet_de_l_interpreteur.

      Dans le premier cas, ps -A affiche le nom de l'interpréteur, dans le second il affiche le nom du script.
      Si tu veux voir gajim.py plutôt que python dans ps -A, il ne te reste plus qu'à modifier gajim.py ;)
      • [^] # Re: une solution plus générale ?

        Posté par  . Évalué à 1.

        $ file /usr/share/gajim/src/gajim.py
        /usr/share/gajim/src/gajim.py: Bourne shell script text executable

        $ head -3 /usr/share/gajim/src/gajim.py
        #!/bin/sh
        ''':'
        exec python -OOt "$0" ${1+"$@"}
  • # Humour Humour

    Posté par  . Évalué à 1.

    Tu peux créer un petit script tout simple en Python qui te permet de faire ça.

    J'en ai pas trouvé mais ça ne doit pas être long.

    (ah... on me sussure à l'oreillette de regarder de plus près le titre du post..)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.