Pbs sur commandes shell

Résolu
niceLP -  
 niceLP -
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. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
  2. niceLP
     
    génial !!! ça marche maitenant j'ai plus qu'à eplucher tout ça
    encore merci Jipicy !
    0
  3. niceLP
     
    est ce possible de faire cet exo mais sans awk ni sed seulement??merci
    0
  4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    #! /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
    1. niceLP
       
      merci bien , ça marche super
      0