为什么系统重启时不执行这个 init.d 脚本?

为什么系统重启时不执行这个 init.d 脚本?

我在 Linux 机器上有一个自制的 init.d 脚本,它可以在 Debian 4 和 Debian 5 上正常工作,但在 Debian 6(全新安装)中,它仅在系统启动时执行,而不是在重新启动之前执行。

该脚本实际上是这样的:

### BEGIN INIT INFO
# Provides:          selfheal
# Required-Start:
# Required-Stop:
# X-Start-Before:    mountall
# X-Stop-After:      umountfs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: selfheal tool
# Description:       Saves/restores the user partition at (re)boot
### END INIT INFO

echo $0 $*
sleep 3

# some useful stuff follows here...

reboot看到系统正在切换runlevel 6并卸载文件系统(见X-Stop-After: umountfs上文)。我的脚本没有任何生命迹象selfheal

在系统启动但是,我看到该echo行并且脚本正在执行。

我已经使用以下命令安装了脚本:

rm /etc/rc*.d/[SK]??selfheal && update-rc.d selfheal defaults

那里没有错误/警告。符号链接存在:

root@intermodul:~# ls -al /etc/rc6.d/
total 12
drwxr-xr-x  2 root root 4096 May 16 16:09 .
drwxr-xr-x 68 root root 4096 May 16 16:07 ..
<snip>
lrwxrwxrwx  1 root root   18 May 16 15:09 K09umountfs -> ../init.d/umountfs
lrwxrwxrwx  1 root root   18 May 16 16:09 K10selfheal -> ../init.d/selfheal
lrwxrwxrwx  1 root root   20 May 16 15:09 K10umountroot -> ../init.d/umountroot
lrwxrwxrwx  1 root root   16 May 16 15:09 K11reboot -> ../init.d/reboot
-rw-r--r--  1 root root  351 Jan  1 06:34 README

请注意,Debian 6 带来了并发启动,我猜我的“INIT INFO”有问题。

这里有什么问题吗?

更新

CONCURRENCY=none该脚本在设置时执行/etc/init.d/rc,但我希望启用 makefile 并发性。那么,为什么脚本不能在 makefile 并发模式下执行呢?

答案1

我找到了原因:

该脚本需要在该部分中使用以下行BEGIN INIT INFO,以便在我的脚本完成之前不会卸载根文件系统:

Should-Stop:       umountroot

这会导致umountroot“依赖”我的脚本。

相关内容