init.d 当网络完全正常工作时如何启动 init.d 中的服务?

init.d 当网络完全正常工作时如何启动 init.d 中的服务?

我有一个python脚本,它公开了一个RESTful服务(使用flask框架)。我希望用这个服务克隆最新版本的python脚本,然后启动main.py。

我很清楚它可能是在 init 级别 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找到您的发行版使用的模式。

或者,通常在启动周期的最后阶段运行。这将是放置启动代码的合适位置。在运行代码之前检查isrc.local的值。$1start

服务器按 中列出的顺序启动/etc/rc3.d。 终止脚本启动K按词汇顺序首先运行,然后启动脚本启动S按词汇顺序运行。 如果要确保所有内容都在运行,请使用 的启动顺序99

您的发行版应该有一种方法可以安装和删除rc#.d目录中的链接。 就您而言,它似乎是update-rc.d。 这通常由脚本顶部的注释行控制init.d

应该有man描述您所需程序和文件的页面。尝试运行man update-rc.dman -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

相关内容