我使用 Ubuntu 12.04.1,
我只是想找到一个管理服务的好工具,但我发现它并不存在……
本机“update-rc.d”管理服务,但不提供信息,而本机“chkconfig”不提供信息,但当我尝试在某些运行级别激活某些服务时会抛出错误。
无论如何,我只是列出了 /etc/rc0.d/ 目录,并找到了网络脚本的启动链接(以“S”开头的链接):
user@comp:/etc/rc0.d$ ls -la
total 20
drwxr-xr-x 2 root root 4096 окт. 11 16:45 .
drwxr-xr-x 139 root root 12288 окт. 21 11:55 ..
lrwxrwxrwx 1 root root 17 окт. 11 16:45 K09apache2 -> ../init.d/apache2
lrwxrwxrwx 1 root root 29 окт. 11 04:39 K10unattended-upgrades -> ../init.d/unattended-upgrades
lrwxrwxrwx 1 root root 27 окт. 11 04:39 K20speech-dispatcher -> ../init.d/speech-dispatcher
-rw-r--r-- 1 root root 353 июля 26 20:23 README
lrwxrwxrwx 1 root root 18 окт. 11 04:39 S20sendsigs -> ../init.d/sendsigs
lrwxrwxrwx 1 root root 17 окт. 11 04:39 S30urandom -> ../init.d/urandom
lrwxrwxrwx 1 root root 22 окт. 11 04:39 S31umountnfs.sh -> ../init.d/umountnfs.sh
lrwxrwxrwx 1 root root 20 окт. 11 04:39 S35networking -> ../init.d/networking
lrwxrwxrwx 1 root root 18 окт. 11 04:39 S40umountfs -> ../init.d/umountfs
lrwxrwxrwx 1 root root 20 окт. 11 04:39 S60umountroot -> ../init.d/umountroot
lrwxrwxrwx 1 root root 14 окт. 11 04:39 S90halt -> ../init.d/halt
我唯一的问题是:这样可以吗?
如果可以,为什么网络服务要在停机运行级别启动?
如果不行,我该如何修复?
答案1
看一下/etc/init.d/halt
。这个文件肯定属于/etc/rc0.d
- 它唯一定义的是stop
功能(即/etc/init.d/halt start
无操作)。因此,我们可以假设中的脚本/etc/rc0.d
是使用stop
而不是start
参数调用的。
然后看一下/etc/init.d/networking
,我们看到:
stop)
check_network_file_systems
check_network_swap
log_action_begin_msg "Deconfiguring network interfaces"
if ifdown -a --exclude=lo $verbose; then
log_action_end_msg $?
else
log_action_end_msg $?
fi
;;
它首先确保网络上不再安装任何文件系统(umountnfs.sh
运行后应该是这种情况),然后禁用网络(通过ifdown
),例如,释放 DHCP 租约或在网络取消配置后想要做的任何其他合理的操作。
总而言之,有一个链接/etc/init.d/networking
是/etc/rc0.d
完全没问题的。
(请注意,我使用的是 Debian,但脚本基本上应该是相同的。)
此外,您通常应该使用update-rc.d
,它能够启用/禁用服务(针对特定运行级别或一般情况),并ls
查看哪些服务已启用/禁用。我猜 Ubuntu 不会很快切换到 systemd,尽管如果愿意的话,显然可以在 Debian 中安装它。