ファイルが切り捨てられると、tail -f が中断されます。

ファイルが切り捨てられると、tail -f が中断されます。

私はtail -f(Mac OS X el Capitanの端末で)ファイルのリアルタイム変更(PERLスクリプトを使用してデータベースからデータをインポートした結果)を表示するために使用しています。ただし、Perlスクリプトがファイルを切り捨てて新しいデータを追加することもあります。このような状況が発生した場合は、次のメッセージが表示されます。

tail: test.txt: file truncated

これにより、ファイルの内容は表示されません。これは、ファイルを以前より少ない行に置き換えた場合にのみ発生するようです。新しい行がスクリプトを実行する前より長くなると、このエラーは発生せずにtail -f動作し続けます。実際にtail -fこの(エラー?)メッセージを受信した後、ファイルのデータが表示されないことを確認しました。

私はこのような質問を見たことがあります。tailを使用するときに「ファイルを切り捨てる」メッセージを抑制します。

tail -f test.txt 2> /dev/null

ただし、これはメッセージを抑制するだけで、まだ中断され、短く切り捨てられたファイルの内容を表示し続けません。

リアルタイムでファイルの変更を見るためのより良いコマンドはありますか?それとも、tail -fファイルが切り捨てられたときに無視するフラグがありますか?

ベストアンサー1

他の人が指摘したように、tailOS Xに付属のコマンドにはそのオプションはありません--retry。ただし、そのオプションを使用して、GNUバージョンのテールを簡単にインストールできます。GNUコアツール。たとえば、MacPortsを使用している場合sudo port install coreutils

リアルタイムでファイルを表示するための代替案は、watch残念ながらOS Xでは利用できないコマンドです。ただし、次のものを使用できます。このシンプルなソリューション

おすすめ記事