zoukankan      html  css  js  c++  java
  • 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里,然后拉起程序。




    长风破浪会有时,直挂云帆济沧海!
    可通过下方链接找到博主
    https://www.cnblogs.com/judes/p/10875138.html
  • 相关阅读:
    C#SortedList排序列表怎么样逆序输出
    使 SortList 实现重复键排序
    【转】delphi程序只允许运行一个实例的三种方法:
    Delphi中控制Excel(转载)
    spring和hibernate的集成
    使用Jedis操作redis
    使用java发送邮件
    error at ::0 can't find referenced pointcut...解决方法
    log4j简单的使用
    spring学习笔记三:Component注解(把POJO类实例化到spring的IOC容器中)
  • 原文地址:https://www.cnblogs.com/judes/p/14603349.html
Copyright © 2011-2022 走看看