rc.local 中未执行路由命令

rc.local 中未执行路由命令

我尝试将其添加route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0到 Fedorarc.local文件中,但 Fedora 启动时它并未执行。我该如何修复此问题?

更新:我在 rc.local /sbin/route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0 中将完整路径 cmd 更改为该命令,但该命令未执行。我将其更改为 sudo /sbin/route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0,但仍然不起作用,尽管我在终端中手动输入时可以正常工作。

答案1

以下是逐步配置:

步骤1

在 /etc 中创建符号链接

lrwxrwxrwx   1 root     root         18 Jun 29 19:08 rc.local -> /etc/rc.d/rc.local

在 /etc/rc.d 中创建 rc.local 文件

#!/bin/bash
#!/bin/sh
/sbin/route add -net 192.xxx.xx.x netmask 255.255.255.0 gw 192.xxx.xx.xx

使 rc.local 可执行,你的 rc.local 文件应如下所示

-rwxr-xr-x    1 root root    93 Jul  4 18:30 rc.local

第2步

cd /lib/systemd/system
ls -l rc-local.service

-rw-r--r-- 1 root root 565 Jul  6 20:18 rc-local.service

编辑 rc-local.service,你的 rc-local.service 文件应该如下所示:

[Unit]
Description=/etc/rc.local Compatibility
ConditionFileIsExecutable=/etc/rc.d/rc.local
After=network.target

[Service]
Type=forking
ExecStart=/etc/rc.d/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target

答案2

您应该向路由命令添加完整路径,/sbin/route add这样就可以了。

答案3

很可能,rc.localsimply 在启动时没有被执行。您可以通过运行来验证这一点systemctl status rc-local.service。如果没有执行,您将看到如下输出:

rc-local.service - /etc/rc.d/rc.local 兼容性
          已加载:已加载(/usr/lib/systemd/system/rc-local.service;静态)
          活跃:不活跃(死亡)
          CGroup:名称=systemd:/system/rc-local.service

如果它在启动时成功执行,您将看到如下输出:

rc-local.service - /etc/rc.d/rc.local 兼容性
          已加载:已加载(/usr/lib/systemd/system/rc-local.service;静态)
          活跃:自 2012 年 4 月 1 日星期日 12:54:47 -0700 起活跃(已退出);1 天 21 小时前
        主 PID:380(代码=退出,状态=0/成功)
          CGroup:名称=systemd:/system/rc-local.service

如果启动时没有执行,则可能是您遇到了常见的陷阱。传统上,Red Hat 系统将此文件放在 中/etc/rc.d/rc.local,对于熟悉 Debian 系统的人来说,符号链接位于/etc/rc.local。最新版本的 Fedora 默认不包含该文件,这样可以稍微加快启动速度,因为大多数系统上 rc.local都不需要执行这个空文件。现在检查是否存在并且是否可执行,并且只有在可执行时才执行它。bashsystemd/etc/rc.d/rc.local

如果您在 处创建了该文件/etc/rc.local,则需要将其移动或符号链接到 处,/etc/rc.d/rc.local以便在启动时执行它。您还应该验证它是否可执行,(chmod +x /etc/rc.d/rc.local)。

相关内容