AIX 7.1でps -ef
コマンドの出力に関連する異常な問題があります。"ps -ef"(AIX 7.1)に記載されていないプロセス
シェルスクリプトは、この出力を解析してプロセスを監視します。私は、このリストから2つのプロセス(Perlプログラム)が省略されていることに気付きました。私がこのテーマで読んだことは、これは不可能だと言います。問題のプログラムは、crontab経由で午前6時に開始し、自ら終了する午後11時まで実行されます。私はすぐに監視スクリプトでは省略された後ps -ef
の出力をチェックし、それが表示されます。それは6時に開始された同じプロセスだ意味
user 1249864 9569338 0 06:00:00 - 0:19 /usr/bin/perl -w /path/to/omittedProgram.pl
を...。プログラムは終了せず、再起動しました。
ps -ef
の出力で何が省略されていますか?
編集:これは約5年間正常に実行されているps -ef
の出力を調べるプログラムです。 (
# 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
問題はモニタスクリプトのバグである可能性があります。その場合は、あなたの質問にスクリプトを含める必要があります。もしそうでなければ、おそらくプログラミングに関する質問ではなく、[unix.se]にもっと適しているでしょう。 –
あなたのQの件名行 '' ps -ef ''にある"派手な "引用符をあなたのスクリプトで使わないことを願っています:-)あなたはstd' ps -ef | grep -v grep | grep $ pid'のこと?プロセステーブルの他の 'greps'と交差している可能性があります。残念なことに、AIXには役立つかもしれない 'pgrep'(またはstd)がありません。がんばろう。 – shellter
出力を調べるコードを追加しました。私は豪華な引用符を使用していない。コマンドの競合を避けるために、 'ps -ef'の出力を調べてからファイルに書き出します。ええ、私は、AIXのインストールで 'pgrep'を使用しているかどうか確認しましたが、残念ですが、そうではありません。 –