Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2852 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [MERCI RESOLU] shell sh....AWK grace au melange d'idees

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MERCI RESOLU] shell sh....AWK grace au melange d'idees

n°189441
kuroineko
je mamgerais bien un truc la..
Posté le 04-08-2002 à 00:57:02  profilanswer
 

Bonjour  
 
j'ai un souci, je voudrai pouvoir ecrire un script Shell sh qui tuerai des processus lances...
 
tels que par exemple
PID PPID
1    
2    1
3    2
4    3
5
6    5
7    6
8
9
10   9
 
et ne tuer que les 5 6 & 7 par exemple selon la commande
 
je penssais recuperer ca par
ps -ef | grep commande
PID PPID
5          commande
6    5     souscommande
7    6     truc
11         ps -ef | grep command
 
TO_kill=`ps -ef |grep $1`
kill $TO_kill
 
mais voila comment faire ca proprement et surtout sans couper un process innocent qui n'a rien a voir...


Message édité par kuroineko le 04-08-2002 à 23:27:15

---------------
[:kuroineko] Francois.P tel: (+33)617230820 http://www.ifrance.com/fpussault  fpussault@caramail.com
mood
Publicité
Posté le 04-08-2002 à 00:57:02  profilanswer
 

n°189513
JyB
Posté le 04-08-2002 à 14:02:39  profilanswer
 

kuroineko a écrit a écrit :

Bonjour  
j'ai un souci, je voudrai pouvoir ecrire un script Shell sh qui tuerai des processus lances...
et ne tuer que les 5 6 & 7 par exemple selon la commande




 
Il y a plein de façons (à modifier suivant la tronche de la sortie de ta commande ps)
 

Code :
  1. ps -U $USER |grep $commande|cut -c1-6|xargs kill -9


 
Ou encore :

Code :
  1. ps -U $USER -o pid,args |awk "/${commande}/ {print $\1}"|xargs kill -9


 
Bref, avec un peu d'imagination on trouve 2 milliards de façons.
 
 
oops, je réponds pas du tout à la question :)


Message édité par JyB le 04-08-2002 à 14:17:26
n°189533
JyB
Posté le 04-08-2002 à 15:27:37  profilanswer
 

kuroineko a écrit a écrit :

Bonjour  
j'ai un souci, je voudrai pouvoir ecrire un script Shell sh qui tuerai des processus lances...
 
mais voila comment faire ca proprement et surtout sans couper un process innocent qui n'a rien a voir...




 
Bon, maintenant que j'ai compris la question :) je peux répondre : il suffit de faire un parcours de l'arbre méthode gros porc :)
 
Bon, il te faudras sans doute modifier tout ça pour l'adapter au ps et au awk de ton système mais c'est l'idée (et ça fonctionne en plus !)
 
Pour la selection du bon process c'est pénible parce que un grep bête ne fonctionne pas à tous les coups, avec un peu de malchance le grep courant se retrouve dedans :( du coup il faut faire une sélection un peu stricte
 
Le code suivant t'affiche la liste des pids des processus étant commande ou descendant de commande (si tu l'appelle ./plop.sh commande par exemple).
 
Il te suffit de faire un  

Code :
  1. ./plop.sh commande|xargs kill -9


pour les buter tous.
 

Code :
  1. #! /bin/sh
  2. PIDS=`ps -ax -o pid,args|grep "^ *[0-9]* $1 \$"|cut -c1-6`
  3. doit () {
  4.     ps -ax -o pid=,ppid=|awk "BEGIN {n=0;i=1;t[0]=$1;}
  5. END {
  6.     do {
  7. oi=i;
  8. for (m in pid)
  9.     for (j in t)
  10.  if (t[j] == ppid[m]) {
  11.      t[i++]=pid[m];
  12.      delete pid[m] ;
  13.      delete ppid[m] ;
  14.      break ;
  15.  }
  16.     } while (oi!=i) ;
  17.     for (j in t)
  18. printf (\"%d\n\", t[j]);
  19. }
  20. {
  21.     pid[n]=\$1;
  22.     ppid[n++]=\$2;
  23. }
  24. "
  25. }
  26. for p in $PIDS; do doit $p; done


 
edit: j'avais laissé un truc qui sert à rien


Message édité par JyB le 04-08-2002 à 15:45:25
n°189569
kuroineko
je mamgerais bien un truc la..
Posté le 04-08-2002 à 19:06:25  profilanswer
 

Merci je crois que j'ai compris et devrai maintenant pouvoir utiliser ton idee.
 


---------------
[:kuroineko] Francois.P tel: (+33)617230820 http://www.ifrance.com/fpussault  fpussault@caramail.com
n°189600
kuroineko
je mamgerais bien un truc la..
Posté le 04-08-2002 à 21:37:47  profilanswer
 

kuroineko a écrit a écrit :

Merci je crois que j'ai compris et devrai maintenant pouvoir utiliser ton idee.
 
 




listproc=`ps -ef | grep aol | awk '{print $2}'`
kill `echo $listproc | awk '{print $1 $2 $3 $4 $5 $6 $7 $8 $9 \
}'`
.... # script initial
 
et ca ca marcherai ?? [:sandblast]  

n°189651
kuroineko
je mamgerais bien un truc la..
Posté le 04-08-2002 à 22:25:13  profilanswer
 

par exemple ca : ?
 
.....#debut de script
for TOdo_kill in `ps -axu | grep aol | awk '{print $2 }'`
do
 kill -9 $TOdo_kill  
done
# script de demarrage
pengaol -Connect $AOLUSERNAME & >> \
     /var/log/aol.log 2>&1
 
------------------------------------------
 
comme aol coupe grossomodo toutes les 23~24heures, il me suffirait alors de mettre le script dans le crontab pour le tuer/redemarrer toutes les 12 heures ?:
0 8,20 * * * /home/operator/aol.sh
 
------------------------------------------
 
 [:yamusha]  
ca devrait fonctionner non ?
ensuite il me suffirait de configurer sshd, et trouver un soft qui gere le dns/ip-dynamique pour pouvoir me connecter de l'exterieur avec le compte userstd...userstd est un user du groupe std qui a tres peu de droits sur la machine.
 
ou c'est une mauvaise idee ?


---------------
[:kuroineko] Francois.P tel: (+33)617230820 http://www.ifrance.com/fpussault  fpussault@caramail.com

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [MERCI RESOLU] shell sh....AWK grace au melange d'idees

 

Sujets relatifs
appeler une fct JS apres selection d`un choix multiple ? [RESOLU][MFC & Shell] SHGetFolderPath, mais où est-elle !
[HTML] Dans une frame........... [RESOLU MAIS PAS BEAU][PHP] Je ne pige pas ce message d erreur........ [RESOLU]
[PHP] je ne capte pas !! [RESOLU] MERCI Mais ya encore une question ![PHP / MYSQL ] Comment qu on fait avec ce type de requetes ? [RESOLU]
savez vous faire ça?? (php+js+autre inside) [résolu][RESOLU] - [C++][ruby] extensions ou elipses
[PHP] Recup du nom de la page appelant le script...... [RESOLU] 
Plus de sujets relatifs à : [MERCI RESOLU] shell sh....AWK grace au melange d'idees


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)