【发布时间】:2014-01-01 21:30:15
【问题描述】:
我一直在尝试设置一个脚本以在 Debian 7.1 系统上启动时运行一段时间,但没有成功。我试过同时使用 insserv 和 update-rc.d,但我的问题似乎与这两种工具相同。这是我的脚本的 LSB 部分:
#!/bin/bash
### BEGIN INIT INFO
# Provides: start_guest
# Required-Start: $bootlogs $sudo $virtualbox-guest-utils $syslog
# Required-Stop: $bootlogs $sudo $virtualbox-guest-utils $syslog
# Should-Start:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start_guest
### END INIT INFO
使用 update-rc.d,以下是我尝试过的各种命令,结果都一样:
sudo update-rc.d start_guest defaults
sudo update-rc.d start_guest defaults 22
sudo update-rc.d start_guest start 22 2 3 4 5 . stop 78 2 3 4 5 .
无论我运行哪一个,都会被告知(仅显示运行级别 2,因为 2、3、4、5 相同,0、1、6 都是 K01):
insserv: remove service /etc/init.d/../rc2.d/S21rc.local
insserv: enable service ../init.d/rc.local -> /etc/init.d/../rc2.d/S20rc.local
insserv: remove service /etc/init.d/../rc2.d/S21rmnologin
insserv: enable service ../init.d/rmnologin -> /etc/init.d/../rc2.d/S20rmnologin
insserv: enable service ../init.d/start_guest -> /etc/init.d/../rc2.d/S17start_guest
无论我得到什么样的依赖信息,我都无法让它从 S17 以外的地方开始。不幸的是,../rc2.d/S19bootlogs 将在我的脚本之后启动,这将阻止我有时获取关键的日志信息。
当我尝试用 insserv 做同样的事情时,我被告知正常服务已被指示启动我的新服务,但它似乎仍然没有遵循依赖顺序。在 start_guest 开始运行之前,我需要运行更多服务(例如 sudo、virtualbox-guest-utils 等)
me@bronze:/etc/init.d# sudo insserv start_guest
insserv: Service remote_fs has to be enabled to start service start_guest
insserv: Service syslog has to be enabled to start service start_guest
insserv: exiting now!
David Krmpotic's answer to this question 几乎回答了我的问题,但似乎也没有遵循“必需启动”依赖项。
如何让我的脚本在启动时运行并遵循给定的依赖项?谢谢!
【问题讨论】: