ファイルを順次ダウンロードしていますwget
。
アンパックを使用し始めるとcat myfile.tar.bz2 | tar -xj
、どちらが速いかによって正しく解凍されたり、「予期しないEOF」によって失敗することがあります。
ファイルを "cat and follow"する方法、つまりファイルの内容をstdoutに出力しますが、EOFで終了せずにファイルサブスクリプションを維持し、データの新しい部分を出力し続け、ファイルが閉じられたときにのみビルダーを終了する方法N秒後に再び開くなかった。
スクリプトを作成しました。猫とフォロー@arielCoベース回答tail
また、ファイルが書き込み用に開かれていない場合は終了します。
答え1
tail +1f file
wget
LibreOfficeソースtarballをダウンロードしたときにUbuntuでテストしました。
tail +1f libreoffice-4.2.5.2.tar.xz | tar -tvJf -
また、Android携帯のSolaris 10、RHEL3、AIX 5、およびBusybox 1.22.1(tail +1 -f file
Busyboxで使用)でも機能します。
答え2
問題は、cat
ファイルがまだ添付されていることを知らないことです。ファイルの(現在の)終わりが見つかるとcat
終了します。
wget
これを防ぐには、パイプ(またはFIFO)に書き込む必要があります。
wget -O - http://... | tar -xjf -
答え3
到着読んでフォローする開始から停止までのファイル:
tail -fn +1 file
これを実証するには、次のことを試してみてください(Bash用GNU Coreutilsを想定)。
(while true; do printf . >> /tmp/file; sleep 1; done)&
tail -fn +1 /tmp/file # (Ctrl-C to interrupt, of course, or otherwise kill it.)
kill % # Kills the while-loop.
(注:+1f
他の人が言及したものは、少なくともGNUtail
コマンドではファイル名として解釈されます。)
上記は単一ファイルに適用されます。複数のファイルをリンクすると、最初のファイルにぶら下がらず、すべてのファイルに決定的に従うことはありません。到着する」猫とフォロー'、最後のファイル以降にのみ使用できます。プロセスの交換。もう一つのデモは次のとおりです。
printf file1 > /tmp/file1; printf file2 > /tmp/file2
(while true; do printf . | tee -a /tmp/file{1,2} > /dev/null; sleep 1; done)&
cat /tmp/file1 <(tail -fn +1 /tmp/file2) # (Interrupt or kill it.)
kill % # Kills the while-loop.
答え4
そしてless +F
[私が一番好き]
less
示されているように、GNUバージョン487を使用してLinux Ubuntu 18.04でテストされましたless --version
。
以下も使用できますless
。
less -N +F path/to/some/growing/log_file.log
フォローしたいかもしれません名前次のオプションを追加してファイル記述子を置き換えます--follow-name
。
# [My favorite command overall]
less -N --follow-name +F path/to/some/growing/log_file.log
log_file.log
log_file.log.1
たとえば、ログ記録を開始するために新しいログファイルにローテーションしたときに、ローテーションログシステムがファイル名を変更した場合でも、というファイルを追跡するのに役立ちます。 WITHOUT--follow_name
は凍結され、もはや大きくなっていないless
ファイルを追跡し続けるのに対して、WITH、は名前の変更を確認し、自動的に新しいファイルを開き、追跡を開始します。log_file.log.1
--follow-name
less
log_file.log
ねえ。
行番号を表示します-N
。シンボルを開いた直後に+
コマンドが実行されるようにしますless
。+
このF
コマンドを使用すると、ファイルの終わりを継続的に読み込んで読み込むことができます(例: "follow")、これはログファイルの増加を確認するのに特に役立ちます。オンの間F
(たとえば、Shift+)を押すFのは+を押すのと同じです。less
CtrlEnd
less
実行中にこの連続ロード効果を中断して停止するには、Ctrl+を押しますC。これで正常に使用でき、less
必要に応じて上下にスクロールしてデータを表示できます。次に、q正常に終了をクリックします。または、F
(+)を入力してファイルにShift続行することもできますF。
注:less
ファイルの末尾にのみ移動し、追加された新しいコンテンツを読み込み(「フォロー」)したくない場合は、G
(Shift+ if isはすでに実行されている)代わりに(+ Gin if isはすでに実行されています)コマンドを使用してください。less
less
F
ShiftFless
less -N +G path/to/some/growing/log_file.log
[ tail -f
BusyBoxのベストオプション]
tail
通常のLinuxシステムで使用する場合いいえBusyBox実装を含む組み込みLinuxシステムでは、上記のオプションと同じことを行うために「オプション」をtail
使用できます。tail
--follow=name
less
--follow-name
以下は、図のようにBusyBox v1.31.1を使用してテストされていますbusybox --help
。
busyboxを実行している組み込みLinuxシステムではこのless +F
オプションは使用できません。これらのシステムには以下を使用してくださいtail -f
。
# Just show new contents as they come into the file
tail -f path/to/some/growing/log_file.log
# Also print the entire file first, starting at the first line (`+1`), before
# following and loading new contents continually
tail +1 -f path/to/some/growing/log_file.log
それほど便利ではありませんが、less
まだうまくいきます。Ctrl+を押すとC出力が終了します。その後、出力を「一時停止」してさらに詳しく調べる必要がある場合は、端末を上にスクロールして前の行を表示できます。ファイルビューを「続行」するには、以前のUp Arrowコマンドを呼び出すとtail -f
同じコマンドを簡単に再実行できます。
BusyBoxの他の便利なオプション-s SECONDS
は-F
。前任者:
# only check and load new contents at the end of the file every 2 seconds
tail -f -s 2 path/to/some/growing/log_file.log
完全なヘルプメニューは次のとおりです。
# tail --help BusyBox v1.31.1 (2021-11-20 02:33:23 UTC) multi-call binary. Usage: tail [OPTIONS] [FILE]... Print last 10 lines of each FILE (or stdin) to stdout. With more than one FILE, precede each with a filename header. -f Print data as file grows -c [+]N[kbm] Print last N bytes -n N[kbm] Print last N lines -n +N[kbm] Start on Nth line and print the rest -q Never print headers -s SECONDS Wait SECONDS between reads with -f -v Always print headers -F Same as -f, but keep retrying N may be suffixed by k (x1024), b (x512), or m (x1024^2).
watch
[BusyBoxでも機能]を使用してください。
これは別のオプションです。これはBusyBoxでもうまく機能します。
# Continually view the last 20 messages of the log file every 1 second
watch -n 1 'tail -n 20 path/to/some/growing/log_file.log'
引用する
- 私は
less +F
これを初めて学びました。「less」をオンにして最後までスクロールします。 - 私は
less +G
これを初めて学びました。「less」をオンにして最後までスクロールします。 - lessオプションについてどこで学びましたか
--follow-name
?https://unix.stackexchange.com/a/196349/114401