繁体   English   中英

在 Raspian 上启动一个简单的 HTTPServer 作为服务

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM