ログイン画面を見る(回転)

ログイン画面を見る(回転)

私は SSH を使用して接続するメール サーバーを実行しています。私のサーバー.bash_profileは、特定のセッションに SSH セッションを接続するように構成されていますscreen

ここで、ログ(例えばsyslog)をこのスクリーンセッションの1つのウィンドウに出力したい。

tail -f /var/log/syslog

しかし、出力は毎日 6:25 に停止します。ログがローテーションされる時間だと思います。ログを画面に印刷する方法はありますか?

答え1

必要なのはtail --follow=name /var/log/syslog

その理由は、デフォルトでは(おそらくパフォーマンス上の理由から)tail 指定されたファイルを開いてから監視するためです。ファイル記述子変更の呼び出しから取得しますopen(2)。これは、ファイルが変更されている限り、つまり追加または書き換え(最初に切り捨てる)されている限りは正常に機能しますが、ファイルが交換されたつまり、削除されて同じ名前で作成されるのですが、logrotate通常はそれが行われます。

の「名前」モードでは、ファイルシステム層を介してファイル名を毎回「解決」するよりコストのかかるシステムコールを使用し--follow、ファイルがいわゆるtailstat(2)tail「iノード」tailファイルを再度開きます。

出力man tail:

-f, --follow[={name|descriptor}]

ファイルが大きくなるにつれて追加されたデータを出力します。オプション引数がない場合は「記述子」を意味します。

-F次のように定義されているコマンドラインオプションも参照してください。

-Fと同じ--follow=name --retry

答え2

あなたの推測は実際正しいです。この時点で、syslog はログに書き込みを中断し、それを gz にして、ログを再開します。

試してみるといいでしょう

tail -f --retry /var/log/syslog

この方法では、ログローテーションが完了したときに、tailはファイルを再度開くように再試行する必要があります。

関連情報