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 :

Awk et kill : comment faire?


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 340
    Par défaut Awk et kill : comment faire?
    Voila, j'ai dans un fichier des PID de processus en ligne sous forme
    12345 45698 45986 12456 36547

    je voudrais essayer de les tuer en utilisant un script awk.
    j'ai écrit ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    awk '{
    	for(i=0;i<=NF;i++){ 
    		system("kill -9 $0"); 
    		#printf("processus n° %d supprimé\n",$0);
    	} 
    }' monfichier;
    voila la sortie obtenue :
    sh: line 0: kill: sh: arguments must be process or job IDs
    sh: line 0: kill: sh: arguments must be process or job IDs
    sh: line 0: kill: sh: arguments must be process or job IDs
    sh: line 0: kill: sh: arguments must be process or job IDs
    sh: line 0: kill: sh: arguments must be process or job IDs
    sh: line 0: kill: sh: arguments must be process or job IDs
    sh: line 0: kill: sh: arguments must be process or job IDs
    sh: line 0: kill: sh: arguments must be process or job IDs
    sh: line 0: kill: sh: arguments must be process or job IDs
    sh: line 0: kill: sh: arguments must be process or job IDs
    sh: line 0: kill: sh: arguments must be process or job IDs
    sh: line 0: kill: sh: arguments must be process or job IDs
    rien n'est supprimé. et le fichier en entrée ne contient que 5 PID sur 1 lignes chacun, pourquoi autant de sorties?

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2007
    Messages : 552
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for i in "9282 9258"
    do
    	kill -9 $i
    done
    awk ne me semble pas obigatoire.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 340
    Par défaut
    ok, je vais essayer, mais pr ce type de for, il faut une structure en "11111 11111" ou en "22222\n22222\n" ??

  4. #4
    Membre chevronné Avatar de Pilru
    Homme Profil pro
    Dev ASP.NET/jQuery ; Admin ORACLE
    Inscrit en
    Septembre 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev ASP.NET/jQuery ; Admin ORACLE

    Informations forums :
    Inscription : Septembre 2007
    Messages : 491
    Par défaut
    Citation Envoyé par michaeljeru Voir le message
    ok, je vais essayer, mais pr ce type de for, il faut une structure en "11111 11111" ou en "22222\n22222\n" ??
    Par défaut, le séparateur est l'espace. Mais on peut le modifier via la variable IFS (Internal Field Separator).

  5. #5
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    Si ton fichier contient tous les pid sur une ligne : "12345 45698 45986 12456 36547", tu peux faire qqch comme ça (il y a d'autres manières) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for pid in `cat monFichier`;do
       kill -9 ${pid}
    done
    Si ton fichier contient un pid par ligne : "12345\n45698\n45986\n12456\n36547", tu peux faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    while read pid;do
       kill -9 ${pid}
    done < monFichier
    Et si ton fichier contient plusieur pid par ligne sur plusieurs lignes, tu peux combiner les deux (par contre même si mon exemple doit marcher, je suis presque certain qu'il existe une méthode plus efficace) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    while read ligne;do
        for pid in ${ligne};do
            kill -9 ${pid}
        done
    done < monFichier

  6. #6
    Membre émérite
    Avatar de Celelibi
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 087
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 087
    Par défaut
    La commande kill peut prendre plusieurs pid en une seul commande.
    Donc :
    La notation `` peut être remplacée par $() si le shell le supporte.

Discussions similaires

  1. kill et setuid, comment faire?
    Par LGnord dans le forum Administration système
    Réponses: 6
    Dernier message: 25/02/2014, 10h29
  2. Réponses: 1
    Dernier message: 26/03/2010, 13h04
  3. Réponses: 8
    Dernier message: 18/09/2002, 03h20
  4. Comment faire pour mettre l'ecran en veille ?
    Par March' dans le forum MFC
    Réponses: 6
    Dernier message: 29/08/2002, 14h25
  5. Comment faire pour créer un bitmap
    Par GliGli dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/04/2002, 15h41

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