基本的な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を実行しています。
journalctl --user --user-unit chatty
systemdからこれらの開始/停止メッセージを取得するために使用できますが、少なくとも私の場合は、エコープロセスが出力するものは取得できません。エコーされたメッセージを取得journalctl --user
するか、他のフィルターを使用できます。