linux下设置开机启动项

服务(脚本)开机自启的几种方式

工作中正好要将某个脚本开机自启,百度了一下大概有几种方法:

  1. 将脚本放到 /etc/init.d/ 目录下,再在 /etc/rcN.d (N 表示 0~6 这7个数字,分别代表 linux 的七个运行级别)目录下创建脚本的软连接
  2. 将脚本放到 /etc/inid.d/ 目录下, 执行 chkconfig --add 脚本
  3. 编辑 /etc/rc.d/rc.local ,在 exit 0 之前添加执行相应脚本的语句
  4. crontab -e , 在定时任务中添加 @reboot 脚本名(全路径)

具体这几种方式有什么区别,有没有需要注意的地方?这两天查了些资料,现在做个总结!要比较这几种方式的优劣,还得从 linux 的开机流程说起
本文中我的系统版本是: CentOS release 6.10 (Final)

linux 开机流程

linux 的开机流程,大概如下

  1. 加载 BIOS 的硬件信息,并进行自我检测,并依据设定取得第一个可开机的装置(通常就是硬盘)
  2. 读取并执行装置内 MBR 的 boot loader (grub 等引导程序)
  3. 依据 boot loader 的设定加载核心 kernel, kernel 会开始侦测硬件并加载驱动程序
  4. 在硬件驱动成功后, 核心会主动呼叫 init 程序,而 init 会 根据设置的 run-level 信息(/etc/inittab 文件中定义了默认的运行级别)
  5. init 执行 /etc/rc.d/rc.sysinit 文档来准备软件执行的作业环境(例如网络,语系,时区等)
  6. 执行 /etc/rc.d/rc $RUNLEVEL # $RUNLEVEL为缺省的运行模式 根据 run-level执行对应目录rcN.d下的服务(N 表示运行级别,例如rc3.d目录下的服务就是全用户文本模式下要开启的服务)
  7. /etc/rc.d/rc.local #相应级别服务启动之后、在执行该文件(其实也可以把需要执行的命令写到该文件中)
  8. 执行终端仿真程序 mingetty 来启动 login 程序,等待用户登陆

前 3 步,主要是 linux 的核心加载,硬件检测之类的,偏硬件方面些。在核心加载完之后, linux 开始执行它的第一个程序 /sbin/init 了。 init 程序最主要的作用就是准备软件执行的环境,包括系统主机名,网络设定,语系设定,文件系统格式以及开机后的服务的启动等。 而所有的活动都会通过 init 的配置文件,也即 /etc/inittab 文件来 规划,而且 /etc/inittab 内还有一个很重要的设定:那就是确定系统的运行级别。

什么是运行级别呢? 说白了,linux是多用户的系统,它就是通过 run-level 来规定系使用不同的服务来启动,让linux的环境不同。具体分为 7 个级别

  • 0 - halt (直接关机)
  • 1 - Single user mode 单人维护模式
  • 2 - Multiuser -without NFS 类似于下面的level 3 ,但是没有NFS服务(也
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值