debian LSB开机启动项脚本学习笔记

这篇笔记详细介绍了Debian系统中LSB开机启动脚本的构成,包括声明部分、参数设置、运行级别和启用停用方法。通过示例展示了如何编写和优化电源管理的启动脚本,帮助读者掌握如何管理系统的启动项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

·· / ·– ·· ·-·· ·-·· / ·–· · ·-· ··· ·· ··· - / ··- -· - ·· ·-·· / ·· / ·– ·· -·

基本组成

1、首先,要在开头加上“#!/bin/sh”,声明shell路径。如果不加的话,在开机时会遇到无法执行的问题。
2、然后是这样一个类似的声明部分(声明部分直接影响启动顺序):

### BEGIN INIT INFO
# Provides:          scriptname
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

3、然后是要执行的脚本
4、最后是返回值(最好有,否则甚至可能导致崩溃)

exit 0

示例

这里是我根据powertop优化建议写的一个开机脚本,用来优化电源管理。

#!/bin/sh
### BEGIN INIT INFO
# Provides:          powertop-rc
# Required-Start:    $remote_fs $syslog $all
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start powertop auto tune at boot time
# Description:       Start powertop auto tune at boot time to save power.
### END INIT INFO

ethtool -s eth0 wol d;
iw dev wlan0 set power_save on
echo '0' > '/proc/sys/kernel/nmi_watchdog';
echo 'min_power' > '/sys/class/scsi_host/host4/link_power_management_policy';
echo 'min_power' > '/sys/class/scsi_host/host5/link_power_management_policy';
echo 'min_power' > '/sys/class/scsi_host/host3/link_power_management_policy';
echo 'min_power' > '/sys/class/scsi_host/host1/link_power_management_policy';
echo '1' > '/sys/module/snd_hda_intel/parameters/power_save';
echo 'min_power' > '/sys/class/scsi_host/host0/link_power_management_policy';
echo 'min_power' > '/sys/class/scsi_host/host2/link_power_management_policy';
echo '1500' > '/proc/sys/vm/dirty_writeback_centisecs';
echo 'auto' > '/sys/bus/usb/devices/3-1.2/power/control';
echo 'auto' > '/sys/bus/usb/devices/3-1.3/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:00.0/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:01.0/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:02.0/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:14.0/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:16.0/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:1b.0/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:1c.1/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:1f.0/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:1c.0/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:1d.0/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:1f.2/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:1f.3/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:01:00.0/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:03:00.0/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:04:00.0/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:05:00.0/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:1a.0/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:1c.3/power/control';

exit 0

参数

下面是针对声明部分一些参数的解释(根据debian wiki翻译)

  • Provides: boot_facility_1 [boot_facility_2…]
    Provides栏对应的是启动项的名称,默认地,可以直接使用脚本的文件名(去掉.sh)为启动项名称,但Provides能给启动项提供别名。注意启动项的名称不能和其它启动项冲突,并且不能以’$’开头。

  • Required-Start: boot_facility_1 [boot_facility_2…] 和 Required-Stop: boot_facility_1 [boot_facility_2…]
    这两项分别定义该启动项要在哪些启动项启动之后启动和必须在哪些项终止之前终止。通常两者的参数是相同的。如果缺省,则意味着脚本没有什么依赖,在bootstrap之后(挂载本地文件系统之前)就将被执行。

  • Should-Start: boot_facility_1 [boot_facility_2…] 和 Should-Stop: boot_facility_1 [boot_facility_2…]
    用法和Required-Start/Stop类似,唯一的不同是即使列出的依赖项没有启动(或终止),该启动项仍能启动(或终止)。

  • Default-Start: run_level_1 [run_level_2…] 和 Default-Stop: run_level_1 [run_level_2…]
    定义该启动项应该在哪些运行级别执行。比如一个启动项应该在运行级别3,4,5运行,那么这里就应该写”Default-Start: 3 4 5” and “Default-Stop: 0 1 2 6”

  • Short-DescriptionDescription
    同为描述。前者限制一行,后者允许多行。注意Description的每一行都要求以’#’加两个空格或一个tab开头。

补充

几个虚拟启动项的名字和作用
  • $local_fs 所有文件系统都被挂载,但是/usr等一些目录可能不被挂载。
  • $remote_fs 所有文件系统都被挂载,包括/usr等目录,可以认为remote_fs包括local_fs
  • $syslog 允许使用系统日志
  • $all 尽量使该启动项最后执行(只适用于启动顺序,不是用于终止顺序)
LSB运行级别
  • 0 关机
  • 1 单用户模式,为管理任务准备
  • 2 多用户模式,没有网络设备
  • 3 带网络设备的多用户模式
  • 4 给用户预留的(一般不用)
  • 5 正常启动系统(带图形界面)
  • 6 重启
启用和停用脚本

1、把脚本cp至/etc/init.d/目录下,然后chmod +x赋予可执行权限。
2、然后执行

update-rc.d test.sh defaults

其中test.sh替换为具体文件名。
3、若要停用脚本,删除test.sh然后执行

update-rc.d test.sh remove

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值