Commandes Linux awk

Résolu
ece Messages postés 4 Statut Membre -  
 Spip -
Bonjour a tous.

Je suis en train de réaliser un petit script destiné a lancer automatiquement un logiciel de captures réseaux.

Mon script est pratiquement validé mais je bute sur un dernier soucis :

Je souhaites réaliser une recherche d'un processus précis pour pouvoir le détruire.

Cela me donne une ligne de commande de ce style :

ps -e | grep tcpdump | awk '{z=$1}' | kill -9 $z

Pour le détail, je filtre les processus pour extraire celui que je recherche (tcpdump) en utilisant le grep, j'extrait le numéro du processus en utilisant awk (cela fonctionne car j'ai pu vérifier qu'il me sortait le bon numéro en faisant la commande ps -e | grep tcpdump | awk '{print $1}').

Cependant je ne parviens pas a mémoriser dans ma variable z ce numéro afin de pouvoir l'utiliser ensuite dans mon kill pour détruire mon processus !! J'ai pourtant l'impression que c'est syntaxiquement correct car les variables semblent s'utiliser ainsi mais le numéro de mon processus ne s'enregistre pas dans ma variable et le kill ne peut donc pas marcher car ma variable z reste vide ...

pourriez vous maider ? quest ce qui cloche dans mon script ??

merci d'avance pour votre aide
Configuration: Windows 2000
Internet Explorer 6.0

8 réponses

  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    pas besoin de awk pour faire ça
    killall tcpdump
    --
    lami20j
    1
  2. Denser
     
    Je ne suis pas sûr du tout mais il faut peut être rediriger la sortie de ton grep à l'aide du connecteur ">" vers ta commande kill, non?
    ce qui donnerais ceci: ps -e | grep tcpdump | awk '{z=$1}' > kill -9 $z

    Vraiment pas convaincu :(
    0
  3. ece Messages postés 4 Statut Membre
     
    non ca ne fonctionne pas ...

    je crois que le > redirige le résultat de mon awk dans un fichier et kill est un processus donc il va planter ...

    merci pour ta proposition quand meme ;)

    dautres idées ?
    0
  4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,
    kill -9 $(ps -e | grep tcpdump | awk '{print $1}')
    ;-))
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    kill -9 $(pgrep tcpdump)
    ;-))
    0
  7. thorn
     
    ou bien
    pkill tcpdump

    pour verifier avant si le processus existe :
    pgrep tcpdump
    tester si on peut envoyer un signal au processus :
    kill -0 PID avec PID renvoyé par pgrep
    voila , cela evite de faire des grep et des awk.
    0
  8. ece Messages postés 4 Statut Membre
     
    merci bcp pour vos réponses ;)

    ca fonctionne en effet !

    mercu bcp pour vos aide a tous :D

    ece
    0
  9. Spip
     
    meme si j'arrive tard, une slution pour faire ce que tu as commencé :

    kill $(ps -e | grep kmix| awk '{print $1}')

    je donne en argument à kill la valeur de la commande avec les pipes ;)
    0