systemd 起動スクリプトが動作しない

systemd 起動スクリプトが動作しない

私は、単に開始または停止引数を持つ Python スクリプトを呼び出す systemd 起動スクリプトを作成しました。このスクリプトは、シェルから手動で実行すると機能しますが、systemctl start foo または systemctl stop foo を実行すると機能しません。

[Unit]
Description=foo Backends
After=network.target remote-fs.target nss-lookup.target

[Service]
ExecStart=/opt/foo/scripts/init_backends.py start
ExecStop=/opt/foo/scripts/init_backends.py stop
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

シェルから/opt/foo/scripts/init_backends.py startを呼び出すと問題なく動作することに注意してください。

答え1

以下の設定を使用すると動作するようになりました。StandardOutput=ttyが鍵だったと思います

[Unit]
Description=foo Backends
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/opt/foo/scripts/init_backends.py start
ExecStop=/opt/foo/scripts/init_backends.py stop
User=root
Group=root
TimeoutSec=300
StandardOutput=tty
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

関連情報