達成する方法はありますか?公開/購読モデルサーバープロセスを使用せずにコマンドラインから?これを行うには、1台のコンピュータで作業するだけです。
サーバープロセスがないために避けたい主な点は、これらのツールを使用するようにシステムを構成することです。また、サーバープロセスが終了する可能性を処理したくありません。
これは次のようになります。
# client 1
subscribe name | while read line; do echo $line; done
# client 2
subscribe name | while read line; do echo $line; done
# server
echo message | publish name
関連リンク
- POSIX産業用コンピュータサーバーレス提供メッセージキューそして、コマンドラインクライアントがあります。(1) (2) (サム)。これは、上記の内容を実装するために、ある種のステートストアで使用できます。
- ZQ提供公開/購読通信プロトコル。同様のコマンドラインツールがあります。CNC使用するためZQ、例えば猫猫。これは、最小限のコマンドライン発行/購読モードを設定するために使用できます。サーバーがあります。
- Linux は、次のような別の IPC メカニズムを提供します。名前付きパイプ(mkfifoを参照)。複数の消費者に予想される動作が何であるかわかりません。しかし、いくつかの予備実験によると、各メッセージは消費者が受け取る
ベストアンサー1
すべての加入者は他の加入者に影響を与えないように新しいデータの通知を受け取る必要があり、サーバーは加入者が受信したデータを追跡する必要はありません。これにより、FIFOはこの目的に役に立たなくなります。皮肉なことに、通常のファイルのファイル記述子はファイルの変更を追跡するため、通常のファイルは必要な操作を正確に実行します。これをオーバーライドと組み合わせて、新しいオーバーライドが発生する前にすべての変更が公開されるようにすることができます。つまり、1つのメッセージしか保存できません。
touch pubsub
tail -f pubsub | while read line; do echo $line; done
tail -f pubsub | while read line; do echo $line; done
echo "message" | cat > pubsub
予想される動作である標準エラーで「ファイルの切り捨て」が発生したがそれを見たくない場合は、2> / dev / nullを追加してください。
tailは、実際には読み取りとエコーが実行するすべてのことを行いますが、スクリプトに統合したいと仮定してこれを書いています。