/etc/rc.d/rc.local开机并未执行其中的命令

发布时间 2023-08-07 14:48:20作者: 树苗叶子

前言

在某些 Linux 发行版中,rc.local 脚本可以用来在系统启动时执行自定义命令或脚本。然而,有些最新的发行版(如 Ubuntu 20.04 和 CentOS 8)已经停止使用传统的 rc.local 方式,并引入了 systemd 初始化系统。

在这些新发行版中,使用 systemctl enable rc-local.service 命令可以启用 rc-local.service 服务,其作用如下:

  1. 启用 rc-local 功能:这将允许你在 /etc/rc.d/rc.local 文件中编写自定义命令或脚本,并在系统启动时自动执行。简而言之,它还是保留了以前 rc.local 的功能,但通过 systemd 初始化系统来实现。

  2. 设置 rc-local.service 的自启动:通过使用 systemctl enable 命令,你告诉系统在引导期间自动启动 rc-local.service 服务。这样,你就无需手动执行 rc-local.service,系统会在每次启动时自动启动。

总的来说,启用 rc-local.service 服务的作用是让你可以使用类似于以前 rc.local 的方式,在系统启动时执行自定义的命令或脚本。然而,这也取决于你的 Linux 发行版和版本,因为有些发行版可能已经移除了或不再默认安装 rc-local.service 服务。

配置

说明:systemd 默认会读取 /etc/systemd/system 下的配置文件,该目录下的文件会链接 /lib/systemd/system/ 下的文件。一般系统安装完 /lib/systemd/system/ 下会有 rc-local.service 文件,即我们需要的配置文件。

  1. /lib/systemd/system/rc-local.service 链接到 /etc/systemd/system/ 目录下面来
ln -s /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service
  1. 修改rc-local.service配置,添加如下一行(如不存在)
[Install]
WantedBy=multi-user.target
Alias=rc-local.service
  1. 配置/etc/rc.local软链接(若不存在)
    注意:与linux发行版有关,有的系统rc.local就是在/etc/下的,我的是在/etc/rc.d/rc.local
ln -s /etc/rc.d/rc.local /etc/rc.lcal
  1. 添加可执行权限
    对于一些新版本的 Linux 发行版,如 Ubuntu 20.04CentOS 8,rc.local 文件默认是没有可执行权限的。

systemd 成为主流的初始化系统后,rc.local 在一些发行版中已经不再被默认启用,而是使用其他方法来管理启动脚本或服务。

chmod +x /etc/rc.local
  1. 激活rc-local.service
systemctl enable rc-local.service