问题描述
我有一个脚本,我想在系统启动时运行。我把它放在”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
次佳解决方法
在我的情况下,没有一个指令是一个完美的解决方案。如果你和我一样不幸,试试这个详细的
-
将所有执行代码放在具有任意名称(如foo.sh)的单独文本文件中,并将其保存在任意位置。
-
加
#!/bin/sh
作为代码的第一行。
-
尝试执行你的foo.sh
sudo foo.sh
检查没有任何错误。
-
在sh命令之后,为/etc/rc.local脚本提供所创建脚本的完整路径和名称
sh '/path/to/your/script/foo.sh'
-
请记住将上面一行放在最后一行代码之前
exit 0
在/etc/rc.local脚本的末尾。
-
检查/etc/rc.local的第一行是否
#!/bin/sh -e
-
使/etc/rc.local可执行文件,以防它不可执行
sudo chown root /etc/rc.local sudo chmod 755 /etc/rc.local
-
通过执行检查一切正常
sudo /etc/init.d/rc.local start
-
测试重启系统。
第三种解决方法
在较新的Ubuntu版本上使用systemd
,默认情况下不会加载/etc/rc.local
。
检查是否加载了兼容性服务
systemctl status rc-local.service
如果它包含活动(退出),您的设置似乎很好,您可能在/etc/rc.local
文件中有另一个错误(例如,这可能是一个失败的命令)。
第四种方法
2条建议。
-
确保目标脚本文件也标记为可执行文件。
-
目标脚本是否运行sudo命令?如果是这样,您可能想要提供sudo密码。
我的错。然后检查一下。谢谢你纠正enzotib 🙂