Commandes Linux awk

Résolu/Fermé
ece Messages postés 4 Date d'inscription mardi 10 avril 2007 Statut Membre Dernière intervention 23 août 2007 - 22 août 2007 à 17:01
 Spip - 8 août 2008 à 23:12
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
A voir également:

8 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
22 août 2007 à 17:48
Salut,

pas besoin de awk pour faire ça
killall tcpdump
--
lami20j
1
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
ece Messages postés 4 Date d'inscription mardi 10 avril 2007 Statut Membre Dernière intervention 23 août 2007
22 août 2007 à 17:21
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
22 août 2007 à 17:22
Salut,
kill -9 $(ps -e | grep tcpdump | awk '{print $1}')
;-))
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
22 août 2007 à 17:24
kill -9 $(pgrep tcpdump)
;-))
0
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
ece Messages postés 4 Date d'inscription mardi 10 avril 2007 Statut Membre Dernière intervention 23 août 2007
23 août 2007 à 09:51
merci bcp pour vos réponses ;)

ca fonctionne en effet !

mercu bcp pour vos aide a tous :D

ece
0
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