kornshellでは、 `basename $ 0`は私に現在のスクリプトの名前を与えます。シェルスクリプトでシングルトンを実装する方法
どのユーザーがこのサーバー上で実行した `basename $ 0`という名前のスクリプトを1つしか持たないというシングルトンパターンを実装するには、$$または$ PPIDをどのように利用するのですか?
ps -ef|grep `basename $0`
これは、現在実行中のスクリプトの名前を持つ実行中のすべてのプロセスを表示します。
$$以外のスレッドが `basename $ 0`という名前のスクリプトを実行しているときに中止できるスクリプトが必要です。
あなたに問題があるようですが、あなたはその問題の解決策をはるかに早く選択しました。実際に解決しようとしている問題は何ですか? –
'ps'はこの役割には不向きです:アトミック性や並行性の保証はありません。その結果は特定の時点を表すことが保証されていません。私はフィリップとの圧倒的な合意に自分自身を見つける。 –
@Goahnaryあなたの問題が、あなたのカウンターを別のスクリプトのインスタンスと重複して読む*カウンターを書く*カウンターを書くことによって引き起こされている場合は、興味深いかもしれません。 'echo foo> bar'はアトミックではないことに注意してください。最初に' bar'を空ファイル*に切り捨ててから 'foo'を書き込む前に切り捨てます。数値カウンタの場合は、一度に1つのジョブしか実行されないようにミューテックスを実装していない限り、これは0にリセットされるように見えます。 (サーバーが最近応答に時間がかかり始めたのは、なぜ最近になってバグが見え始めたのかを説明する)。 –