
我有一個 python 腳本,它公開了 RESTful 服務(使用 Flask 框架)。我想用這個服務做的是它克隆最新版本的 python 腳本,然後啟動 main.py。
我很清楚,它可能會在 init level 3 啟動,但是我不確定 init 資訊必須如何準確配置,而且我也不確定是否可以使用以下命令更新 crontab
sudo update-rc.d myservice enable 3
myservice 腳本中的真正內容是這樣的:
#!/bin/sh
rm -fR /home/pi/myservicedir
git clone https://repo/code.git /home/pi/myservicedir
cd /home/pi/myservicedir
python main.py
答案1
您的腳本不是正確的init.d
腳本。可能有一個模板文件,/etc/init.d
您可以使用它來建立啟動腳本。否則,請查看 中的一些其他腳本/etc/init.d
以查找您的發行版所使用的模式。
或者,rc.local
通常在啟動週期的後期運行。這是放置啟動程式碼的合適位置。在運行程式碼之前檢查$1
is的值。start
伺服器按照 中列出的順序啟動/etc/rc3.d
。首先按詞法順序執行啟動的終止腳本,然後按詞法順序執行K
啟動腳本。S
如果您想確保一切都在運行,請使用啟動順序99
。
您的發行版應該有一種方法來安裝和刪除rc#.d
目錄中的連結。在你的情況下,它似乎是update-rc.d
。這通常由腳本頂部的註解行控制init.d
。
應該有man
一些頁面描述您需要的程序和文件。嘗試運行man update-rc.d
並man -k init
.
答案2
指定 $network,如下所示:
#!/bin/bash
### BEGIN INIT INFO
# Provides: mountftp
# Required-Start: $remote_fs $syslog $network
# Required-Stop: $remote_fs $syslog $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Mount disk2
# Description: Mount disk2
### END INIT INFO