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



posted @ 2023-04-28 18:28  少年阿丁  阅读(83)  评论(0编辑  收藏  举报