[英]Starting a simple HTTPServer as a service on Raspian
首先让我说这不是一个生产系统,我也没有打算让它成为一个!
我有两个脚本:
/home/pi/start.sh(由 root 拥有):
#!/bin/bash
cd "$(dirname "$0")"
/usr/bin/python3 poolMonitor.py
和 /home/pi/stop.sh (由 root 拥有):
#!/bin/bash
sudo killproc -k -n poolMonitor.py
我有文件 /etc/init.d/poolMonitor (由 root 拥有):
#!/bin/bash
### BEGIN INIT INFO
# Provides: Pool Monitor
# Required-Start: $all
# Required-Stop:
# Default-Start: 5
# Default-Stop: 6
# Starts the Pool Monitor service
### END INIT INFO
start() {
echo -n "Starting : "
/home/pi/poolMonitor/start.sh
return
}
stop() {
echo -n "Shutting down : "
/home/pi/poolMonitor/stop.sh
return
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status poolMonitor
;;
restart)
stop
start
;;
*)
echo "Usage: {start|stop|status|reload|restart[|probe]"
exit 1
;;
esac
exit $?
我在 init.d 中安装了该服务,如下所示:
sudo update-rc.d poolMonitor defaults
我可以成功运行(启动和停止 web 服务器,我可以浏览到它):
sudo /home/pi/poolMonitor/start.sh
sudo /home/pi/poolMonitor/stop.sh
sudo service poolMonitor stop
sudo service poolMonitor start
注意,由于 HTTPServer 的性质,start.sh 永远不会返回。 我尝试在 start.sh 文件的行尾添加一个 & 符号:
/usr/bin/python3 poolMonitor.py &
我遇到的问题是它在重新启动后无法启动(与符号是否存在)。
创建系统服务
要将脚本转换为服务,请创建.service 文件:
vi /home/pi/poolMonitor.service
将此结构添加到 poolMonitor.service
[Unit]
Description=Pool Monitor
After=network-online.target
[Service]
ExecStart=/usr/bin/python3 /home/pi/poolMonitor.py
WorkingDirectory=/home/pi
StandardOutput=inherit
StandardError=inherit
Restart=always
[Install]
WantedBy=multi-user.target
将文件复制到 /lib/systemd/system
sudo cp /home/pi/poolMonitor.service /lib/systemd/system/
测试服务
sudo systemctl start poolMonitor.service
停止使用:
sudo systemctl stop poolMonitor.service
使用以下命令使您的服务在重新启动时自动启动:
sudo systemctl enable poolMonitor.service
从现在开始,您可以使用:
sudo service poolMonitor status/start/stop
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.