🖥️
systemdで実行中のPythonのprint関数の出力をログに出力させてみた
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