systemd

systemdで環境変数を設定した際、起動後に(念の為)確認したい場合

TL;DR

# リンク先例
tr '\0' '\n' < /proc/<pid-of-daemon>/environ

# pgrep利用(1プロセスのみ特定可能な場合)
tr '\0' '\n' < /proc/$(pgrep -f <process-name>)/environ

# systemctl show利用(複数プロセス起動するものでMainPIDが取得したい場合)
tr '\0' '\n' < /proc/$(systemctl show <unit-name> -p ExecMainPID | cut -d= -f2)/environ 

参考例発見

tr '\0' '\n' < /proc/<pid-of-daemon>/environ

Bug 1193453 – "systemctl show" doesn't show environment variables defined when EnvironmentFile is used

なかなか検索がヒットしなかった中、上記を発見。
つまり、起動後じゃないと見れないから確認するコマンド(systemctl xxx)はないみたい。
ちなみにsystemctl show-environmentはちょっと違う。

ちなみに'\0'はNull

pgrepで少し楽に

毎回systemctl statusとかしてpid確認するのも面倒なので下記でも良さそう。

tr '\0' '\n' < /proc/$(pgrep -f <process-name>)/environ

pgrepでpid複数になっちゃうような場合

複数プロセスあるよ、とかだったら下記かなと思うけど、長い。。。

tr '\0' '\n' < /proc/$(systemctl show <unit-name> -p ExecMainPID | cut -d= -f2)/environ