Linux进程的启动顺序是由系统初始化进程init开始的。在传统的SysVinit启动系统中,init进程是所有其他进程的父进程。init进程会按照一定的顺序启动系统中的各个服务和进程。
在SysVinit系统中,init进程会读取/etc/inittab文件来确定要启动的进程。该文件中定义了运行级别(runlevel)和对应的启动脚本。运行级别是一个数字或字母,表示系统的不同状态,比如0表示关机,1表示单用户模式,2表示多用户模式(没有网络服务),3表示完全多用户模式,5表示带图形界面的多用户模式等。
根据运行级别,init进程会执行对应的启动脚本,启动相应的服务和进程。启动脚本一般存放在/etc/init.d目录下,脚本的名称通常以字母S或K开头,后面跟着一个数字,用于表示启动的顺序。以S开头的脚本表示要启动的服务,而以K开头的脚本表示要停止的服务。
例如,运行级别为3时,init进程会按照一定的顺序执行/etc/rc.d/rc3.d目录下所有以S开头的脚本,以启动相应的服务和进程。同样,在切换到其他运行级别时,init进程会执行相应运行级别下的脚本,启动或停止相应的服务和进程。
在新的init系统systemd中,启动顺序由unit文件来定义。unit文件是用于描述系统资源和服务的配置文件。systemd根据依赖关系来启动和管理各个unit。每个unit都有一个唯一的名称和类型,例如.service表示系统服务,.target表示一组相关的服务或其他unit。
systemd使用Target作为运行级别的概念,不同的Target对应不同的系统状态。例如,multi-user.target表示多用户模式,graphical.target表示图形界面模式。每个Target都有对应的unit文件,定义了要启动的服务和进程。
systemd启动时,默认会加载default.target,该文件包含了系统启动时要启动的服务和进程。在default.target中,systemd会按照依赖关系依次启动各个unit。
总的来说,Linux进程的启动顺序是由init或systemd进程按照配置文件中定义的顺序来启动的,根据运行级别或Target的不同,启动的服务和进程也会有所区别。
辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
推荐阅读: Linux中history命令的用法是什么