我的 /etc/rc.local 脚本非常简单,就像这样。
#!/bin/sh
touch /root/test1
touch /var/lock/subsys/local
touch /root/test2
modprobe -r ftdi_sio
modprobe ftdi_sio vendor=0x0403 product=0x6015
touch /root/test3
cd /root/IPNHost
./IPNHost
touch /root/test4
我不明白为什么 IPNHost c 程序在这种情况下没有运行。当我从命令提示符运行 rc.local 时,它运行得很好,如下所示:
/etc/rc.local
这是 CentOS 6.5。
更新:我尝试添加调试语句来查看 rc.local 是否真正执行。我的根目录中有所有 4 个,test1、test2、test3、test4。这里发生了什么事?
答案1
如果您使用的是 centOS 7,您还必须在 systemd 中启用 rc-local 服务。
答案2
由于CentOS 7中引入了systemd,默认情况下/etc/rc.d/rc.local未启用,您应该手动使/etc/rc.d/rc.local可执行。
赶紧跑
chmod a+x /etc/rc.d/rc.local
答案摘自这个帖子。
答案3
事实证明,IPNHost 程序依赖于 intel ipp 库环境变量,而在启动期间未指定该位置。
做了一个脚本autoStart.sh
#!/bin/bash
source /opt/intel/bin/compilervars.sh intel64
cd /root/IPNHost
./IPNHost
源 /opt/intel/bin/compilervars.sh intel64 加载所需的 intel 环境变量,这些变量指定在何处查找动态加载的库。
然后在 rc.local 中调用 autoStart.sh,这有效。