首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java 使用Runtime在一个Java程序中启动和关闭另一个Java程序

主要使用了 Runtime.getRuntime().exec(new String[]{"/bin/bash", "-c", cmd}); 调用shell命令的工具类: public static..., 返回一个子进程对象(命令在子进程中执行)使用这种方式可以使用|管道符命令 process = Runtime.getRuntime().exec(new String[]{"...); } cmd = "nohup " + java + " -jar " + myjarDir + JAR_NAME + " > " + myjarDir + "myjar.log...return new ResponseVo(); } 重点是Java启动的process,不能直接执行java、jps等命令,也获取不到环境变量,会报command not found 于是我使用来...System.getProperty("java.home") 来获取到执行当前程序的Java路径,再把jre目录替换为jdk目录,使用jdk目录下bin目录中的java及jps命令,可以达到需求 另外需要注意命令字符串中的空格很重要

2.4K51
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    java Runtime.exec()执行shellcmd命令:常见的几种陷阱与一种完善实现

    @toc背景说明我们项目要java执行命令“dmidecode -s system-uuid”获取结果,然而碰到问题,当项目一直执行好久后,Runtime.getRuntime().exec()获取结果为空...Runtime.getRuntime().exec()执行JVM之外的程序:常见的几种陷阱前言日常java开发中,有时需要通过java运行其它应用功程序,比如shell命令等。...Runtime.exec()常见的几种陷阱以及避免方法陷阱1:IllegalThreadStateException通过exec执行java命令为例子,最简单的方式如下。...windows平台上运行dir命令,如果直接指定命令参数为dir,会提示命令找不到。...例如,下面的例子Process process = runtime.exec("java -version > a.txt");这样并不会产出a.txt文件。

    67510

    基于污点分析的JSP Webshell检测

    解析输入的JSP文件转成Java代码文件 使用ToolProvider获得JavaCompiler动态编译Java代码 编译后得到的字节码用ASM进行分析 基于ASM模拟栈帧的变化实现污点分析 类似之前写的工具..."); java.lang.reflect.Method gr = rt.getMethod("getRuntime"); java.lang.reflect.Method ex = rt.getMethod..."); java.lang.reflect.Method gr = rt.getMethod("getRuntime"); java.lang.reflect.Method ex...的代码,该类构造了Operand Stack和Local Variables Array并模拟操作 在用ASM技术解析class文件的时候,模拟他们在JVM中执行的过程,实现数据流分析 使用代码模拟两大数据结构.../lang/Object; 第一步的INVOKEVIRTUAL只是得到了Runtime对象 第二步的INVOKEVIRTUAL才是exec(obj,cmd)执行命令的代码 所以我们重点从第二步分析

    1.8K10

    史上最全 log4j2 远程命令执行漏洞汇总报告

    第二步:目标服务器收到重定向请求之后,下载恶意 class 并执行其中的代码,从而执行系统命令。 靶场搭建 在进行漏洞测试之前,首先部署一个漏洞靶场供测试之用。...命令会作为参数传入 Runtime.getRuntime().exec(),所以需要确保命令传入 exec() 方法可执行。...bash 等可在 shell 直接执行的相关命令需要加双引号,比如说 java -jar JNDI.jar -C "bash -c ..." 3、根据 cmd 日志拼接 log4j2 打印的日志 由控制台打印的日志可知...日志,弹出计算器 方法二:根据 jndi 注入原理自己编写 1、在 java 下新建 exp 包 2、在 exp 下新建需要被注入的类 package exp; import javax.lang.model.element.Name...,文件中增加配置“log4j2.formatMsgNoLookups=true” 写后感 没想到我会因为一句 logger.error 写这么多,其实如果是其它级别的日志只要能打印应该也是可以利用,至于什么级别的打印其实是可以自己配置的

    9K20

    新手程序员登录服务器杀进程!高级:你别再瞎Kill进程服务了

    我们都知道,kill在linux系统中是用于杀死进程。 kill pid [..] kill命令可将指定的信号发送给相应的进程或工作。kill命令默认使用信号为15,用于结束进程或工作。...而使用-3参数,可以 打印进程的执行日志 kill -3 pid 在Java中的应用 创建一个SpringBoot的web应用 启动类如下,添加了一个钩子函数,当进程关闭时,将会调用该钩子函数。...如果使用以下方式启动应用 nohup java -jar ~/aProject/web/target/web-1.0.jar & lgj@lgj-Lenovo-G470:~/aProject/web/target...$ ls -l |grep nohup.out -rw------- 1 lgj lgj 22811 Jun 9 00:41 nohup.out 可以看到启动所在的目录多了一个文件nohup.out。...该文件记录了应用启动运行过程中的日志。 nohup 命令 & ; 表示以后台方式运行应用。 此时使用kill -3。打印的线程信息可以到该nohup.out中查看。

    1.2K20
    领券