Tengo un problema inusual relacionado con la salida del ps -ef
comando en AIX 7.1.
Un script de shell monitorea los procesos analizando esta salida. He notado en dos ocasiones que un proceso (un programa Perl) se omitió de esta lista. Todo lo que he leído sobre el tema dice que esto no es posible. El programa en cuestión se inicia mediante crontab a las 6 a. m. y se ejecuta hasta las 11 p. m., cuando finaliza automáticamente. Verifiqué el resultado de ps -ef
inmediatamente después de ser omitido por el script del monitor y muestra:
user 1249864 9569338 0 06:00:00 - 0:19 /usr/bin/perl -w /path/to/omittedProgram.pl
... lo que significa que es el mismo proceso que se inició a las 6 am. El programa no finalizó y luego se reinició.
¿Qué está causando que se omita en el ps -ef
resultado?
Este es el programa que examina el resultado de ps -ef
, que se ha estado ejecutando con éxito durante unos cinco años. Solo he notado este problema dos veces, pero ambas han ocurrido en los últimos 2 meses:
# set global variables
PROCESS_FILE=/tmp/processList.txt
TEMP_FILE=/tmp/greppedProcesses.tmp
BOX=`uname -n`
DATE=`date`
EMAIL_LIST="[email protected]"
# Get list of running processes
ps -ef > $PROCESS_FILE
checkProcess() {
PROCESS_NAME=$1
PROCESS_ABBREVIATION=$2
PROCESS_COUNT=$3
UNIQUE_PROCESS_IDENTIFIER=$4
GREPPED_LINES=$TEMP_FILE-$PROCESS_ABBREVIATION
grep $UNIQUE_PROCESS_IDENTIFIER $PROCESS_FILE | grep -v grep > $GREPPED_LINES
NUM=`cat $GREPPED_LINES | wc -l`
if [[ $NUM -ne $PROCESS_COUNT ]]
# Incorrect number of processes running!
then MESSAGE=`printf "The \"$PROCESS_NAME\" process count is %1d, but it should be $PROCESS_COUNT!!!" $NUM`
echo "Monitor - starting on $DATE\n\n$MESSAGE\n\n`cat $GREPPED_LINES`" | mail -s "Problem with $PROCESS_NAME on $BOX" $EMAIL_LIST
fi
# Delete the temp file
rm $GREPPED_LINES
}
checkProcess "Full Name of Program" "Program Abbreviation" <expected number of processes running> "Unique string to identify program in ps output"
checkProcess ... (for other processes) ...
exit 0
Además, nuestra instalación de AIX no tiene pgrep
.