ここではどの用語を使用すべきかわかりません。だからご了承ください。
私は生成するアプリケーションを書いています。たくさん丸太。私は私のアプリケーションストリームログを持っていて、他のプロセスがストリームのfoo
ように読み取ることができるようにしたいと思いました。foo
/dev/random
つまり、ログをどこかで継続的にストリーミングして(アーカイブ、削除などのファイルシステムの問題を心配することなく)、他のプロセスをそのストリームに「プラグイン」する機能を持ちたいと思います。無限の文書。
どうすればいいですか?何ですかfoo
?
理想的には:
terminal 1
> mkthing foo
> while :; do echo 'abcdefg' >> foo; sleep 1; done
terminal 2
> echo foo
(outputs "abcdefg" every second)
答え1
ログを表示する最も一般的な方法は次のとおりです。ファイルに書き込む。ログを見たい場合は、このファイルを読んでください。ファイルに追加された行を観察するには、次のコマンドを使用します。tail -f
、ファイルの終わりに達した後にファイルを開いたままにして、追加の行が追加されるかどうかを監視します。このオプションは-f
「Follow」用で、次に使用されます。少ないF
「follow」を使って同じ効果を得ることができます。他のプログラムではtail
これを行うための古典的なユーティリティなので、ファイル「テーリング」と呼ぶことができます。バラよりtail
このウェブサイトのタグ光米ユーティリティに関する追加情報。
ログをファイルに記録したくない場合は、次の場所でアプリケーションを実行できます。画面またはマルチプレクサ。/usr/bin/my_application --some-option
バックグラウンドで実行するには、screenを使用してください。
screen -S myapp -d -m /usr/bin/my_application --some-option
ログを表示するには:
screen -S myapp -d -r
ログの表示を停止するには、Ctrl[+]を押します。A dログを表示するときに望むかもしれないしそうでないかもしれない入力をアプリケーションに送ることができます。読み取り専用アクセスを許可するには、次を参照してください。読み取り専用モードで「画面」を実行する方法はありますか?
tmuxを使用してアプリケーションを起動します。
tmux new-session -s myapp -d /usr/bin/my_application --some-option
最新のログを見る:
tmux attach -r -t myapp
Ctrl+を押してA d外します。実行中はアプリケーションと対話tmux attach
できません。-r
ㅏ名前付きパイプあなたが望むものではありません。表面的に適切に見えるので言及するだけです(私が作成するとコメントに表示されます)。説明のとおり実行されます。
mkfifo foo
while :; do echo 'abcdefg' >> foo; sleep 1; done
〜と平行
cat foo
リーダーは1人しかいないので、これは望むものではありません。リーダーがない場合、書き込み側はブロックされます。複数のリーダーがある場合、各行(またはプログラムが出力を生成する方法に応じてブロック)は、ある程度ランダムに選択された1つのリーダーによって表示されます。リーダーが存在しなくなった場合、書き込み側では書き込みできなくなり、無効にならないとSIGPIPEを受け取ります。