我正在尝试设置我的系统,以便 emacs 守护进程在机器启动后启动。我已经使用要执行的命令创建了文件 /etc/init.d,但是当执行 update-rc.d 时,它会忽略我提供的序列号。
[host /etc/init.d]$ sudo update-rc.d -n emacs defaults 10 02
insserv: enable service ../init.d/emacs -> /etc/init.d/../rc0.d/K01emacs
insserv: enable service ../init.d/emacs -> /etc/init.d/../rc1.d/K01emacs
insserv: enable service ../init.d/emacs -> /etc/init.d/../rc2.d/S02emacs
insserv: enable service ../init.d/emacs -> /etc/init.d/../rc3.d/S02emacs
insserv: enable service ../init.d/emacs -> /etc/init.d/../rc4.d/S02emacs
insserv: enable service ../init.d/emacs -> /etc/init.d/../rc5.d/S02emacs
insserv: enable service ../init.d/emacs -> /etc/init.d/../rc6.d/K01emacs
insserv: dryrun, not creating .depend.boot, .depend.start, and .depend.stop
[host /etc/init.d]$
我很困惑为什么命令的最后两个参数被忽略,以及我是否可以忽略我将起始序列号设置为如此低的值这一事实。
答案1
update-rc.d defaults
不处理任何其他参数;它使用来自 init 脚本的信息LSB 标头确定要使用的优先级(序列号),并确定在哪些运行级别中启动和停止服务。
如果您的脚本仅依赖于$local_fs
,那么它最终的序列号较低是正常的;如果您查看,/etc/rc2.d
您会看到很多序列号较低的起始链接。如果您的脚本没有指定自己的运行级别,则使用默认值:从级别 2-5 开始,在级别 0、1 和 6 停止。要定义您自己的值,您通常会使用以下标头
### BEGIN INIT INFO
# Provides: emacs
# Required-Start: $local_fs $network $remote_fs
# Required-Stop: $local_fs $network $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop the Emacs daemon
### END INIT INFO
(根据需要调整各种值)。
您还可以使用update-rc.d enable
和update-rc.d disable
分别启用和禁用特定运行级别中的脚本(例如 update-rc.d emacs disable 3
)。