Debian 6,使用 insserv 代替 update-rc.d

这篇博客介绍了在Debian 6系统中,如何使用insserv命令来替代旧的update-rc.d命令进行系统启动项的管理。内容包括insserv的用法、LSB头部的结构和作用,以及启动脚本的命名、依赖关系和行为。同时,文中还提及了LSB头部分的各种字段,如Provides、Required-Start、Required-Stop等,以及SystemV启动脚本中的一些重要工具和行为规范。
摘要由CSDN通过智能技术生成

我们都知道,在Debian 5下面设置系统启动项使用的是 update-rc.d 命令,如:

/usr/sbin/update-rc.d xxx defaults 98

可以参考:http://wangyan.org/blog/ubuntu-update-rc-d.html


但是在 Debian 6 下面,已经没有 update-rc.d 命令了,取而代之的是:insserv 。

下面简单介绍一下它的用法:(下班了,赶紧拷贝一份过来吧)

转自:https://zh.opensuse.org/index.php?title=openSUSE:Packaging_init_scripts&variant=zh

命名

启动脚本的命名必须与 LSB 兼容,它必须被列示在 http://www.lanana.org/lsbreg/init/init.txt。http://www.lanana.org/lsbreg/instructions.html 描述了如何注册新名称。

SuSE 除非是基础核心包,用户软件没必要去注册这种名称,一般命名就是包名,守护程序是包名 + 字母d。

结构

/etc/init.d/skeleton 文件是一个空白的启动脚本,体现了启动脚本的结构。该文件也可以作为启动脚本的模板。

强烈推荐打开这份文件再继续阅读下面内容,否则就会像听天书一样。

LSB 头部

启动脚本本身也是终端脚本,因为文件的开头和其他终端脚本的常规开头一样:

#!/bin/sh

或者

#!/bin/bash

接着通常会是注释。注释应该说明作者、版权或授权方式的信息。启动脚本还必须包含一部分特殊的注释头部来提供关于启动脚本本身的元数据信息。

LSB 头部是由注释作为上下文区别开的边界,该头部的上界是:

### BEGIN INIT INFO

下界是:

### END INIT INFO

所有的 LSB 头部必须有这样的上下边界。

下面例子出自 /etc/init.d/esound:

 # 1995-2002, 2008 SUSE Linux Products GmbH, Nuernberg, Germany.
 # All rights reserved.
 #
 # Author: Stanislav Brabec, feedback to http://www.suse.de/feedback
 #
 ### BEGIN INIT INFO
 # Provides:          esound
 # Required-Start:    alsasound $remote_fs
 # Should-Start:      $network $portmap
 # Required-Stop:     alsasound $remote_fs
 # Should-Stop:       $network $portmap
 # Default-Start:     5
 # Default-Stop:
 # Short-Description: Sound daemon with network support
 # Description:       Starts esound server to allow remote access to sound
 #       card. To use esound locally, you do not need to start this
 #       server on boot. You should edit server settings before
 #       starting it via sysconfig editor: Network/Sound/Esound
 ### END INIT INFO

LSB 头部由以下几个部分组成:

# Provides: 行

LSB 头部的 # Provides: 行列出了所有本脚本服务能提供的引导设施。其他的服务可以在它们的 # Required-Start: 和 # Required-Stop: 行中引入我们提供的这些引导设施。 引导设施通常是守护程序的名字。如果多个软件包提供了相同的引导设施(例如 sendmail vs. postfixdhcpcd vs. dhclient),两者的启动脚本应该提供相同的引导设施名。

# Provides: boot_facility_1 [boot_facility_2...]

当启动脚本带着一个 start 开始参数运行时,即 /etc/init.d/NetworkManager start 这样,Provides 关键词指定的引导设施(们)就被视为可用的,因此其他要求这些引导设施的启动脚本就可以随后启动。当启动脚本带着一个 stop 停止参数运行时,即 /etc/init.d/NetworkManager stop 这样,Provides 关键词指定的引导设施就被视为不再可用。

# Required-Start: 行

LSB 头部的 # Required-Start: 行列出了任何启动此脚本服务必须的引导设施。

# Required-Start: boot_facility_1 [boot_facility_2...]

本行是必须的,即使你的启动脚本不需要任何其他启动脚本提供的引导设施,你也必须有这行,哪怕它是空的!

# Required-Stop: 行

LSB 头部的 # Required-Stop: 行列出了所有在停止本脚本服务之前必须不能先行停止的引导设施。

# Required-Stop: boot_facility_1 [boot_facility_2...]

本行是可选的,如果一个启动脚本不需要任何在它停止前不能被停止的引导设施,那么就不需要该行。

# Should-Start: 行

LSB 头部的 # Should-Start: 行列出了任何一旦可用就应该在启动本脚本服务前被启动的引导设施。目的是允许额外的即使不可用也不会造成本脚本服务失败的依赖。

# Should-Start: boot_facility_1 [boot_facility_2...]

本行为可选,如果一个启动脚本不需要启动任何可选依赖,那么可以没有本行。

# Should-Stop: 行

LSB 头部的 # Should-Stop: 行列出了所有一旦可用就不能在停止本脚本服务前停止的引导设施。目的是允许额外的即使不可用也不会造成本脚本服务失败的依赖。

# Should-Stop: boot_facility_1 [boot_facility_2...]

本行为可选,如果一个启动脚本不需要任何在它停止前不能停止的额外依赖,本行可以没有。

LSB 允许为本头部定义发行版专有的插件。这样的插件应该以 X-出品商标签- 开头,比如 X-SuSE-。以下是 openSUSE 发行版专有的插件:

# X-Start-Before: 行

LSB 头部的 # X-Start-Before: 行的意思是说本行中所提到的脚本应该在本脚本启动前被启动。

# X-Start-Before: boot_facility_1 [boot_facility_2...]

本行是可选的,目前是 openSUSE 发行版专有的。

# X-Stop-After: line

LSB 头部的 # X-Stop-After: 行的意思是说这里列出的脚本应该在本脚本服务停止后也被停止。

# X-Stop-After: boot_facility_1 [boot_facility_2...]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值