免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1521 | 回复: 2
打印 上一主题 下一主题

[其他] 请教开机自启动的程序执行多个shell命令启动多个程序时,不能启动多个的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2017-09-05 09:34 |只看该作者 |倒序浏览
请教各位大侠,我用java做了个两类程序,一个是主程序,另一类是子程序(子程序实现与设备通讯,会运行多个,每一个只在细节处有不同),主程序负责启动及看护各个子程序,各个子程序分别在各自的路径下(/root/mysrv/sub1/outjar.jar、/root/mysrv/sub2/outjar.jar....)。主程序路径下有ourjar.jar包以及start.sh、prostart.sh以及相关配置文件和支撑jar包,子程序路径下有outjar.jar以及相关配置文件和支撑jar包。这两个outjar.jar是各自代码打的包,名称相同内容是不一样的。在主程序中用代码实现调用各个shell命令,用prostart.sh调起各个子程序。

现在我把主程序放到/etc/rc.local中添加一行:“sh /root/mysrv/mainpro/start.sh”,现在问题是,如果这样执行,操作系统启动后经检查发现,每次自启动了主程序,但子程序只能调起一个,其它子程序都调不起来。
  而如果在linux操作系统登录后,把放在/etc/rc.local中“sh /root/mysrv/mainpro/start.sh”这一句直接在命令行中执行,是可以调起多个子程序的。

附:/root/mysrv/mainpro/start.sh:(用这个代码调起主程序)
  1. #!/bin/sh
  2. java -Dfile.encoding=utf-8 -jar /root/mysrv/mainPro/outjar.jar &
  3. echo $!>/root/mysrv/mainPro/pro.pid
复制代码

附:/root/mysrv/mainpro/prostart.sh(用这个shell文件,在主程序中用代码调用shell命令调用多次,调起多个子程序,带入参数$1表示子程序所在路径,如: /root/mysrv/sub1/
  1. #!/bin/bash
  2. #注释:运行子程序,需指定路径。用法如:sh prostart.sh /root/mysrv/sub1/
  3. echo "path="$1
  4. java -Dfile.encoding=utf-8 -jar $1/outjar.jar &
  5. echo $!>$1/pro.pid
复制代码



最近才接触linux,很多东西不太熟悉,请各位不吝指教



论坛徽章:
25
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之八一
日期:2018-07-05 10:34:09黑曼巴
日期:2018-07-06 15:19:5015-16赛季CBA联赛之佛山
日期:2018-08-03 13:19:3315-16赛季CBA联赛之山西
日期:2018-08-07 19:46:2315-16赛季CBA联赛之广夏
日期:2018-08-08 19:31:5015-16赛季CBA联赛之青岛
日期:2018-11-26 15:21:5015-16赛季CBA联赛之上海
日期:2018-12-11 09:45:3219周年集字徽章-年
日期:2020-04-18 23:54:5215-16赛季CBA联赛之深圳
日期:2020-04-19 21:40:19黑曼巴
日期:2022-04-03 17:55:1315-16赛季CBA联赛之八一
日期:2018-07-03 16:56:46
2 [报告]
发表于 2017-09-05 16:30 |只看该作者
回复 1# shajp

你登录linux系统后,执行命令:echo "export PATH=$PATH",把命令返回的结果写到/etc/rc.local 中你的自定义命令上方,再试一次。

论坛徽章:
0
3 [报告]
发表于 2017-09-05 17:27 |只看该作者
本帖最后由 shajp 于 2017-09-05 17:28 编辑

问题已解决,谢谢各位!
在/etc/rc.local中,不再调用“sh /root/mysrv/mainpro/start.sh”而是添加如下代码:
  1. JAVA_HOME=/usr/java/jdk1.8.0_131
  2. PATH=$JAVA_HOME/bin:$PATH
  3. CLASSPATH=.:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
  4. export PATH JAVA_HOME CLASSPATH
  5. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64:/usr/lib64/HCNetSDKCom
  6. nohup java -Dfile.encoding=utf-8 -jar /root/mysrv/mainpro/outjar.jar &
复制代码

直接将放在/etc/profile中的全局参数及环境变量放到/etc/rc.local中,且主程序直接调用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP