機能のような「ファイルの更新」により少ない


9

で5分ごとに上書きされるファイルを見たいlessless古いファイル記述子を表示したままにする代わりに、どのようにして新しいファイル記述子を追跡させることができますか?watch "cat file"ファイルが長すぎて1つのターミナルウィンドウに収まらないため、この処理は行われません。


2
「フォロー」とは、ファイルの終わりに続くことを意味します。ファイルが上書きされることを明確にしたい場合や、ファイルを再度開くことに興味がある場合があります。
chutz

tail -fのmanページで定義されているように、ファイル記述子に従うことを意味しました。それにもかかわらず、私は私の質問を明確にしました。
d135-1r43

unix.stackexchange.com/a/74287/112522less --follow-name参照してください
djsutho

回答:


10

この効果を得るには、でファイルを表示しながらFコマンド(Shift+F)を発行しますless。フォローを停止してページングに戻るには、Ctrl+C

ファイルは5分ごとにしか変更されないのでtail -f、より長いスリープ時間を使用して指定することもできます-s(デフォルトは1秒)。例えば、

tail -f -s 60 myfile

myfile60秒ごとに出力をチェックします。

編集:誤解を招くような質問のため、上記の回答は不十分でした。2回目の試行は次のとおりです。

less5分ごとに同じファイルを再度開くには、次のことを試してください。

while true; do ( sh -c 'sleep 600 && kill $PPID' & less myfile ); done

これにより、5分後に親プロセスを強制終了するように指示された別のシェルプロセスをバックグラウンドで実行するサブシェルが生成されます。次に、でファイルを開きますless。バックグラウンドのシェルコマンドが親サブシェルを強制終了すると、「less」コマンドを含むすべての子が強制終了されます。その後、ループはプロセスをもう一度開始します。

これを殺すために私が知っている唯一の簡単な方法は、元のシェルがあるターミナルを殺すことです。それが受け入れられない場合は、「killfile」トリックを使用できます。

touch killfile
while [ -f killfile]; do stuff; done

実行を停止するstuffrmは、別のシェルのkillfile。


これは、私の場合には部分的にしか役に立ちません。監視されたファイルは非常に大きく、上部の更新された情報です。「スクロール」ログファイルではありません。Shift + Fはすぐにファイルの終わりまでスクロールします...
d135-1r43

明確にするために質問を編集する必要があります。私も答えを編集してこれに答えました。
盆栽バイキング、

watch -n 1 less <filename>
axel22

1

でも同様のことができますvim

のサーバーセッションを開始しますvim

vim -R --servername refresh_session

次に、別のコンソールで、ファイルの更新を監視し、ファイルが更新されるとすぐにファイルをリロードするようにvimセッションに指示します。

inotifywait -e close_write -m your_log_file | while read filename events; do
    vim --servername refresh_session --remote $filename
done

いくつかの落とし穴。

  • もちろんvimclientserver機能が組み込まれていない場合は機能しません。
  • inoifywaitファイルが削除されると機能しなくなります。したがって、ファイルが上書きされることを願っています。もちろん、それを回避することも可能です。

また、よりless経験をしたい場合は、lessマクロを使用してでlessキーバインディングを取得できますvim

/usr/share/vim/vim73/macros/less.sh --servername refresh_session

0

古いが、非常に良い「少ない」ようなプログラム(「ポケットベル」)を見つけました。ファイルを更新する「R」コマンドがあります。

それは"lv"と呼ばれ、あなたはそれをUbuntuにインストールすることができます:

sudo apt install lv

ただし、自動リロード機能がないようです。


-1

あなたはこのコマンドを試すかもしれません:tail -f file


-1

尾はあなたの友達です。"tail -f filename"を指定すると、新しい行が表示されます。

または、ファイルの途中で行われた変更を探している場合は、数分ごとにスクリプトを実行して、一時的な場所にファイルのコピーを作成し、それに対して差分を実行することができますか?


元の投稿でも「新しいファイル」が存在することは明らかでした。したがって、ファイル記述子は変更されtail -fますが、古いものを読み取ります。
Alastair Irvine

それはとても公平だとは思いません。明確にするために、元の未編集の投稿を確認する必要があります。私の回答の日付を見ると、それが私が回答していた質問だからです。その未編集の質問では、私の答えは完全に理にかなっています。serverfault.com/posts/445899/revisions
デビッドW 14

改訂を確認しました。キーワード「新しいファイル」。
Alastair Irvine
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.