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