1行の堅牢なソリューションがあるかどうかはわかりませんので、独自のソリューションを展開することになるかもしれません.
ロックファイルは不完全ですが、'ps | グレップ | grep -v' パイプライン。
そうは言っても、プロセス制御をスクリプトから分離しておくことを検討するかもしれません-開始スクリプトを用意してください。または、少なくとも別のファイルに保持されている関数に分解して、呼び出し元スクリプトに次のものを含めることができます。
. my_script_control.ksh
# Function exits if cannot start due to lockfile or prior running instance.
my_start_me_up lockfile_name;
trap "rm -f $lockfile_name; exit" 0 2 3 15
制御ロジックを必要とする各スクリプトで。トラップにより、呼び出し元が終了したときにロックファイルが削除されることが保証されるため、スクリプトの各終了ポイントでこれをコーディングする必要はありません。
別の制御スクリプトを使用すると、エッジ ケースのサニティ チェックが可能になります。古いログ ファイルを削除し、ロックファイルが現在実行中のスクリプトのインスタンスに正しく関連付けられていることを確認し、実行中のプロセスを強制終了するオプションを指定します。ps
また、出力で grep を正常に使用できる可能性が高くなることも意味します。ps-grep を使用して、ロックファイルに関連付けられた実行中のプロセスがあることを確認できます。おそらく、プロセスに関する情報を含む何らかの方法でロックファイルに名前を付けることができます: user、pid など。これは、後でスクリプトを呼び出して、ロックファイルを作成したプロセスがまだ存在するかどうかを判断するために使用できます。