どこにいる/なぜ通常のユーザーsystemdサービスのログがないのですか?


26

基本的なsystemdの使用方法を学習しようとしていますが、ユーザーサービスユニットで混乱を招く問題に遭遇しました。

systemctl start some.serviceで通常のサービスを実行すると、sudo journalctl --unit some.serviceを実行することで、このサービスの完全なログ(理解できるように、stdout / stderrに出力されたものを含む)を見つけることができます。

servicefile chatty.serviceの例を考えてみましょう。

[Service]
ExecStart=/usr/bin/echo "test from chatty.service"

このサービスファイルを〜/ .config / systemd / user / chatty.serviceに配置し、systemctl --user start chatty.serviceで実行すると、journalctlでも、journalctlでも、stdoutに送信された出力がjournalctlで見つかりません- -user。両方で次の出力しか得られません。

Jan 15 19:16:52 qbd-x230-suse.site systemd[1168]: Starting chatty.service...
Jan 15 19:16:52 qbd-x230-suse.site systemd[1168]: Started chatty.service.

また、journalctl --unit chatty.serviceは何も返しません(--userの有無にかかわらず違いはありません)。

同じサービスファイルを/ etc / systemd / systemに移動してsudo systemdで実行するとchatty.serviceが起動しsudo journalctl --unit chatty.serviceを実行すると次の出力が表示されます

Jan 15 19:28:08 qbd-x230-suse.site systemd[1]: Starting chatty.service...
Jan 15 19:28:08 qbd-x230-suse.site systemd[1]: Started chatty.service.
Jan 15 19:28:08 qbd-x230-suse.site echo[27098]: test from chatty.service

ユーザーサービスユニットが何らかの形でうまく統合されていないようです。これは予想されることですか、何か不足しているのですか、それともバグですか?

systemd 208(デフォルトのインストール)でopenSUSE 13.1 x86-64を実行しています。


ここでArch Linuxの同じsystemd 208。journalctl --user --user-unit chattysystemdからこれらの開始/停止メッセージを取得するために使用できますが、少なくとも私の場合は、エコープロセスが出力するものは取得できません。エコーされたメッセージを取得journalctl --userするか、他のフィルターを使用できます。
lilydjwg 14年

回答:


20

--user-unitオプションを使用し、あなたの場合...

journalctl --user-unit chatty

ログ出力にも「chatty.serviceからのテスト」stdoutメッセージが表示されますか、または「chatty.serviceを開始しています...」および「chatty.serviceを開始しました」だけです。メッセージ?
Quantumboredom

はい、プロセスからの出力も取得できました(つまり、「chatty.serviceからのテスト」メッセージ)。
elynnaie

それも私が期待していたことですが、ここには表示されません。実行しているオペレーティングシステム(バージョン)を尋ねてもいいですか?
Quantumboredom

Arch Linux 3.13.7-1。systemdにバージョン212
elynnaie

2
メインのjournalctlに出力が表示されています。しかし、私が走ろうjournalctl --userとするNo journal files were found.と、私は得ますそして、それjournalctl --user-unit chattyは私のために働きませんでした。
CMCDragonkai 14

6

ネクロポスティングですが、今日は同じ問題に直面し解決しました。journalctl --user-unit chattyルートから実行したため、おそらく動作しませんでした。ただし、perはman journalctl--user-unitだけでなくによって_SYSTEMD_USER_UNIT=もログエントリをフィルタリングします。また、rootのuidを持つサービス_UID=がないchattyため、エントリは見つかりません。

journalctl --user-unit chatty通常のユーザーからも実行しようとしたが、を取得した可能性がありますNo journal files were found。これは、(およびので起こるすべてのユーザーが自分のプライベートなユーザごとのジャーナルへのアクセスを許可されてからman journalctlまだデフォルトでは永続的ではありません、私のDebian 9 journalctlに2018年にここで混乱することができます)(Storage=auto/etc/systemd/journald.conf、および/var/log/journal/存在しない)、および非で永続モードjournaldはログの分割をサポートしていないため/run/log/journal、デフォルトで分割がオンになっているにもかかわらず、すべてのログが1か所にまとめられます-を参照SplitModeしてくださいman journald.conf。永続性を有効にすると、これが修正されます。

TL; DR:置くことによって永続性を有効Storage=persistent/etc/systemd/journald.confしてしてjournaldをリロードsudo systemctl restart systemd-journald

または、 sudo journalctl _SYSTEMD_USER_UNIT=chatty.service

詳細は https://lists.freedesktop.org/archives/systemd-devel/2016-October/037554.htmlにあります


2
ありがとうございました。私はなっていたNo journal files were opened due to insufficient permissions.アクセス権の設定について混乱「ヒント」で、私は、アクセスユーザーがログインではなく、システムログにしようとしていますので、私は権限を設定する必要はありません。修正は機能しました。どうもありがとう。
ロルフ

3

systemd v230まで--user-unit、ユーザーのユニットのログを表示するには、あまり直感的でないフラグを使用する必要がありました。

journalctl --user-unit chatty

systemd v230以降、期待どおりに--user--unitフラグを組み合わせることができます:

journalctl --user --unit chatty

この--user --unit構文は、Ubuntu 17.10。以降でサポートされています。


2
私は「--user --unit」機能がv230で機能しない...ここでv232を実行しているが、この機能は機能しない
-LeGEC
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.