Armadilloフォーラム

Armadillo-IoT G3 自動起動時の標準出力表示について

m.kojima

2018年3月19日 14時35分

いつもお世話になっております。小島と申します。

ブログの「Armadillo-X1, Armadillo-IoT G3/G3L: systemdでアプリを自動起動する方法(その1) 」を参考に
C言語で作成したアプリケーションの自動起動を行っています。

今現在デバッグ中により、printf文を記述して標準出力してる箇所が存在しますが、
標準出力している文字列が表示されません。
表示させる方法はありますでしょうか。

もしくは別の方法による自動起動の設定が必要でしょうか。

アドバイスいただきたく、よろしくお願いいたします。

下記設定時のステータスです。

root@armadillo:~# systemctl list-unit-files | grep testif
testif.service enabled
root@armadillo:~# systemctl start testif.service
root@armadillo:~#
root@armadillo:~#
root@armadillo:~# LANG=C systemctl status testif.service
* testif.service - TEST IF Software Ver1.00
Loaded: loaded (/etc/systemd/system/testif.service; enabled)
Active: active (running) since Thu 1970-01-01 11:53:43 JST; 2min 17s ago
Main PID: 1550 (testif)
CGroup: /system.slice/testif.service
`-1550 /root/testif

Jan 01 11:53:43 armadillo systemd[1]: Started Lock Monitor IF Software Ver1.00.
Jan 01 11:55:53 armadillo systemd[1]: Started Lock Monitor IF Software Ver1.00.
Hint: Some lines were ellipsized, use -l to show in full.
root@armadillo:~#

コメント

at_keita.mogaki

2018年3月22日 10時34分

茂垣です。

> 今現在デバッグ中により、printf文を記述して標準出力してる箇所が存在しますが、
> 標準出力している文字列が表示されません。
> 表示させる方法はありますでしょうか。

systemdによって起動したアプリケーションの標準出力/標準エラー出力は、journaldで管理されたログに保存されています。

journaldのログは、以下のコマンドで確認する事ができます。
root@armadillo:~# journalctl

※"/[検索したい文字列]"を入力し、Enterを押下すると、文字列の検索ができます。
 検索後は"n"を入力することで、次の文字列を検索できます。
 コマンドを終了する際は、キーボードの"q"を入力してください。

> C言語で作成したアプリケーションの自動起動を行っています。

journaldのログは、Systemdで管理されている他のデーモンと共通のログです。
そのため、他のアプリケーションの起動に関わるログも、こちらに記録されています。

また、実運時にjournaldに大量のログを出力することは極力避けてください。
これは、他のアプリケーションのログを圧迫してしまうためです。

よろしくお願いいたします。

at_keita.mogaki

2018年3月22日 11時12分

茂垣です。

> journaldのログは、以下のコマンドで確認する事ができます。
> root@armadillo:~# journalctl
>
> ※"/[検索したい文字列]"を入力し、Enterを押下すると、文字列の検索ができます。
>  検索後は"n"を入力することで、次の文字列を検索できます。
>  コマンドを終了する際は、キーボードの"q"を入力してください。

上記の方法は環境によって機能しない事がありました。申し訳ありません。
検索方法について補足いたします。

journalctlコマンドに-uオプションを付け、ユニット名を指定する事で
対象のユニットのログだけを表示する事ができます。

root@armadillo:~# journalctl -u [ユニット名]

よろしくお願いいたします。

茂垣様

お世話になります。小島です。

> journalctlコマンドに-uオプションを付け、ユニット名を指定する事で
> 対象のユニットのログだけを表示する事ができます。
>
> root@armadillo:~# journalctl -u [ユニット名]
>

上記、 journalctlコマンドにて標準出力の内容が表示されることを確認できました。
ご対応、ありがとうございました。