Pbs sur commandes shell

Résolu/Fermé
niceLP - 13 mai 2007 à 22:06
 niceLP - 20 mai 2007 à 23:15
j'aimerais créer un affichage sur l'ensemble des utilisateurs connectés en affichant leurs PID TTY TIME et CMP correspondant , j'ai un probleme avec la commande ps u -a qui me donne uniquement les numéros de users et pas les noms complets .j'aimerais obtenir ceci ; si vous avez des idées merci

albert durant
PID TTY TIME CMD
23445 pts/3 00:00:00 ls
43870 6 pts/3 00:00:00 vim
4309 pts/7 00:00:00 ls
8368 pts/& 00:00:00 vim
43443pts/2 00:00:00 ps

gerard dupont
PID TTY TIME CMD
4343 pts/8 00:00:00 cp
433 pts/9 00:00:00 ps
.
.
.

lucien sylvian
.
.
.

4 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
13 mai 2007 à 22:47
Salut,
#! /bin/bash

for name in $(ps auc | sed '1d' | awk '{ print $1 }'| sort | uniq)
do
grep "$name" /etc/passwd | cut -d: -f5
ps | head -1 | awk '{ printf "%s \t%s \t%s \t%s\n",$1,$2,$3,$4 }'
ps auc | grep "$name" | awk '{ printf "%s \t%s \t%s \t%s\n",$2,$7,$10,$11 }'
echo
done
Il y a sûrement plus optimisé... ;-))
0
génial !!! ça marche maitenant j'ai plus qu'à eplucher tout ça
encore merci Jipicy !
0
est ce possible de faire cet exo mais sans awk ni sed seulement??merci
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 897
20 mai 2007 à 20:54
#! /bin/bash

for name in $(ps auc | grep -v USER |cut -d " " -f 1 | sort | uniq)
do
grep "$name" /etc/passwd | cut -d: -f5
set $(ps | head -1)
printf "%s$1%s\t$2%s\t$3%s\t$4\n"
(
OLDIFS=$IFS
IFS=$'\n'
for line in $(ps auc | grep "$name")
do
IFS=$OLDIFS
set $(echo $line)
printf "%s$2\t%s$7\t%s${10}\t%s${11}\n"
done
)
echo
done
;-))
0
merci bien , ça marche super
0