Systemctl status は --lines を指定しても常に完全なログを表示します。

Systemctl status は --lines を指定しても常に完全なログを表示します。

ユニットのステータスを取得しようとしていますが、次のように最初の 3 行のみが表示されます。

systemctl --user status resilio-sync --lines=3

-n 3 などを使ってこれをいろいろ試してみましたが、何も機能しません。そして奇妙なのは、ドキュメントによるとデフォルトで 10 行であるはずのログが常に 13 行表示されることです。システムctl

試してみるとsystemctl status、実際には 10 行であるべきところ、45 行すべてが端末に出力されることがわかります。

何か見落としているのでしょうか? 私の知る限り、何も変更していません。

回避策として、現在使用しているのは次の方法です。

systemctl --user status resilio-sync | sed -ne '1,3p'

しかし、根本的な問題を修正してネイティブ コマンドを使用したいです。システムは、Raspberry Pi 上の Kali Linux (re4son-kernel、sticky finger) です (この奇妙な設定のせいにするのは簡単ですが、これは Linux のコア機能なので、問題にはならないと思います)

最初のコマンドの出力

答え1

コマンドはsystemctl status、サービスのステータスと からの対応する行を表示しますjournalctl。 は、--lines=3ジャーナルから表示される行数を 3 に制限します。例:

systemctl --user status resilio-sync --lines=0

esilio-syncログなしでサービスのステータスのみを表示しますjournalctl

-n, --行=

一緒に使用すると状態、コントロールジャーナル行数表示するには、最新のものから数えます。正の整数引数、またはジャーナル出力を無効にするには0デフォルトは 10 です。

コマンドの出力を制限するには、systemctl statusオプションを使用できます。

systemctl check resilio-sync
systemctl is-active resilio-sync
systemctl is-enabled resilio-sync

またはオプションをグループ化することで:

systemctl is-active is-enabled resilio-sync

答え2

head コマンドはそのために設計されました。

systemctl --user status resilio-sync | head -n 3

関連情報