ubuntu中rc.local无效

在ubuntu中写了一点iptables规则,但是,竟然iptables竟然无效,经过多方查找问题。。。眼泪。。。

终于发现是rc.local竟然没有运行,我晕。仔细检查iptables脚本n遍,没有发现问题。但是,重启后仍然没有运行。

iptables表为空。于是,单独拿出一条规则,在终端运行,在用iptables -L进行检查,结果正常显示。

经过网络搜索后,有人提示说:可能默认的sh不是bash导致,脚本不兼容,从而没有执行。

注意:有的ubuntu16.04系统默认都没有rc.local脚本,所以首先要排除没有执行权限的问题。

ls -al /etc/rc.local   如果没有执行权限,显然无法启动。这是只要 chmod +x /etc/rc.local就ok了。

然后,在检查是否是dash脚本不兼容的问题,现在这类情况已经不多见了。修改为bash的方法:

方法1:在终端执行 sudo dpkg-reconfigure dash,然后选择 no.

方法2:重新进行软链接:

sudo rm /bin/sh
sudo ln -s /bin/bash /bin/sh

最后是systemd导致的rc.local无法启动。这类情况网上找答案吧。我没遇到过,也不太了解systemd。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ubuntu,`rc.local`是一个特殊的脚本文件,它在系统启动过程运行,允许用户自定义一些最后执行的命令或设置。默认情况下,Ubuntu并未启用`rc.local`服务,因为它们倾向于鼓励使用更现代的服务管理和初始化系统,如Systemd。 如果你想在Ubuntu启用并编辑`rc.local`,可以按照以下步骤操作: 1. **查找`rc.local`文件**:在终端输入 `sudo nano /etc/rc.local`。如果找不到该文件,可能需要先创建,因为它可能被隐藏了。 2. **添加你的命令**:在文件的底部添加你想要在系统启动后执行的命令。例如,如果你想要运行一个备份脚本,就在那里添加一行`/path/to/your/backup_script.sh &`. 3. **保存并关闭**:完成编辑后,按`Ctrl + X`,然后选择`Y`确认保存,接着输入`n`退出nano文本编辑器。 4. **更新权限**:由于`rc.local`在启动后立即执行,所以需要赋予执行权限,使用`sudo chmod +x /etc/rc.local`。 5. **设置开机启动**:为了使`rc.local`在每次启动时自动运行,你需要将其添加到Systemd的`system.slice`。打开 `/etc/systemd/system/multi-user.target.wants/rc-local.service` 或者创建一个新的服务文件,添加内容如下: ```bash [Unit] Description=Run rc.local scripts at boot time. After=network.target [Service] ExecStart=/bin/bash /etc/rc.local RemainAfterExit=yes [Install] WantedBy=multi-user.target ``` 6. **启动服务**:通过`sudo systemctl enable rc-local.service`将此服务设置为开机启动。 记住,使用`rc.local`可能会导致系统的稳定性问题,尤其是当它包含长时间运行的任务时,因此只应在必要时谨慎使用,并且避免在里面放置过于复杂的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值