Aix系统,Runtime.getRuntime().exec 全部退出遗留的进程

文章目录


背景

工作中通过java的Runtime.getRuntime().exec 调用aix的jdmpview命令,这个命令是前台的,就是执行完这个命令之后需要输入其他的命令,然后会显示东西,只有ctrl + c 才能停止。
好吧,表述的不清楚,如图:
在这里插入图片描述
点击会出
在这里插入图片描述
看到下面还在等待输入,只有ctrl c才能结束。

问题来了Runtime.getRuntime().exec 执行完之后,每次都有一个这个东西常驻这里,一会内存就被消耗完了
aix系统中的top命令是topas
在这里插入图片描述
在我的应用的,如果没有杀掉他,一会就满了,机器死机,所以需要每次运行完之后杀掉这个进程

实干家

分析

aix 系统中没有pkill
aix 系统中没有killall
虽然在这里插入图片描述
不过我真的不明白什么意思,但是单单执行 killall好像可以

sudo kill -9 $(ps -ef|grep 进程名关键字|gawk ‘$0 !~/grep/ {print $2}’ |tr -s ‘\n’ ’ ')
ps -ef|grep jdmpview ‘{print $2}’|xargs kill -9
kill -9 $(ps -ef|grep java|awk ‘{print $2}’)
ps -ef |grep java |awk ‘{print $2}’ | xargs -i kill -9 {}

都试过了,不可以,gawk 不支持,报的错误各不相同

晚上很多网友用的是脚本

其中的脚本片段:

pids=$(ps -ef | grep jdmpview | grep -v grep | awk '{print $2}')
kill -9 $(pidof jdmpview)

可是我通过java调用脚本会不会太麻烦了,一行一行的,java调用linux命令本身就十分的消耗性能。

完工

public static void destoryJdmpview(Process p) throws IOException {
		//用这种方式不行,鬼知道为什么,aix
//		p = Runtime.getRuntime().exec("ps -ef|grep jdmpview|awk '{print $2}'");
		p = Runtime.getRuntime().exec(new String[]{"/bin/sh", "-c","ps -ef|grep jdmpview"});
//		p = Runtime.getRuntime().exec("ps aux | grep java");
		BufferedReader 	br = new BufferedReader(new InputStreamReader(p.getInputStream()));
		StringBuilder sb = new StringBuilder();
		try {
			String line;
			while ((line = br.readLine()) != null) {
				log.debug("line [%s]",line);
				sb.append(line.split("\\s+")[2]).append(" ");
			}
		} catch (IOException e) {
			log.error("getResponseList Exception [%s]",e);
		}finally {
			try {
				if (br != null) {
					br.close();
				}
			} catch (Exception e) {
			}
		}
		log.debug("all jdmpview pid [%s] ,will destory them !!!",sb.toString());
		p = Runtime.getRuntime().exec("kill -9 "+sb);
	}

ps -ef|grep jdmpview|awk ‘{print $2}’ 这种是不行的,必须要p = Runtime.getRuntime().exec(new String[]{"/bin/sh", "-c","ps -ef|grep jdmpview"});

/bin/sh -c 才能获得输出。

之前的ls | egrep "core.*dmp|javacore.*txt|core.*xml",也不行,用/bin/sh -c 也不行,目前还不知道为什么,先不去深究了。最后只能避免,用了java的File进行了修改。

发布了501 篇原创文章 · 获赞 2066 · 访问量 173万+

猜你喜欢

转载自blog.csdn.net/dataiyangu/article/details/103483763
今日推荐