linux自启动
linux自启动
/etc/init.d目录下存放的是系统服务启动脚本,在系统启动时/sbin/init进程以root权限根据运行的级别启动/etc/rc#.d中的服务(文件是软连接到/etc/init.d中的脚本),如果有自己定义的自启动脚本,也会在/etc/init.d目录。
rc.local文件中添加自启动命令
/etc/rc.d/rc.local 用于用户自定义开机启动程序,可以往里写开机要执行的命令或脚本
[root@localhost ~]$ cat /etc/rc.d/rc.local
/data/init/restart_game.sh
touch /var/lock/subsys/local
在/etc/init.d目录下添加自启动脚本
linux在“/etc/rc.d/init.d”下有很多的文件,每个文件都是可以看到内容的,其实都是一些shell脚本或者可执行二进制文件
Linux开机的时候,会加载运行/etc/init.d目录下的程序,因此我们可以把想要自动运行的脚本放到这个目录下即可。系统服务的启动就是通过这种方式实现的。
linux的引导过程和运行级别的概念
/etc/rc.d/init.d/目录下的脚本就类似与windows中的注册表,在系统启动的时候某些指定脚本将被执行。
Linux的引导过程
系统启动之后,在进入init.d之前的工作:
- 系统加电之后,首先进行的硬件自检,然后是bootloader对系统的初始化,加载内核。
- 内核被加载到内存中之后,就开始执行了。一旦内核启动运行,对硬件的检测就会决定需要对哪些设备驱动程序进行初始化。
- 从这里开始,内核就能够挂装根文件系统(这个过程类似于Windows识别并存取C盘的过程)。
- 内核挂装了根文件系统,并已初始化所有的设备驱动程序和数据结构等之后,就通过启动一个叫init的用户级程序,完成引导进程。
运行级别(run level)
Init进程是系统启动之后的第一个用户进程,所以它的pid(进程编号)始终为1。
init进程上来首先做的事是去读取/etc/目录下inittab文件中initdefault id值,这个值称为运行级别(run-level)。
它决定了系统启动之后运行于什么级别。运行级别决定了系统启动的绝大部分行为和目的。
这个级别从0到6 ,具有不同的功能。不同的运行级定义如下:
0 | 停机(千万别把initdefault设置为0,否则系统永远无法启动) |
---|---|
1 | 单用户模式 |
2 | 多用户,没有 NFS |
3 | 完全多用户模式(标准的运行级) |
4 | 系统保留的 |
5 | X11 (x window) |
6 | 重新启动 (千万不要把initdefault 设置为6,否则将一直在重启 ) |
通过runlevel命令 或者who –r 查看系统运行级别
rc.local服务未启动
通过下面命令查看是否启动,一般rc.local服务是默认启动
[root@localhost ~]# systemctl list-unit-files|grep rc.local
rc-local.service static-------代表已开启,如果是disable,代表未开启
启动rc.local服务
systemctl enable rc-local.service
手动启动一次rc.local,看是否有问题
systemctl status rc-local.service
自动启动服务
systemctl start rc-local.service