🖥️

systemdで実行中のPythonのprint関数の出力をログに出力させてみた

2021/05/15に公開

Linux で systemd を使って Python コードを自動実行するときに print 関数の出力を journalctl で確認しようとすると確認できないので確認方法を調べました。

解決方法

[Service]セクションに以下の行を追加すると print 関数の内容をログに残すことができます。

Environment=PYTHONUNBUFFERED=1

では、実際に使ってみます。

以下の Python のコードを自動実行してみます(自動実行するほどでも無いけどw)

/opt/helloworld.py
#!/usr/bin/env python3
print('Hello World')

上記のスクリプトを実行するための service ファイルも用意します

/etc/systemd/system/helloworld.service
[Unit]
Description=Python Demo Service

[Service]
ExecStart=/opt/helloworld.py
Environment=PYTHONUNBUFFERED=1
Restart=on-failure

[Install]
WantedBy=default.target

Python のコードに対して実行権限を与えます。

sudo chmod 755 /opt/helloworld.py

その後、systemd で Python のコードを実行してみます。

sudo systemctl daemon-reload
sudo systemctl start helloworld.service

systemd 実行後にjornalctl -u helloworld.serviceを実行してログの中にHello Worldと表示されれば成功です。

Discussion