start 또는 stop args를 사용하여 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