shell脚本调用外部脚本的问题

写了两个脚本,姑且称为脚本1、2,1会调用2。2会启动一个jar包并在后台运行,然后ps取出jar包运行的pid,该脚本单独运行无异常。执行脚本1,1调用2,2启动jar... 写了两个脚本,姑且称为脚本1、2,1会调用2。2会启动一个jar包并在后台运行,然后ps取出jar包运行的pid,该脚本单独运行无异常。执行脚本1,1调用2,2启动jar包,输出pid,完毕。但是在命令行ps去找jar包运行的pid时,则发现找不到,jar包并没有运行。请教原因。有没有可能jar包运行了一瞬间就停止了呢?之后我在1调用2的命令后加了sleep 1,神奇的事情发生了,jar包启动无异常,怎么破???? 展开
 我来答
百度网友5311d79
2013-08-21 · TA获得超过1.9万个赞
知道大有可为答主
回答量:6356
采纳率:71%
帮助的人:3208万
展开全部
估计是因为脚本1中使用了cd命令改变了当前路径,脚本2中继承了脚本1中的当前路径;而一旦脚本1结束回到主shell,这个当前路径也就不复存在。
如果在脚本2基于这个当前路径启动jar包前,脚本1结束了,那么当前路径肯定回到了主shell的设置去了,jar包就启动不了了。
任何外部调用的shell命令执行都会产生一个进程,都会有一个pid,即使最终执行是返回错误。

所以,两点建议:
1)脚本1调用2的命令行后加上 &,置入后台运行,这样就不会因为脚本1的结束而影响脚本2的运行。
2)脚本中尽量不要用cd命令跳转目录,尽量使用绝对路径。
透亮又惟妙惟肖灬财宝d
2013-08-28 · TA获得超过185个赞
知道小有建树答主
回答量:362
采纳率:0%
帮助的人:112万
展开全部
jar包启动需要点时间,立刻用PS检查进程号可能无法检查到,SLEEP 1,等待1秒后检查正常说明JAR包运行本身没问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式