`
zmx955
  • 浏览: 19097 次
社区版块
存档分类
最新评论

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参数。。。。 坑爹呀。

 
分享到:
评论

相关推荐

    操作进程,显示与杀死

    在IT领域,管理和控制进程是...总之,理解和掌握进程管理技巧对于任何IT专业人员都至关重要,无论是排查问题还是优化系统性能,都能发挥重要作用。在Java环境下,合理利用系统命令和库函数可以更有效地进行进程控制。

    java中获取CPU 内存的方法

    在Java编程中,获取系统资源信息,如CPU使用率和内存使用情况,是常见的需求,尤其是在性能监控和问题排查时。以下将详细解释如何在Java中实现这些功能,并结合提供的代码片段进行说明。 首先,创建一个`...

    java虚拟机jvm及Tomcat中的jvm有关内存的设置与调优

    此外,还可以使用JConsole、VisualVM等工具,更直观地监控和分析JVM内存使用情况,这对于性能调优和问题排查极为有益。 #### 结语 合理设置和调优JVM内存参数,是提高Java应用性能的关键所在。通过对JVM内存管理...

    wkhtmltopdf.zip

    7. **异常处理和日志记录**:在开发过程中,应充分考虑异常处理,记录任何错误信息,以便于调试和问题排查。 除了基本的网页转换,wkhtmltopdf还支持其他高级功能,如将多个HTML页面合并到一个PDF中、设置自定义...

    java查看内存使用情况,启动新进程。sigar调用

    在Java中查看内存使用情况和启动新进程是常见的需求,特别是在性能优化和问题排查时。在本篇文章中,我们将深入探讨如何使用Sigar库来实现这些功能。 Sigar(System Information Gatherer and Reporter)是一个跨...

    Android_LogCat

    Android的Logcat是开发者在调试应用时不可或缺的工具,它能收集系统和应用...无论是在IDE中还是通过命令行,都能有效利用Logcat进行问题排查和性能分析。理解和熟练运用Logcat对于任何Android开发者来说都是必备技能。

    java备份还原数据库

    - 在备份和还原过程中,务必捕获并记录可能的异常,以便于问题排查。 - 使用日志框架(如Log4j或SLF4J)记录操作的详细信息。 8. **并发和多线程** - 如果需要同时备份多个数据库,可以使用Java的多线程技术,...

    JAVA实现数据库备份与还原

    - **日志记录**:记录备份和恢复过程中的关键信息可以帮助日后的问题排查。 #### 5. 结论 通过上述介绍可以看出,使用Java调用`mysqldump`和`mysql`工具进行MySQL数据库的备份与恢复是一种简单有效的方法。不仅...

    Windows下 tomcat的守护进程、心跳程序

    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开发过程中,调试是必不可少的一环,而logcat作为Android系统提供的一个强大的日志工具,可以帮助开发者追踪应用运行时的错误和信息。...同时,合理使用日志级别和过滤条件,可以提高排查问题的效率。

    java 利用配处理脚本实现ADSL拨号

    - 记录日志是很重要的,可以使用日志库如Log4j或Java内置的日志框架记录执行过程中的信息,便于调试和问题排查。 通过以上步骤,你就能使用Java编写一个批处理脚本来实现ADSL拨号。这种方式使得拨号过程可以自动化...

    java中调用tshark命令行,解析数据包信息

    要在Java中调用外部命令,如Tshark,我们可以使用`Runtime.getRuntime().exec()`方法或者`ProcessBuilder`类。这两个方法都允许我们构建一个命令行字符串,然后执行这个命令。例如: ```java String command = ...

    java获取系统信息的类文件

    这样的功能对于性能调优、问题排查和资源管理非常有用。例如,一个简单的系统监控示例可能会包括以下步骤: 1. 获取`Runtime`实例,计算当前JVM的内存使用情况。 2. 获取`OperatingSystemMXBean`实例,计算CPU使用...

    java备份还原oracle数据库参照.pdf

    在备份和恢复过程中,日志记录是必要的,可以帮助排查问题,提供操作历史。上述代码中的`System.out.println()`语句用于打印状态信息和错误消息,但在生产环境中,应使用日志框架如Log4j或SLF4J记录这些信息。 ...

    在java代码中获取JVM参数的方法

    这可以帮助我们监控应用性能、优化内存分配或者排查问题。以下是一些在Java代码中获取JVM参数的方法: 首先,我们可以使用`ManagementFactory`类来获取关于JVM内存使用的详细信息。`ManagementFactory`是Java提供的...

    java获取cpu、内存信息

    总结来说,通过Java提供的管理API,我们可以轻松地获取CPU使用率、内存使用情况以及线程状态等信息,这对于系统监控、性能优化和问题排查都非常有帮助。在实际应用中,这些信息可以被整合到日志系统或者专门的监控...

    surfer二次开发-java调用exe

    在开发过程中,及时记录和分析日志对于排查问题和优化代码至关重要。 总的来说,实现"surfer二次开发-java调用exe"的过程主要包括以下步骤: 1. 在VB中编写 Surfer 的二次开发代码,封装成exe文件,如 `...

    SystemInformation:显示系统信息

    Runtime runtime = Runtime.getRuntime(); System.out.println("系统名称:" + runtime.name()); System.out.println("系统架构:" + runtime.arch); System.out.println("系统版本:" + runtime.version()); ...

    Java获取系统信息

    - 使用`Runtime.getRuntime().exec(command)`执行外部命令。 - 通过读取命令输出流中的数据,解析出物理地址。 - 需要注意的是,此方法只适用于Windows操作系统,并且假设命令“ipconfig”是可用的。 #### 四、获得...

    Android软件开发之程序中时时获取logcat日志信息

    Process process = Runtime.getRuntime().exec("logcat -v time *:V"); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line; while ((line = reader....

Global site tag (gtag.js) - Google Analytics