当前位置: 首页>>技术教程>>正文


如何在启动时运行“rc.local”?

, ,

问题描述

我有一个脚本,我想在系统启动时运行。我把它放在”rc.local”上,但它不起作用。如何让它在启动时运行?

最佳解决方法

你可以手动运行你的脚本吗?如果没有,这是该脚本的问题;否则看看更多rc.local。 (如果该脚本需要以root身份运行,则需要使用sudo手动运行它。)

确保/etc/rc.local是可执行的,并且它调用的脚本也是可执行的。

$ ls -l /etc/rc.local
-rwxr-xr-x 1 root root 419 2010-08-27 11:26 /etc/rc.local

确保rc.local有一个shebang行(这是默认值):

$ head -n1 /etc/rc.local
#!/bin/sh -e

次佳解决方法

在我的情况下,没有一个指令是一个完美的解决方案。如果你和我一样不幸,试试这个详细的

  1. 将所有执行代码放在具有任意名称(如foo.sh)的单独文本文件中,并将其保存在任意位置。

  2. #!/bin/sh
    

    作为代码的第一行。

  3. 尝试执行你的foo.sh

    sudo foo.sh
    

    检查没有任何错误。

  4. 在sh命令之后,为/etc/rc.local脚本提供所创建脚本的完整路径和名称

    sh '/path/to/your/script/foo.sh'
    
  5. 请记住将上面一行放在最后一行代码之前

    exit 0
    

    在/etc/rc.local脚本的末尾。

  6. 检查/etc/rc.local的第一行是否

    #!/bin/sh -e
    
  7. 使/etc/rc.local可执行文件,以防它不可执行

    sudo chown root /etc/rc.local
    sudo chmod 755 /etc/rc.local
    
  8. 通过执行检查一切正常

    sudo /etc/init.d/rc.local start
    
  9. 测试重启系统。

第三种解决方法

在较新的Ubuntu版本上使用systemd,默认情况下不会加载/etc/rc.local

检查是否加载了兼容性服务

systemctl status rc-local.service

startup,scripts,ubuntu

如果它包含活动(退出),您的设置似乎很好,您可能在/etc/rc.local文件中有另一个错误(例如,这可能是一个失败的命令)。

第四种方法

2条建议。

  1. 确保目标脚本文件也标记为可执行文件。

  2. 目标脚本是否运行sudo命令?如果是这样,您可能想要提供sudo密码。

我的错。然后检查一下。谢谢你纠正enzotib 🙂

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1352.html,未经允许,请勿转载。