シェルスクリプトで複数のファイルをロックする

シェルスクリプトで複数のファイルをロックする

1つのファイルをロックするCプログラムがあります。複数のファイルをロックする必要があるため、ここで回避策はプログラムの複数のインスタンスを実行することです。ただし、これは複数の端末を開くことを意味することもあります(ロックファイルの数と同じ数の端末が開いています)。なぜなら、プログラムが実行を開始すると、端末が使用されます。

動作していることを確認するために、次のコマンドを試しました。最終目標を達成するには、このコマンドをスクリプトに数回コピーする必要があります。次のコマンドを実行すると奇妙なエラーが発生します。

konsole --workdir/ -e ./lock /vol4/commit/file_1

次のエラーメッセージで新しいウィンドウが開きます。

警告: '/vol4/commit/lock /vol4/commit/file_1'が見つかりません。代わりに '/bin/bash'を起動します。プロフィール設定を確認してください。

ここで何が間違っているのか教えてください。

ベストアンサー1

/vol4/commit/file_1奇妙に見えるファイルパスですが、とにかく...

あなたいいえ複数の端末を実行する必要があります。バックグラウンドでコマンドを実行すると、端末で追加のコマンドを実行できます。&コマンドラインの末尾に追加するだけです。例えば、

./lock /vol4/commit/file_1 &

~からバッシュのマニュアルページ

リスト

;リストは、&または演算子の1つで区切られ、オプションで、またはいずれ&&かで││終わる1つ以上のパイプシーケンスです。;&<newline>

[...]

コマンドが制御演算子によって終了すると、&シェルはサブシェルのバックグラウンドでコマンドを実行します。シェルは、コマンドが完了するのを待たずに状態0を返します。

次の情報も参照してください。職業管理Bashのマニュアルページのセクション。

おすすめ記事