我尝试将其添加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.local
simply 在启动时没有被执行。您可以通过运行来验证这一点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
都不需要执行这个空文件。现在检查是否存在并且是否可执行,并且只有在可执行时才执行它。bash
systemd
/etc/rc.d/rc.local
如果您在 处创建了该文件/etc/rc.local
,则需要将其移动或符号链接到 处,/etc/rc.d/rc.local
以便在启动时执行它。您还应该验证它是否可执行,(chmod +x /etc/rc.d/rc.local
)。