You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

91 lines
2.1 KiB

#!/bin/bash
doc() {
cat << EOF >&2
Affiche le nombre de processus de chaque utilisateur possédant au moins
1 processus dans le système.
usage : \'basename $0\' \[ -h \]
-h : affiche cette aide.
EOF
#affiche (cat) tout ce qui est entre cat et EOF (End Of File == CTRL + D)
}
usage() {
doc
exit 1
}
# 1. Compte le nombre de processus de l'utilisateur dont le login est passé en argument.
# 2. $1 : le login.
# 3. stdout : le nombre de processus de l'utilisateur.
processOneUser() {
# Les remarques indiquées dans la fonction processAllUsers
# s'appliquent également à cette fonction
ps h -eo user | grep $1 | wc -l
}
# 1. Affiche le tableau (non trié) du nombre de processus par utilisateur.
# 2. Pas d'argument.
# 3. stdout : le tableau.
processAllUsers() {
# traitement
# ----------
# début
# L<-liste des utilisateurs possédant un processus en mémoire
# pour i élément de L faire
# n=nombre de processus de l'utilisateur i dans le système
# afficher "i n"
# fin pour
# fin
# Remarques :
# 1. pour obtenir la liste des propriétaire des processus, utilisez la
# commande : ps h -eo user
# 2. Pour éliminer les doublons d'une liste filtrez la avec la commande :
# sort -u.
local L
local i
local n
# ou local L i n=0
L=$(ps h -eo user | sort -u)
for i in $L; do
local n=$(processOneUser $i)
echo "$i $n"
done
}
toHTML() {
local L R
echo "<html>"
echo "<body>"
echo "<table border=\"1\">"
while read L R;do # ou read L
echo "<tr><td>$L</td><td>$R</td></tr>"
#echo $L | sed -re 's/^⁽[^ ]+) (.*)$/<tr><td>\1<\/td><td>\2<\/td><\/tr>/'
done
echo "</table>"
echo "</body>"
echo "</html>"
}
# Début du traitement des arguments.
while [ $# -ne 0 ]; do
case $1 in
-h|--help)
doc
exit 0
;;
*) usage
;;
esac
shift
done
# Fin du traitement des arguments.
processAllUsers | sort -t" " -k2 -r -n | toHTML > user.html