您的位置:

Linux 开机自启动详解

一、systemd 自启动

systemd 是目前大部分 Linux 发行版都使用的初始化系统,它可以控制系统进程的启动与管理。在 systemd 启动过程中,会按照一定的顺序启动各个服务,其中 systemd 启动的第一个服务是初始化进程 systemd,其他服务会在 systemd 的控制下依次启动。想要让一个服务在开机时自动启动,只需在启动时改变该服务的状态即可。

1、通过 systemctl 命令管理服务
在 systemd 中,可以使用 systemctl 命令来管理系统的各种服务,包括启动、停止、重启、查看状态等,使用 systemctl 命令设置自启动服务也很方便。下面是设置 docker 自启动的命令:

sudo systemctl enable docker.service

2、通过服务文件管理自启动服务
除了通过命令管理服务的自启动,我们也可以通过编辑服务文件来管理服务的自启动。Linux 下的服务文件一般放在 /usr/lib/systemd/system 或者 /etc/systemd/system 目录下。以 docker.service 文件为例,在该文件中添加下面的一行配置即可设置 docker 自启动:

[Install]
WantedBy=multi-user.target

二、SysVinit 自启动

SysVinit 也是一种 Linux 初始化程序,一些旧的发行版仍在使用。它主要通过运行各个脚本来控制启动过程和系统服务的启动。在使用 SysVinit 时,通常需要编写脚本并放到特定目录中,这样才能实现服务的自启动。

1、通过 chkconfig 命令管理自启动服务
chkconfig 命令可以帮助我们方便地管理启动脚本,在使用该命令时,只需要指定一个服务和启动级别即可,例如下面的命令将 httpd 服务添加到运行级别 3 中:

sudo chkconfig --level 3 httpd on

2、通过在启动脚本中编写注释来实现自启动
除了使用 chkconfig 命令管理启动脚本之外,我们也可以直接编辑脚本文件,在文件头部添加注释实现自启动的配置。在脚本头部添加以下代码即可:

# chkconfig: 2345 80 90

三、其他相关内容

1、在 systemd 中,有两个目标是非常常见的,分别是 multi-user.target 和 graphical.target。multi-user.target 用于启动无 GUI 模式下的服务,该目标是 Linux 系统的标准启动目标。graphical.target 用于启动带有 GUI 模式下的服务。

2、在某些情况下,我们需要在系统启动之后自动运行一些命令。这时,我们可以在 /etc/rc.d/rc.local 文件中添加需要在启动时执行的命令。

总结

Linux 的开机自启动是一个非常重要的功能,它可以帮助我们方便地管理系统服务并保证它们在系统启动后自动运行。本文介绍了 systemd 和 SysVinit 两种初始化系统以及它们的自启动配置方法。此外,我们还介绍了如何在系统启动之后自动运行某些命令。希望这篇文章能够帮助大家更好地理解和使用 Linux 系统。