#!/bin/bash
if [ -e /tmp/Rep_Linux_Ubuntu ]; then # on teste l'existence du repertoire /tmp/Rep_Linux_Ubuntu
	rm /tmp/Rep_Linux_Ubuntu/*	# s'il existe, on supprime son contenu
else
	mkdir /tmp/Rep_Linux_Ubuntu # sinon, on le crée
fi
ps aux > /tmp/Rep_Linux_Ubuntu/retPS # on liste tous les processus puis on redirige l'affichage vers un fichier retPS dans le répertoire /tmp/Rep_Linux_Ubuntu
sed "/USER/d" /tmp/Rep_Linux_Ubuntu/retPS > /tmp/Rep_Linux_Ubuntu/retPS.tmp # pour que la comparaison > 200000 s'effectue correctement avec awk, on supprime via sed la première ligne qui est la légende de ps dans le fichier retPS juste créé. On redirige la sortie de sed dans un fichier temporaire
mv /tmp/Rep_Linux_Ubuntu/retPS.tmp /tmp/Rep_Linux_Ubuntu/retPS # On renomme le fichier temporaire contenant le résultat de sed (liste des processus sans l'en-tête) en lui redonnant le nom du fichier originel
echo -e "\nAujourd'hui : $(date +%Y/%m/%d\ %H:%M:%S) \n" # on affiche la date sous le format année/mois/jour heure:minute:seconde
awk '
	{ if($5 > 200000)
		{ printf("cmd:"$11"\tuser:"$1"\tCPU:"$3"\tRamVir:"$5"\tpid:"$2"\tétat:"$8"\n"); }
	}' /tmp/Rep_Linux_Ubuntu/retPS
# la commande awk est utilisée sur la liste des processus contenue dans le fichier /tmp/Rep_Linux_Ubuntu/retPS. On teste si le 5è champ ($5, en considérant les champs séparés par le caractère 'espace') est supérieur à 200000. C'est ce champ (VSZ) qui nous indique la mémoire virtuelle utilisée par le processus. Si le processus utilise plus de 200000 unités de mémoire virtuelle, on affiche :
# cmd: $11 user:$1 CPU:$3 RamVir:$5 pid:$2 état:$8 ; où $11 est le 11è champ (la commande), $1 est le premier champ (l'utilisateur), $3 est le 3è champ (% de CPU utilisé), $5 est le 5è champ (mémoire virtuelle utilisée), $2 est le deuxième champ (numéro de processus), et $8 est le huitème champ (état du processus).
