Script en C Shell ---> besoin d'aide

Script en C Shell ---> besoin d'aide - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 17-04-2004 à 16:32:43    

Bonjour,
 
Je suis nouveau sur le site et j'aurai besoin d'un petit coup de main.
Je commence à programmer et j'aimerai réaliser un script en c shell qui prend en paramètre un numéro de processus et qui affiche tous les processus ancetres, depuis le père jusqu'au processus init.
Je suis complètement perdu, si quelqu'un paut m'aider.
D'avance merci


Message édité par berns le 17-04-2004 à 16:34:47
Reply

Marsh Posté le 17-04-2004 à 16:32:43   

Reply

Marsh Posté le 17-04-2004 à 18:43:18    

Pourquoi en csh et pas en bash?
Sinon pour retrouver le père d'un processus, tu peut essayer avec ps: ps -eo "%p %P" affiche le pid puis le ppis de chaque processus.

Reply

Marsh Posté le 17-04-2004 à 18:48:08    

Je pense avoir l'idée du script:
 
La commande ps permets de prendre les paramètres que j'ai
besoin cad
PID PPID COMM ( commande) et S (status du process pour les process ZOMBIE) .
L'idéé générale du script :
- faire ps  
- Rediriger la sortie sur un fichier  
- Chercher le processus dans le fichier avec la commande grep (check si le process existe)
- Placer la ligne du fichier dans une variable temporaire
- Une boucle while tant que je ne suis pas arrivé au
process 1 en utilisant la variable temporaire( ! Process 0)
- Dans la boucle faire swap pid et ppid et afficher le résultat
 
Voilà, mon gros problème c'est d'implémenter ça

Reply

Marsh Posté le 17-04-2004 à 19:00:45    

berns a écrit :

Je pense avoir l'idée du script:
 
La commande ps permets de prendre les paramètres que j'ai
besoin cad
PID PPID COMM ( commande) et S (status du process pour les process ZOMBIE) .
L'idéé générale du script :
- faire ps  
- Rediriger la sortie sur un fichier  
- Chercher le processus dans le fichier avec la commande grep (check si le process existe)
- Placer la ligne du fichier dans une variable temporaire
- Une boucle while tant que je ne suis pas arrivé au
process 1 en utilisant la variable temporaire( ! Process 0)
- Dans la boucle faire swap pid et ppid et afficher le résultat
 
Voilà, mon gros problème c'est d'implémenter ça  


Inutile de chercher la process avec un grep, le switch -p permet de choisir le processus à afficher avec le PID.
 

Reply

Marsh Posté le 17-04-2004 à 20:02:59    

un truc dans ce goût là ?

Code :
  1. #!/bin/sh
  2. old=$1
  3. echo -n "$old "
  4. echo -n "(`ps h -o %c $old`)"
  5. while [ $old != 1 ]
  6. do
  7. new=`ps h -o %P $old`
  8. echo -n " -> $new "
  9. echo -n "(`ps h -o %c $new`)"
  10. old=$new
  11. done
  12. echo


 

-=[jorge@blackknight]=(~)> ./test.sh 6084
6084 (mozilla-bin) ->  5818 (enlightenment) ->  5432 (gdm) ->  1775 (gdm) ->     1 (init)


 

Reply

Marsh Posté le 17-04-2004 à 20:06:31    

le gros du truc c'est"ps h -o %P" où:
le h permet de faire disparaitre la ligne d'entête (pas de légende des colonnes)
le -o permet de personnalisé la sortie
puis %P pour le ppid (et %c pour la commande)

Reply

Marsh Posté le 17-04-2004 à 22:49:22    


neriki et 911GT3--->  Merci beaucoup, je vais essayer comme ça ;)
 


---------------
Updating signature... Please wait
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed