Linux开机rc.local不自启动执行脚本问题的排查思路及问题解决

问题

Linux系统中,在rc.local里面配置的启动命令等不能能够在开机的时候进行自启动

问题解决


    解决问题排查中最大的麻烦,需要进行reboot重启

        查看rc-local的运行状态

        systemctl status rc-local

        如果是loaded或者是faild类似,说明启动确实出现了问题

        首先查看检查是否还有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 中添加这个来检查大概哪个命令出现了问题echo "test" > /opt/test.txt ;因为rc.local 脚本中的命令通常是连续执行的,也就是说,脚本中一个命令的执行完成后才会执行下一个命令。


如果你想让 rc.local 中的命令同时并发执行,你需要对它们进行并发控制:

有一种简单的方法是将每个命令放到后台执行,以便它们可以同时运行。例如,在 rc.local 中使用以下命令可以让每个命令在后台执行:

command1 &

command2 &

command3 &


注意

某些命令比如./start.sh,这个start.sh脚本中使用了tail -f nohup.out,他是会造成阻塞的

有些命令添加后也会不好用,并且会造成很大的阻塞,比如docker,有关docker的启动参阅

centos7如何将docker容器配置成开机自启动


Zblog
Linux开机rc.local不自启动执行脚本问题的排查思路及问题解决
OdooBot 2024年7月14日
分析这篇文章
标签
我们的博客
存档
GDB调试工具详解:逐步剖析程序运行过程