1. #1
    Candidat au Club
    Homme Profil pro
    Responsable d'application
    Inscrit en
    juillet 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Responsable d'application

    Informations forums :
    Inscription : juillet 2016
    Messages : 3
    Points : 3
    Points
    3

    Par défaut Killer des processus selon leur PPID, C et nom

    Bonjour à tous,

    Je suis assez novice en UNIX, et je ne sais pas si ma demande est réalisable. J'ai une liste de process qui tournent et j'aimerais killer certains process après avoir appliqué plusieurs "filtres" (il faut que ces 3 conditions soient respectées obligatoirement) :

    - PPID différent de 1
    - C > 90
    - COMMAND contient une chaine de caractères précise

    Pour l'instant je liste mes process de la façon suivante : ps -ef |grep chaine_de_caracteres_recherchee et je kill les process qui correspondent aux deux premiers critères à la main...

    N'existerait-il pas un moyen pour écrire tout cela en une ligne, pour tout killer d'un coup ?


    Merci d'avance

  2. #2
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    novembre 2010
    Messages
    2 037
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : novembre 2010
    Messages : 2 037
    Points : 5 547
    Points
    5 547

    Par défaut

    salut,

    on peut peut-être envisager d'écrire un script rapidement, en awk par exemple :
    Code script.awk : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #!/usr/bin/awk -f
    NR > 1 &&             # on saute la premiere ligne d'output de ps
    $3 != BAD_PPID &&     # on non-match le ppid
    $4 > C_THRESHOLD &&   # on match le seuil d'utilisation cpu
    $0 ~ PATTERN {        # on match le pattern
       print $2           # on affiche uniquement le pid
    }

    et ensuite on l'invoque de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ps -ef | awk -vBAD_PPID=1 -vC_THRESHOLD=90 -vPATTERN="toto" -fscript.awk | xargs -r kill
    m'est avis qu'un script Perl permettrait un peu plus de finesse encore (en excluant son propre pid par exemple, en minimisant le nombre de processus créés etc. tout en garantissant une meilleure portabilité)
    sinon sans cette contrainte de C > n pgrep aurait probablement été un bon candidat

    note qu'on peut également tout faire tenir sur une ligne, mais elle ni très courte ni très lisible
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ps -ef | awk 'NR>1 && $3!=1 && $4>90 && /toto/ {print $2}' | xargs -r kill
    quoique...
    Avant donc que d'écrire, apprenez à penser.
    Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure.
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément.
                                                        - Nicolas Boileau, L'Art poétique

Discussions similaires

  1. [Flash MX] Supprimer des carte selon leurs valeurs
    Par Lenalyon dans le forum Flash
    Réponses: 1
    Dernier message: 01/09/2007, 12h18
  2. [CSH] ps filtrer les processus selon leur état
    Par dadzz77 dans le forum Linux
    Réponses: 2
    Dernier message: 08/08/2007, 15h18
  3. taille des textbox selon leur contenu
    Par christi dans le forum ASP.NET
    Réponses: 4
    Dernier message: 08/02/2007, 16h20
  4. Tuer des processus par leur nom
    Par tedparker dans le forum Access
    Réponses: 2
    Dernier message: 12/09/2006, 16h19
  5. Killer des processus
    Par kitsune dans le forum Linux
    Réponses: 6
    Dernier message: 19/04/2006, 12h34

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