ps -ef
AIX 7.1 のコマンドの出力に関して、異常な問題が発生しています。
シェル スクリプトは、この出力を解析してプロセスを監視します。このリストからプロセス (Perl プログラム) が省略されているのに気付いたことが 2 回あります。この件に関して私が読んだすべての資料では、これは不可能だと言っています。問題のプログラムは、crontab 経由で午前 6 時に開始され、午後 11 時まで実行され、その後自動的に終了します。ps -ef
監視スクリプトによって省略された直後の出力を確認したところ、次のように表示されます。
user 1249864 9569338 0 06:00:00 - 0:19 /usr/bin/perl -w /path/to/omittedProgram.pl
...つまり、午前 6 時に開始されたのと同じプロセスです。プログラムは終了せず、その後再起動されました。
出力から省略される原因は何ですかps -ef
?
これは、約 5 年間正常に動作している の出力を調べるプログラムですps -ef
。この問題に気付いたのは 2 回だけですが、どちらも過去 2 か月以内のことです。
# 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
また、AIX のインストールには がありませんpgrep
。