Rechercher : dans
Par :

Commandes Linux awk

Dernière réponse le 8 aoû 2008 à 23:12:10 ece, le 22 aoû 2007 à 17:01:59 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « Commandes Linux awk » dans :
Commandes Linux Voir Tableau des principales commandes Linux Commande Description équivalent DOS ls liste le contenu d'un répertoire dir cd change de répertoire cd cd .. répertoire parent cd.. mkdir crée un nouveau...
Kit de survie Linux VoirMémo des commandes usuelles Vous trouverez ci-dessous un mémento des commandes Linux usuelles (ou pas) qu'on a tous en tête, plus ou moins, mais dont on oublie souvent un bout de syntaxe, quand ce n'est pas la syntaxe entière, et, pour certaines...
Création d'une commande sous Linux VoirLe monde Unix/Linux n'est pas toujours facile à prendre main. Et parfois pour parvenir à ses fins, on est bien heureux de savoir réaliser une petite commande ! Voyons ce qu'est une commande et comment cela se passe ! *Qu'est-ce qu'une commande...
[Linux] Utiliser la commande 'su' VoirPréambule Se connecter sous un autre ID utilisateur avec "su" Démarrer un nouveau shell de connexion avec "su -" Revenir au shell précédent Suspendre le shell du compte root Notes Préambule La commande "su" (Switch User, appelée plus...
Linux - Gestion des utilisateurs VoirPremier pas de l'administrateur Lorsque diverses personnes ont accès à un système, il est nécessaire que l'administrateur système gère les utilisateurs. Pour ceci, les commandes usuelles et les fichiers à configurer doivent être connus. Les...
Linux - L'éditeur Vi VoirIntroduction à Vi Vi est un des éditeurs de texte les plus populaires sous les systèmes de type Unix (avec Emacs et pico) malgré son ergonomie très limitée. Sous Linux il existe une version libre de Vi appelée Vim (Vi Improved). Vi (prononcez...
Introduction à Linux VoirHistorique et génèse de Linux Linus B.Torvalds est à l'origine de ce système d'exploitation entièrement libre. Au début des années 90, il voulait mettre au point son propre système d'exploitation pour son projet de fin d'étude. Linus Torvalds...

1

Denser, le 22 aoû 2007 à 17:17:07

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 :(

Répondre à Denser

2

ece, le 22 aoû 2007 à 17:21:27

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 ?

Répondre à ece

3

jipicy, le 22 aoû 2007 à 17:22:23

Salut,

kill -9 $(ps -e | grep tcpdump | awk '{print $1}')
;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

4

jipicy, le 22 aoû 2007 à 17:24:30

kill -9 $(pgrep tcpdump)
;-)) Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

5

lami20j, le 22 aoû 2007 à 17:48:51
  • +1

Salut,

pas besoin de awk pour faire ça

killall tcpdump
--
lami20j

Répondre à lami20j

6

thorn, le 23 aoû 2007 à 00:17:46

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.

Répondre à thorn

7

ece, le 23 aoû 2007 à 09:51:24

Merci bcp pour vos réponses ;)

ca fonctionne en effet !

mercu bcp pour vos aide a tous :D

ece

Répondre à ece

8

 Spip, le 8 aoû 2008 à 23:12:10

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 ;)

Répondre à Spip