1、现象
在/etc/rc.local里
source /etc/profile cd /home/wisetron/cpp/src/784_main sudo ./auto_start_matlab.sh &
source /etc/profile是为了将matlab需要的依赖库加入环境变量,然后进入matlab可执行文件路径,在拉起进程
2、现象
重启linux拉起进程失败,ps查看进程不存在
3、原因分析
source /etc/profile将依赖库加入环境变量失败,被其他加载环境变量的脚本冲刷掉了,通过打印环境变量可验证
4、解决【并非解决,看下面备注】
将这几行代码放在优先级高的开机脚本:~/.bashrc中
source /etc/profile procnum=` ps -ef|grep pic_main |grep -v grep|wc -l` if [ $procnum -eq 0 ] ; then nohup /home/wisetron/cpp/src/784_main/pic_main & fi
首先加载环境变量,然后判断进程是否存在,如果不存在则拉起来
ps:
1、此方法会导致每开一个shell终端都会执行一次bashrc中的内容,所以加了一个进程是否存在的判断;
2、我的matlab程序在自启之后会在指定路径下生成图片,但是实测发现通过上面的方式自启,生成图片失败,但是通过./拉起程序就成功。解决办法:
把生成图片的路径全部改成绝对路径,就生成成功了。
注意:
这个方法不建议使用,因为只有在登录【shell或者界面】的才会调用bashrc,如果程序是非界面程序那么就不会登录,希望它开机自己静默执行,所以就触发不了这个脚本。
最新解决办法:
把/etc/profile里export的环境变量放在rc.lcoal里,然后拉起程序。