Proceso no listado en “ps -ef” (AIX 7.1)

Proceso no listado en “ps -ef” (AIX 7.1)

Tengo un problema inusual relacionado con la salida del ps -efcomando 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 -efinmediatamente 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 -efresultado?

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.

información relacionada