配置Linux开机启动脚本(基于initd)

本文的操作在我的Ubuntu 18.04上并不能正常工作,我觉得这和系统启动是使用initd还是systemd有关

检查根进程是initd还是systemd

通过

1
pstree -p|head -1

1
ps -ef|awk '($2==1)'

可以看到系统的1号进程,也就是启动全部进程的根进程是initd还是systemd。

systemd参考 配置Linux开机启动脚本(基于systemd)


创建开机启动脚本

先将脚本放在 /etc/init.d/ 下,例如脚本名为 new_service.sh

执行如下指令,在这里90表明一个优先级,越高表示执行的越晚

1
2
cd /etc/init.d/
sudo update-rc.d new_service.sh defaults 90

创建完成会在 /etc/rc*.d/ 下生成相应的软连接

rc后面的数字含义

  • 0 Halt the system 停机(千万不要把 initdefault 设置为0),机器关闭
  • 1 Single user mode 单用户模式,与 Win9x 下的安全模式类似
  • 2 Basic multi user mode 基本多用户模式,没有 NFS 支持
  • 3 Multi user mode 完整的多用户模式,是标准的运行级
  • 4 None 一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。
  • 5 Multi user mode with GUI 就是X11,进到XWindow系统了
  • 6 Reboot the system 重新启动(千万不要把initdefault 设置为6),运行 init 6 机器就会重启
  • S, s Single user mode

软连接开头为Kxx或Sxx,Kxx表示不启动(似乎和这个文件不存在一样),Sxx表示启动,xx是启动顺序,01~99。

移除开机启动脚本

1
sudo update-rc.d -f new_service.sh remove