Linux开机rc.local不自启动执行脚本问题的排查思路及问题解决
问题
Linux系统中,在rc.local里面配置的启动命令等不能能够在开机的时候进行自启动
问题解决
- 解决问题排查中最大的麻烦,需要进行reboot重启
- 查看rc-local的运行状态
systemctl status rc-local
如果是loaded或者是faild类似,说明启动确实出现了问题 - 首先查看检查是否还有rc.local的软连接
- 查看rc-local的运行状态
运行命令ls /etc/rc.d/rc3.d -l 判断,是否有S99local -> /etc/rc.d/rc.local 的软链接,文件名可能不一样,但要有 /etc/rc.d/rc.local的软链接有的是 /etc/rc.local
,反正就是你要运行的rc.local的文件。
如果没有则建立软链接,ln -s /etc/rc.d/rc.local /etc/rc.d/rc3.d/S99local
如果有 /etc/rc.d/rc.local链接,则判断权限是否为可执行,如果不是,可添加权限chmod +x /etc/rc.d/rc.local。
-
Then
- 其次查看rc.local脚本内容
文件头为#!/bin/bash
文件尾为exit
或者exit 0
- 最后进行命令排查(如果systemctl restart rc-local运行卡住,不向下进行,多半是某些命令有问题)
- 其次查看rc.local脚本内容
可以在rc.local 中添加这个来检查大概哪个命令出现了问题
echo "test" > /opt/test.txt
;因为rc.local 脚本中的命令通常是连续执行的,也就是说,脚本中一个命令的执行完成后才会执行下一个命令。
如果你想让 rc.local 中的命令同时并发执行,你需要对它们进行并发控制:
有一种简单的方法是将每个命令放到后台执行,以便它们可以同时运行。例如,在 rc.local 中使用以下命令可以让每个命令在后台执行:
command1 &
command2 &
command3 &
注意
某些命令比如./start.sh,这个start.sh脚本中使用了tail -f nohup.out,他是会造成阻塞的
这里补充几个问题哈:详情见第二篇吧Linux开机rc.local不自启动执行脚本其他一些问题进行补充说明