Voici ci-dessous un petit script permettant de récupérer dans des fichiers le top 10 des processus les plus consommateur en mémoire ou en CPU. Un fichier pour la CPU et un autre pour la mémoire.
A personnaliser pour l'interval et la durée.
#!/bin/ksh
# Stockage des processus les plus consommateurs en CPU ou mémoire
# Ch.SONOLET
# Log files
PROCFILE=/tmp/CPU_cons.$$
MEMFILE=/tmp/MEM_cons.$$
# Maximum duration
LOOPNUM=60 # Number of Interval
INTERVAL=60 # Seconds
COUNT=1
while [ $COUNT -lt $LOOPNUM ]
do
ITIME=`date +%Y%m%d%H%M`
# CPU ANALYSIS
ps auxw | sort -r +2 |grep -v STIME|head -10|while read user pid cpucons memcons SZ RSS TTY STAT STIME TIME COMMAND
do
NTIME=`echo $TIME|sed 's/://'`
if test "$NTIME" = "$TIME"
then
STIME="$STIME $TIME"
fi
COMMAND=`echo $COMMAND |sed 's/[0-9]*:[0-9]* //'`
echo "$ITIME;$cpucons;$memcons;$SZ;$RSS;$STIME;$COMMAND" >> $PROCFILE
done
# MEMORY ANALYSIS
ps auxw | sort -r +3 |grep -v STIME|head -10|while read user pid cpucons memcons SZ RSS TTY STAT STIME TIME COMMAND
do
NTIME=`echo $TIME|sed 's/://'`
if test "$NTIME" = "$TIME"
then
STIME="$STIME $TIME"
fi
COMMAND=`echo $COMMAND |sed 's/[0-9]*:[0-9]* //'`
echo "$ITIME;$cpucons;$memcons;$SZ;$RSS;$STIME;$COMMAND" >> $MEMFILE
done
COUNT=`expr $COUNT + 1`
sleep $INTERVAL
done