Runtime.getRuntime() 排查问题过程

今天遇到一个需求 想用一个j2ee的web程序给linux发命令, 简单来说就是 运行run.sh。 然后死活调用不通,各种问题,下面是排查和解决的方案

需要注意几点
1Process ps = Runtime.getRuntime().exec(cmd);
LOG.info(ps.waitFor());

2ps.getInputStream() 这是输入 正确的信息

3ps.getErrorStream() 这是输出错误信息

4执行sh命令是,必须runCMD(new String[]{"sh","-c",cmd[i]});
sh -c xxx命令

排查问题过程
1先怀疑hup掉了。。查询了几个后端执行命令,链接如下
http://www.ibm.com/developerworks/cn/linux/l-cn-nohup/
未解决

2查询ps.waitFor(),返回值为非0,判断程序不能正确返回,但是找不出为什么。。

3找出ps.getErrorStream() 错误输出。。,发现是run.sh脚本里面,缺少环境变量

4解决环境变量后,发现任务已经在后端运行了,但是貌似卡在进程里了。。
查看tomcat日志 j2ee程序已经调用linux命名,ps -ef |grep run.sh也能看到。。
还是未解决。。

5最后询问有经验的人,,才知道,,sh -c 需要-c参数。。。。 坑爹呀。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值