Ubuntu 服务启动配置

提示:本文更新于 5219 天前,技术内容可能已发生变化,仅供参考。

今天我有点傻,居然使用 apt-get install 来安装 chkconfig 工具以修改 Ubuntu 的启动服务项,其实在 Ubuntu 下有一个 update-rc.d 工具可以很好地操作启动服务脚本。此外,还可以使用 update-rc.d-insserv 来代替 update-rc.d,它们的语法和作用效果似乎是一样的,不过暂时还不清楚这两个命令的区别。只是我今天在使用 update-rc.d-insserv 替换 update-rc.d 执行删除启动服务操作时,可以避免 update-rc.d 会出现的一些错误提示。如果有哪位朋友知道它们的区别,还望告知一下。

update-rc.d 的一些常用操作如下:

  1. 设置指定启动顺序、指定运行级别的启动项:

    update-rc.d <service> start <order> <runlevels>
  2. 设置在指定运行级中,按指定顺序停止:

    update-rc.d <service> stop <order> <runlevels>
  3. 从所有的运行级别中删除指定的启动项:

    update-rc.d -f <script-name> remove

在 Ubuntu 的 /etc 目录下,有 rc0.drc1.drc2.drc3.drc4.drc5.drc6.dinit.d 几个文件夹,它们起着控制 Ubuntu 服务启动的作用:

drwxr-xr-x   2 root    root 4.0K 2010-10-07 11:23 rc0.d
drwxr-xr-x   2 root    root 4.0K 2010-10-07 11:23 rc1.d
drwxr-xr-x   2 root    root 4.0K 2010-10-07 11:22 rc2.d
drwxr-xr-x   2 root    root 4.0K 2010-10-07 11:23 rc3.d
drwxr-xr-x   2 root    root 4.0K 2010-10-07 11:23 rc4.d
drwxr-xr-x   2 root    root 4.0K 2010-10-07 11:22 rc5.d
drwxr-xr-x   2 root    root 4.0K 2010-10-07 11:23 rc6.d
drwxr-xr-x   2 root    root 4.0K 2010-10-06 22:39 init.d/

init.d 文件夹存放着服务的脚本,如下所示:

lrwxrwxrwx   1 root root   21 2010-07-15 21:37 acpid -> /lib/init/upstart-job
-rwxr-xr-x   1 root root  652 2010-04-23 20:13 acpi-support
lrwxrwxrwx   1 root root   21 2010-07-16 04:56 alsa-mixer-save -> /lib/init/upstart-job
lrwxrwxrwx   1 root root   21 2010-07-16 04:56 anacron -> /lib/init/upstart-job
-rwxr-xr-x   1 root root 6.1K 2010-04-14 03:27 apache2
-rwxr-xr-x   1 root root 3.5K 2010-03-31 03:58 apparmor
lrwxrwxrwx   1 root root   21 2010-07-16 04:56 apport -> /lib/init/upstart-job
lrwxrwxrwx   1 root root   21 2010-07-16 04:56 atd -> /lib/init/upstart-job
lrwxrwxrwx   1 root root   21 2010-10-04 08:57 avahi-daemon -> /lib/init/upstart-job
-rwxr-xr-x   1 root root 1.8K 2010-02-17 22:00 binfmt-support
……

rc(x).d 文件夹存放着相应运行在 x 级下的服务的脚本链接,即 rc0.drc1.drc2.drc3.drc4.drc5.drc6.d 这六个不同的目录里分别放置着对应的六个运行级别下系统需要执行的脚本。以下是 rc2.d 目录下的内容,都是相应服务的脚本链接,S 表示启动,数字表示启动顺序:

lrwxrwxrwx   1 root root   24 2010-10-07 11:22 S01binfmt-support ->../init.d/binfmt-support
lrwxrwxrwx   1 root root   20 2010-10-07 11:22 S01fancontrol ->../init.d/fancontrol
lrwxrwxrwx   1 root root   27 2010-10-07 11:22 S01speech-dispatcher ->../init.d/speech-dispatcher
lrwxrwxrwx   1 root root   22 2010-10-07 11:22 S05acpi-support ->../init.d/acpi-support
lrwxrwxrwx   1 root root   14 2010-10-07 11:22 S05cups ->../init.d/cups
lrwxrwxrwx   1 root root   20 2010-10-07 11:22 S05pulseaudio ->../init.d/pulseaudio
lrwxrwxrwx   1 root root   15 2010-10-07 11:22 S05rsync ->../init.d/rsync
lrwxrwxrwx   1 root root   17 2010-10-07 11:22 S05winbind ->../init.d/winbind
lrwxrwxrwx   1 root root   19 2010-10-07 11:22 S06bluetooth ->../init.d/bluetooth
lrwxrwxrwx   1 root root   19 2010-10-07 11:22 S06dns-clean ->../init.d/dns-clean
lrwxrwxrwx   1 root root   20 2010-10-07 11:22 S06kerneloops ->../init.d/kerneloops
lrwxrwxrwx   1 root root   18 2010-10-07 11:22 S06pppd-dns ->../init.d/pppd-dns
lrwxrwxrwx   1 root root   15 2010-10-07 11:22 S06saned ->../init.d/saned
lrwxrwxrwx   1 root root   21 2010-10-07 11:22 S07grub-common ->../init.d/grub-common
lrwxrwxrwx   1 root root   18 2010-10-07 11:22 S07ondemand ->../init.d/ondemand

关于系统运行的六个级别,可以简单解释如下(相应的六个级别可以参照 Debian 的运行级别):

  • 0 为停机,机器关闭。
  • 1 为单用户模式,类似于 Win9x 下的安全模式。
  • 2 为多用户模式,但没有 NFS 支持。
  • 3 为完整的多用户模式,是标准的运行级。
  • 4 一般不使用,在一些特殊情况下可以用它来做一些事情,例如在笔记本电脑电池耗尽时,可以切换到这个模式进行一些设置。
  • 5 为 X11,进入 X Window 系统。
  • 6 为重启,运行 init 6 机器将会重启。

要查看当前系统运行在什么级别下,可以使用 runlevel 命令:

holmesian@holmesian-laptop:/etc/init.d$ runlevel 
N 2

上述命令的结果表示当前系统运行在级别 2 下。


「倘若有所帮助,不妨酌情赞赏!」

Holmesian

感谢您的支持!

使用微信扫描二维码赞赏


相关文章

发表新评论
仅有 1 条评论
  1. xuexile

    学习了

    xuexile 回复