matlab+linux开机启动【具有环境依赖的程序适用】

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里,然后拉起程序。

posted @ 2021-03-31 19:27  朱小勇  阅读(157)  评论(0编辑  收藏  举报