Développement d'un Shell script

Fermé
etudiante - 6 mai 2011 à 12:17
mamiemando Messages postés 33135 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 juin 2024 - 6 mai 2011 à 15:15
Bonjour,

j'ai un problème de développement d'un Shell script il se peut qu'il parait facile mais comme chwi débutante en unix je le trouve un peu difficile et j'arrive pas à le résoudre si quelqu'un peut m'aider ça sera très gentil ,l'énoncé est comme suit :
Développer un Shell script qui permet de réaliser selon le choix de l'utilisateur l'une des taches suivantes:
*pour chaque processus (parmi tous les processus en cours), afficher sur le stdout le PID, le PPID ; la commande associée, l'état et le propriétaire.
*pour un utilisatuer défini par son nom ou son UID ,afficher sur le stdout les PID , les PPID et les commandes associés aux processus dont il est propriétaire
Le Shell doit offrir deux modes d'utilisation:un mode interactif(menu de choix , saisie des données ,..) ou un mode direct dans lequel on indique les info nécessaires (tache à effectuer , utilisateur ) à travers les arguments transmis au script lors de son exécution.
j'ai fait un ptt essai:

if (($# == 0))
then ps -ef | awk '{printf("PID:%s PPID:%s cmd: %s etat:%s proprietaire:%s \n", $2,$3,$8,$4,$1);'}

else

if (($# == 1))
then
name=$1
ps -ef |grep "$name"| awk '{printf("UID:%s PID:%s PPID:%s cmd:%s \n",$1,$2,$3,$8);}'
fi
fi



A voir également:

1 réponse

mamiemando Messages postés 33135 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 juin 2024 7 756
6 mai 2011 à 15:15
C'est en effet une manière de faire
- ps va te permettre de récupérer la liste des processus
- grep va permettre de mettre en place un filtre pour n'extraire que les lignes qui t'intéressent
- awk permet de remettre en forme la ligne extraite

Si tu regardes :

man ps


... tu verras que tu peux demander à ps de sortir exactement les colonnes qui t'intéressent et dans l'ordre qui t'arrange. En particulier extraire en première colonne l'utilisateur permettrait de mettre en place une expression régulière plus fine (dans ton cas, que se passe-t'il le jour où un processus porte le nom d'un utilisateur passé en paramètre ?).

ps -eo user,pid,ppid,command | grep "^root "


Le ^ signifie "commence par".
Tu noteras l'espace derrière root (ce qui éviterait d'extraire un utilisateur dont le login n'est pas root mais commence par "root...".)

Ensuite il ne reste plus qu'à remettre en forme le résultat avec awk comme tu l'as fait.

Bonne chance
0