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
茂垣です。
> journaldのログは、以下のコマンドで確認する事ができます。
> root@armadillo:~# journalctl
>
> ※"/[検索したい文字列]"を入力し、Enterを押下すると、文字列の検索ができます。
> 検索後は"n"を入力することで、次の文字列を検索できます。
> コマンドを終了する際は、キーボードの"q"を入力してください。
上記の方法は環境によって機能しない事がありました。申し訳ありません。
検索方法について補足いたします。
journalctlコマンドに-uオプションを付け、ユニット名を指定する事で
対象のユニットのログだけを表示する事ができます。
root@armadillo:~# journalctl -u [ユニット名]
よろしくお願いいたします。
m.kojima
at_keita.mogaki
2018年3月22日 10時34分
茂垣です。
> 今現在デバッグ中により、printf文を記述して標準出力してる箇所が存在しますが、
> 標準出力している文字列が表示されません。
> 表示させる方法はありますでしょうか。
systemdによって起動したアプリケーションの標準出力/標準エラー出力は、journaldで管理されたログに保存されています。
journaldのログは、以下のコマンドで確認する事ができます。
root@armadillo:~# journalctl
※"/[検索したい文字列]"を入力し、Enterを押下すると、文字列の検索ができます。
検索後は"n"を入力することで、次の文字列を検索できます。
コマンドを終了する際は、キーボードの"q"を入力してください。
> C言語で作成したアプリケーションの自動起動を行っています。
journaldのログは、Systemdで管理されている他のデーモンと共通のログです。
そのため、他のアプリケーションの起動に関わるログも、こちらに記録されています。
また、実運時にjournaldに大量のログを出力することは極力避けてください。
これは、他のアプリケーションのログを圧迫してしまうためです。
よろしくお願いいたします。