如何在启动时运行“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 

截图

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

2条建议。

  1. 确保目标脚本文件也标记为可执行文件。
  2. 目标脚本是否运行sudo命令? 如果是这样,您可能想要提供sudo密码。

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