Python プログラムが実行されているかどうかを確認するための短い bash スクリプトがあります。プログラムは実行時に PID ファイルを書き出すので、これを実行中のプロセスの現在のリストと比較すると、必要なものがわかります。しかし、変数が変更されてから明らかに元に戻るという問題があります。スクリプトは次のとおりです。
#!/bin/bash
# Test whether Home Server is currently running
PIDFILE=/tmp/montSvr.pid
isRunning=0
# does a pid file exist?
if [ -f "$PIDFILE" ]; then
# pid file exists
# now get contents of pid file
cat $PIDFILE | while read PID; do
if [ $PID != "" ]; then
PSGREP=$(ps -A | grep $PID | awk '{print $1}')
if [ -n "$PSGREP" ]; then
isRunning=1
echo "RUNNING: $isRunning"
fi
fi
done
fi
echo "Running: $isRunning"
exit $isRunning
Python スクリプトの実行時に得られる出力は次のとおりです。
RUNNING: 1
Running: 0
また、bash スクリプトの終了値は 0 です。したがって、これらすべての if ステートメント内で isRunning が変更されます (つまり、コードは期待どおりに実行されます) が、どういうわけか isRunning は再び 0 に戻ります。混乱している...