运行 脚本作为服务的系统配置
Systemd configuration to run script as service
如果我 运行 /home/pi/update.sh
一切正常;
如果我 运行 通过 systemd 服务,脚本将不会被执行。
脚本内容:
/home/pi/update.sh
#!/bin/sh
script='/opt/server/htdocs/due.py'
/usr/bin/python $script &
这是Systemd配置:下面的代码有没有错误?
/lib/systemd/system/httpdevice.service
/etc/systemd/system/multi-user.target.wants/httpdevice.service
[Unit]
Description=httpdevice-service
[Service]
Type=simple
User=pi
ExecStart=/home/pi/update.sh
[Install]
WantedBy=multi-user.target
此处状态:
sudo systemctl status httpdevice.service
● httpdevice.service - httpdevice
Loaded: loaded (/lib/systemd/system/httpdevice.service; enabled)
Active: inactive (dead) since Fri 2018-04-27 18:01:52 CEST; 17min ago
Process: 402 ExecStart=/home/pi/update.sh (code=exited, status=0/SUCCESS)
Main PID: 402 (code=exited, status=0/SUCCESS)
Apr 27 18:01:51 raspberrypi systemd[1]: Starting httpdevice...
Apr 27 18:01:51 raspberrypi systemd[1]: Started httpdevice.
这里的问题是Type=simple
。你的服务肯定开始了,然后退出。但是,您可能被 Python 子进程误导了。子进程不是 "simple" 服务的一部分。
只使用 ExecStart=/opt/bin/python opt/server/htdocs/due.py
并跳过整个脚本可能更简单。
如果我 运行 /home/pi/update.sh
一切正常;
如果我 运行 通过 systemd 服务,脚本将不会被执行。
脚本内容:
/home/pi/update.sh
#!/bin/sh
script='/opt/server/htdocs/due.py'
/usr/bin/python $script &
这是Systemd配置:下面的代码有没有错误?
/lib/systemd/system/httpdevice.service
/etc/systemd/system/multi-user.target.wants/httpdevice.service
[Unit]
Description=httpdevice-service
[Service]
Type=simple
User=pi
ExecStart=/home/pi/update.sh
[Install]
WantedBy=multi-user.target
此处状态:
sudo systemctl status httpdevice.service
● httpdevice.service - httpdevice
Loaded: loaded (/lib/systemd/system/httpdevice.service; enabled)
Active: inactive (dead) since Fri 2018-04-27 18:01:52 CEST; 17min ago
Process: 402 ExecStart=/home/pi/update.sh (code=exited, status=0/SUCCESS)
Main PID: 402 (code=exited, status=0/SUCCESS)
Apr 27 18:01:51 raspberrypi systemd[1]: Starting httpdevice...
Apr 27 18:01:51 raspberrypi systemd[1]: Started httpdevice.
这里的问题是Type=simple
。你的服务肯定开始了,然后退出。但是,您可能被 Python 子进程误导了。子进程不是 "simple" 服务的一部分。
只使用 ExecStart=/opt/bin/python opt/server/htdocs/due.py
并跳过整个脚本可能更简单。