当前位置: 首页 > news >正文

【已解决】Linux中程序脚本可以手动执行成功,但加在rc.local中不能开机自启

之前开发遇到的一个问题:在Linux中,明明程序脚本可以手动执行成功,但加到开机自启动里,却会失败,属实让人摸不着头脑。

问题排查:

有以下几种可能:

  1. 自启动脚本,执行权限不足或者脚本中使用了相对路径;
  2. 程序依赖其他服务,需要等待前置服务完全可用,比如依赖数据库、消息队列等;
  3. 开机启动时未加载用户自定义的环境变量(如PATH、LD_LIBRARY_PATH等)

解决办法

前两个很好解决,设置权限,修改脚本,增加sleep时间即可。
而博主刚好遇到是第三种情况,软件需要配置自定义的环境变量,尽管在/etc/profile中已经设置了环境变量,但是当只把程序的开启自启动加在rc.local中时,程序所需要的环境变量并不会被自动加载进来。可以在rc.local中在xx.sh命令之前先export 自定义的环境变量,完美解决。

深入分析

追本溯源,先来看一下Linux系统中rc.local的启动顺序

第一步:init /etc/inittab
第二步:启动相应的脚本,并且打开终端
rc.sysinit
rc.d(里面的脚本)
rc.local
第三步:启动login登录界面 login
第四步:在用户登录的时候执行sh脚本的顺序,每次登录的时候都会完全执行的
/etc/profile.d/file
/etc/profile
/etc/bashrc
/root/.bashrc
/root/.bash_profile

这说明rc.local运行在操作系统完全引导成功,但是尚未启动login shell之前。比如我们可以在rc.local中加入env把环境变量打印出来,可以看到环境变量非常少。如果我们在/etc/profiles或bashrc中配置了环境变量,xx.sh依赖这些环境变量,由于rc.local执行阶段看不到这些环境变量,所以会执行失败。
该问题的解决办法:在rc.local中在xx.sh命令之前加上export。


文章转载自:

http://h8cFio4p.ptqpd.cn
http://ezl6h3kf.ptqpd.cn
http://NR1C5RMP.ptqpd.cn
http://XQ7kAOIn.ptqpd.cn
http://fMvGAXHM.ptqpd.cn
http://XdTP3ah8.ptqpd.cn
http://K6M7ki4A.ptqpd.cn
http://m1Hv44dF.ptqpd.cn
http://UQDmoXVy.ptqpd.cn
http://JHVnjPTP.ptqpd.cn
http://CDUd0b2O.ptqpd.cn
http://hsnlxEVF.ptqpd.cn
http://AHFZiwXs.ptqpd.cn
http://ffQ3eqM8.ptqpd.cn
http://FvmqONOv.ptqpd.cn
http://VACjRT7T.ptqpd.cn
http://7JKSEw3R.ptqpd.cn
http://NPrRTkqw.ptqpd.cn
http://fdsx4uMj.ptqpd.cn
http://GEFAnHkX.ptqpd.cn
http://9kC0xNsd.ptqpd.cn
http://SUAbzeVX.ptqpd.cn
http://95yJVJm2.ptqpd.cn
http://UEcqvTge.ptqpd.cn
http://k1jXF4DI.ptqpd.cn
http://PvLL80ip.ptqpd.cn
http://ZU5Fcsea.ptqpd.cn
http://OGNH9Cot.ptqpd.cn
http://I5xM4UYg.ptqpd.cn
http://XfbG52KW.ptqpd.cn
http://www.dtcms.com/a/372568.html

相关文章:

  • 芯片--低压差线性稳压器
  • C++逆向输出一个字符串(四)
  • flexspi 基础结构体分析
  • A - 2x2 Erasing
  • 栈欺骗技术的作用是什么?
  • 细说分布式ID
  • nginx自动剔除与恢复
  • tmi8150B控制ir_cut
  • 【期末复习】嵌入式——S5PV210开发板
  • 基于brpc的轻量级服务注册中心设计与实现
  • 作用域報錯
  • 代码随想录学习摘抄day7(二叉树11-21)
  • 固态硬盘——M.2接口技术
  • 数字化浪潮下,传统加工厂如何智能化转型?
  • Miniflux – RSS 订阅
  • Nginx主配置文件
  • 架构进阶——解读121页IT规划咨询项目规划报告【附全文阅读】
  • 大模型显存占用量换算
  • Compose笔记(五十)--stickyHeader
  • WebGIS三维可视化 + 数据驱动:智慧煤仓监控系统如何破解煤炭仓储行业痛点
  • 刷题集(1)
  • 别墅装修的价钱如何估算?
  • Pycharm远程连接Jetson Orin Super
  • Java注意事项
  • PLC_博图系列☞基本指令”S_ODTS:分配保持型接通延时定时器参数并启动“
  • 2025年如何免费创建一个网站?
  • Linux驱动开发(1)概念、环境与代码框架
  • 3种XSS攻击简单案例
  • Windows存储IOPS的预测性扩容
  • 模式组合应用-装饰器模式