inode 番号ではなくファイル名を少なくするにはどうすればよいですか?

inode 番号ではなくファイル名を少なくするにはどうすればよいですか?

再起動時にログファイルをローテーションするソフトウェアを使用していますが、開発中は頻繁に再起動するため、常に最新のログファイルを監視したいと考えています。

less通常どおりに開始して+less program.logを押して末尾に移動すると、ログ ファイルがローテーションされても、古いログ ファイルの監視が続行されます。これは、inode 番号が同じままで、その inode へのファイル ハンドルが開いているためだと思います。Shiftfless

現在呼び出されているログ ファイルの最新のアクティビティを監視することは可能ですかprogram.log?

具体的には、私は Sun OS で作業しているので、そこで動作するソリューションが理想的です。

答え1

less --follow-nameのバージョンがサポートしている場合は使用してくださいless
このオプションはバージョン 416 で導入されました。

Shift+F次に、内で通常の follow コマンドを実行しますless

答え2

オプションless--follow-nameソリューションの一部にすぎません。
を置き換えるにはtail -F、別の引数が必要です。

less --follow-name +F file.log

のようなオプションだけでは、less --follow-name file.log実際にはファイルの更新の追跡は開始されません。 を押して追跡モードに入る必要がありますShiftF
( で移動するには、モードを終了しますControlC。)

ファイルに従う代わりに、--follow-name 行動を修正するの少ない。これにより、ファイル記述子ではなくファイル名に基づいて、 内の
コマンド キーがフォローされるようになります。ShiftFless

lessまた、フォローモードで起動するための通常のオプションはありません。
ただし、コマンドラインを使用して実行するキーストローク起動後に をプレフィックスとして付けることで、 を に変更できます+
修飾子オプションを と組み合わせると+Fless実際には (変更された) フォロー モードで起動します。

単独で使用して+Fplain と同等の意味を表しますtail -f:

less +F file.log

答え3

私は次のタイトルの U&L Q&A で答えを見つけました:ログローテーションされたファイルの を実行するにはどうすればよいでしょうかtail -f?

使用方法tail:

(システムに GNU tail をインストールするオプションがある場合)

tail -F program.log

からテールマニュアルページ:

   -f,      --follow[={name|descriptor}]
            output appended data as the file grows; -f, 
            --follow, and --follow=descriptor are equivalent

   -F       same as --follow=name --retry

   --retry  keep  trying  to  open  a  file even when it is or becomes
            inaccessible; useful when following by name, i.e., with
            --follow=name

鍵となるのは--retryスイッチです。これはtailコマンドに、ファイル名を指定して再試行し続けるように指示します。-Fスイッチは a-fと a の両方を実行します--retry

使用less

@StephaneChazela がコメントで指摘したように、以下は機能しません。

tail -F program.log | less

他に選択できる唯一のオプションは、less が--follow-nameスイッチとlessファイルを直接サポートし、使用をtail完全に放棄することを前提として、less を直接使用することです。

less --follow-name program.log

関連情報