今天遇到一个需求 想用一个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参数。。。。 坑爹呀。
分享到:
相关推荐
在IT领域,管理和控制进程是...总之,理解和掌握进程管理技巧对于任何IT专业人员都至关重要,无论是排查问题还是优化系统性能,都能发挥重要作用。在Java环境下,合理利用系统命令和库函数可以更有效地进行进程控制。
在Java编程中,获取系统资源信息,如CPU使用率和内存使用情况,是常见的需求,尤其是在性能监控和问题排查时。以下将详细解释如何在Java中实现这些功能,并结合提供的代码片段进行说明。 首先,创建一个`...
此外,还可以使用JConsole、VisualVM等工具,更直观地监控和分析JVM内存使用情况,这对于性能调优和问题排查极为有益。 #### 结语 合理设置和调优JVM内存参数,是提高Java应用性能的关键所在。通过对JVM内存管理...
7. **异常处理和日志记录**:在开发过程中,应充分考虑异常处理,记录任何错误信息,以便于调试和问题排查。 除了基本的网页转换,wkhtmltopdf还支持其他高级功能,如将多个HTML页面合并到一个PDF中、设置自定义...
在Java中查看内存使用情况和启动新进程是常见的需求,特别是在性能优化和问题排查时。在本篇文章中,我们将深入探讨如何使用Sigar库来实现这些功能。 Sigar(System Information Gatherer and Reporter)是一个跨...
Android的Logcat是开发者在调试应用时不可或缺的工具,它能收集系统和应用...无论是在IDE中还是通过命令行,都能有效利用Logcat进行问题排查和性能分析。理解和熟练运用Logcat对于任何Android开发者来说都是必备技能。
- 在备份和还原过程中,务必捕获并记录可能的异常,以便于问题排查。 - 使用日志框架(如Log4j或SLF4J)记录操作的详细信息。 8. **并发和多线程** - 如果需要同时备份多个数据库,可以使用Java的多线程技术,...
- **日志记录**:记录备份和恢复过程中的关键信息可以帮助日后的问题排查。 #### 5. 结论 通过上述介绍可以看出,使用Java调用`mysqldump`和`mysql`工具进行MySQL数据库的备份与恢复是一种简单有效的方法。不仅...
java.lang.Process p = java.lang.Runtime.getRuntime().exec("tasklist"); in = new java.io.BufferedReader(new java.io.InputStreamReader(p.getInputStream())); while ((s = in.readLine()) != null) { if ...
在Android开发过程中,调试是必不可少的一环,而logcat作为Android系统提供的一个强大的日志工具,可以帮助开发者追踪应用运行时的错误和信息。...同时,合理使用日志级别和过滤条件,可以提高排查问题的效率。
- 记录日志是很重要的,可以使用日志库如Log4j或Java内置的日志框架记录执行过程中的信息,便于调试和问题排查。 通过以上步骤,你就能使用Java编写一个批处理脚本来实现ADSL拨号。这种方式使得拨号过程可以自动化...
要在Java中调用外部命令,如Tshark,我们可以使用`Runtime.getRuntime().exec()`方法或者`ProcessBuilder`类。这两个方法都允许我们构建一个命令行字符串,然后执行这个命令。例如: ```java String command = ...
这样的功能对于性能调优、问题排查和资源管理非常有用。例如,一个简单的系统监控示例可能会包括以下步骤: 1. 获取`Runtime`实例,计算当前JVM的内存使用情况。 2. 获取`OperatingSystemMXBean`实例,计算CPU使用...
在备份和恢复过程中,日志记录是必要的,可以帮助排查问题,提供操作历史。上述代码中的`System.out.println()`语句用于打印状态信息和错误消息,但在生产环境中,应使用日志框架如Log4j或SLF4J记录这些信息。 ...
这可以帮助我们监控应用性能、优化内存分配或者排查问题。以下是一些在Java代码中获取JVM参数的方法: 首先,我们可以使用`ManagementFactory`类来获取关于JVM内存使用的详细信息。`ManagementFactory`是Java提供的...
总结来说,通过Java提供的管理API,我们可以轻松地获取CPU使用率、内存使用情况以及线程状态等信息,这对于系统监控、性能优化和问题排查都非常有帮助。在实际应用中,这些信息可以被整合到日志系统或者专门的监控...
在开发过程中,及时记录和分析日志对于排查问题和优化代码至关重要。 总的来说,实现"surfer二次开发-java调用exe"的过程主要包括以下步骤: 1. 在VB中编写 Surfer 的二次开发代码,封装成exe文件,如 `...
Runtime runtime = Runtime.getRuntime(); System.out.println("系统名称:" + runtime.name()); System.out.println("系统架构:" + runtime.arch); System.out.println("系统版本:" + runtime.version()); ...
- 使用`Runtime.getRuntime().exec(command)`执行外部命令。 - 通过读取命令输出流中的数据,解析出物理地址。 - 需要注意的是,此方法只适用于Windows操作系统,并且假设命令“ipconfig”是可用的。 #### 四、获得...
Process process = Runtime.getRuntime().exec("logcat -v time *:V"); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line; while ((line = reader....