現在、bash スクリプト (Cygwin を使用) を使用していくつかのプログラムを実行しています。
基本的に私がやっていることは、プログラムが開始された後、プログラムがまだ実行されていることを確認するループが実行されることです。
やっていた:
while true
do
if [ "$(ps -W | grep -w name | gawk '{print $8,$9}' | gawk -F \\ '{print $4}')" == 'program' ];then
sleep 1
else
"start program" (whatever is needed here)
fi
done
しかし、そのようなスクリプトを複数回使用すると、不要なシステム リソースが使用されるだけであることに気付き始めました。
if then elif をやってみましたが、最初の if を通り越すことはありません。
「最初に負の場合は大丈夫です。次を試して、最後まで行き、最初からやり直してください」という必要があります。
これが私のスクリプトのコピーです。Cygwinを使用していたことを忘れていましたが、ファイルを開始するためのパスが異なるだけで、通常のbashスクリプトを使用しているように見えるため、実際には何も変わりません。http://pastebin.com/s8ZdPQMnはい、h. ペーストビンを編集できないようです。
私の全体的な計画は、最初の SRPro が実行されていることを確認し、次の SRPro を確認するなど、実行されていないことが検出された場合にのみトリガーすることです。
編集:解決しました。正確な理由はわかりませんが、プログラムごとの元の単一ファイルでは、最後に gawk で $4 を印刷すると、私が望んでいた結果が得られましたが、何らかの理由でこの方法で実行すると、$5 になりました。したがって、$4 を $5 に変更すると、スクリプトが機能するようになりました。
編集:しかし、1つの本当に奇妙な問題は、それが数分続けて動作し、突然混乱することがあり、1つのプログラムまたは何かの7つのコピーを開始することです。また、開始する場所をランダムにすることもできます。