linux开机自启动脚本以及update-rc.d命令解析

本文介绍了Linux中使用update-rc.d命令来管理自启动脚本的方法。包括如何创建初始化脚本,设置启动级别和依赖,并通过update-rc.d命令添加启动和停止的软链接到rcN.d目录。此外,还提到了手动创建软链接到rcS或rcN.d以实现自启动。
摘要由CSDN通过智能技术生成

linux有很多种自启动方式,这里只是简单记录下update-rc.d的自启动方式

update-rc.d的介绍

update-rc.d命令用于安装或移除System-V风格的初始化脚本连接。脚本是存放在 /etc/init.d/目录下的,我们可以直接在/etc/init.d/目录下创建执行脚本,然后在rcN.d或者rcS.d中创建软链接,系统启动时会从rcS-rc0…rc6顺序启动文件夹里的启动脚本

在/etc/目录下存在如下八个文件夹,7个rcN和一个rcS

liuge@liuge-VirtualBox:/etc$ ls | grep rc
rc0.d
rc1.d
rc2.d
rc3.d
rc4.d
rc5.d
rc6.d
rcS.d

rcN
0(关闭系统)
1(单用户模式,只允许root用户对系统进行维护。)
25(多用户模式,其中3为字符界面,5为图形界面。)
6(重启系统)
init [0123456Ss]
例如:init 0 命令关机; init 6 命令重新启动

每个文件夹中都包含S与K开头的软链接,S代表启动,K代表结束,S-NN-name,NN代表调度优先级,越低越高,name代表init.d里脚本的名字
例如rc2.d中如下

liuge@liuge-VirtualBox:/etc$ ls rc2.d/
K01speech-dispatcher  S01cups-browsed                 S01rsync
S01acpid              S01dbus                         S01rsyslog
S01anacron            S01gdm3                         S01saned
S01apport             S01grub-common                  S01spice-vdagent
S01avahi-daemon       S01irqbalance                   S01unattended-upgrades
S01bluetooth          S01kerneloops                   S01uuidd
S01console-setup.sh   S01openvpn                      S01whoopsie
S01cron               S01plymouth
S01cups               S01pulseaudio-enable-autospawn

首先查一下当前linux版本中update-rc.d的支持情况

liuge@liuge-VirtualBox:/etc/init.d$ update-rc.d --version
update-rc.d: error: unknown option
usage: update-rc.d [-f] <basename> remove
       update-rc.d [-f] <basename> defaults
       update-rc.d [-f] <basename> defaults-disabled
       update-rc.d <basename> disable|enable [S|2|3|4|5]
		-f: force

The disable|enable API is not stable and might change in the future.

可以看到当前版本建议使用前三个命令

update-rc.d完成自启动

使用update-rc.d命令完成自启动

  1. 编写脚本,添加如下头部信息

这里包含了启动命令所需要的level以及依赖等

#!/bin/bash

### BEGIN INIT INFO
# Provides:     test
# Required-Start:  $remote_fs $syslog
# Required-Stop:   $remote_fs $syslog
# Default-Start:  2 3 4 5
# Default-Stop:   0 1 6
# Short-Description: start test
# Description:    start test
### END INIT INFO
cd /home
touch mytest.txt
echo "hello world" >> /home/mytest.txt

  1. 将该脚本拷贝到/etc/init.d中
  2. cd /etc/init.d ,运行sudo update-rc.d name defaults, 该命令会根据前者脚本所写信息,分别将启动和终止的软链接添加到rcN.d中
liuge@liuge-VirtualBox:/etc/init.d$ sudo update-rc.d mystart defaults
lrwxrwxrwx 1 root root 17 1130 14:00 S01mystart -> ../init.d/mystart

  1. 完成

手动添加自启动脚本

  1. 同上,将启动脚本添加到/etc/init.d中,这里的脚本可不需要之前脚本的前缀内容
  2. 手动选择在rcS或者rcN.d中添加软链接
liuge@liuge-VirtualBox:/etc/rc2.d$ sudo ln -s ../init.d/test_bf.sh S02test_bf
lrwxrwxrwx 1 root root 20 1130 14:01 S02test_bf -> ../init.d/test_bf.sh

  1. 完成
  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值