首先讓我說這不是一個生產系統,我不打算讓它成為一個!
我有兩個腳本:
/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 &
我遇到的問題是它在重新啟動后無法啟動(無論與號是否存在)。
uj5u.com熱心網友回復:
創建系統服務
要將腳本轉換為服務,請創建 .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
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/369242.html
下一篇:將shell引數傳遞給java
