2つの端末で同時に実行される2つのコマンド[閉じる]

2つの端末で同時に実行される2つのコマンド[閉じる]

1つの端末(サーバー)でスクリプトを実行し、2番目の端末(ユーザー)でjarファイルを同時に実行する必要があるため、ミリ秒が重要です。可能ですか?ありがとう

ベストアンサー1

ファイルロックを使用すると、非常に簡単にこれを行うことができます。

次の内容で2つのスクリプトを作成します。まず、端末Aスクリプトを実行してからBを実行します。

ターミナルA:

touch /tmp/lockfile
flock -x /tmp/lockfile read -p 'press enter to begin'
command_a

ターミナルB:

flock -x /tmp/lockfile true
command_b

Enter開始する準備ができたら、ターミナルAを押します。

 

どのように機能するかは、最初のロックがflock排他ロックを取得して/tmp/lockfileを押すまでそのロックを保持することですEnter。 2回flock目も排他的ロックを獲得しようとしますが、すでにロックがかかっていてブロックされます。 1 番目がflockロックを解除するとすぐに 2 番目が実行され、/bin/trueすぐに返されるので、コマンドは続行されます。

はい、これはcommand_aはるかに前に始まるという意味ですcommand_b。しかし、シェルスクリプトではとにかくこのような遅延が避けられないので問題にはなりません。

Linuxの好みに応じて/bin/readflock ... bash -c "read -p 'press enter to begin'"

おすすめ記事