Pbs sur commandes shell

Résolu
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
.
.
.
Configuration: Windows XP
Firefox 1.5.0.11

4 réponses

  1. Modérateur
    #! /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
    ;-))
    1. merci bien , ça marche super
  2. est ce possible de faire cet exo mais sans awk ni sed seulement??merci
    1. génial !!! ça marche maitenant j'ai plus qu'à eplucher tout ça
      encore merci Jipicy !
      1. Modérateur
        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é... ;-))