systemctlサービスログで最新のx行を表示する方法

systemctlサービスログで最新のx行を表示する方法

私はDebianのsystemctlサービスから最後のX行を簡単に印刷する方法を探しています。印刷された最新のログエントリを使用するスクリプトにこのコードをインストールしたいと思います。見つけました。これ投稿しましたが、私の目的に合わせて変更することはできません。

現在、私はログファイルの小さな部分を提供する次のコードを使用しています。

journalctl --unit=my.service --since "1 hour ago" -p err

結果の例を見るには、任意のサービスに対して上記のコマンドを入力してログの最後までスクロールします。次に、一番下から最後の300行をコピーします。

私の考えはegrep exを使うことです。egrep -m 700 .しかし、これからは幸運ではありません。

答え1

journalctl --unit=my.service -n 100 --no-pager

答え2

終わりを見たいならNそしてログに印刷された新しいメッセージを表示するには、次のようにします。

journalctl -u <service name> -n <number of lines> -f

ここでは、-nログの最後に表示する行数を示し、-fログに追跡する変更を指定します。

答え3

のみ:

journalctl -u SERVICE_NAME -e

パラメーターは以下を-e示します。

-e --pagerend;暗黙的なページングツール内からログの最後にすぐに移動します。つまり、-n 1000 は、ページャが無限サイズのログをバッファリングしないことを保証します。これは明示的な-nによって他の値に置き換えることができ、-nallはこの制限を無効にします。

答え4

tailコマンドソリューションが提供されたためです。 sedコマンドを試してみましたが、うまくいきました。

次のコマンドは、最後の300行を表示します。

journalctl --unit=my.service | sed -e :a -e '$q;N;301,$D;ba' 

関連情報