0 0

java调用shell(ps -ef | grep )问题0

shell:

ps -ef | grep 'DevCfg_Cli.pl 51964 ZYYC00002'

在控制台输入,输出正常
root  3226  3088   0 12:51:04 pts/4       0:00 grep DevCfg_Cli.pl 51964 ZYYC0000

用java Runtime 调的时候,报

用法:ps [ -aAdeflcjLPyZ ] [ -o 格式 ] [ -t 项列表 ]
[ -u 用户列表 ] [ -U 用户列表 ] [ -G 组列表 ]
[ -p 进程列表 ] [ -g 程序组列表 ] [ -s 标识符列表 ] [ -z 区域列表 ]
'格式' 是一个或者更多的:
user ruser group rgroup uid ruid gid rgid pid ppid pgid sid taskid ctid
pri opri pcpu pmem vsz rss osz nice class time etime stime zone 区域 ID
f s c lwp nlwp psr tty addr wchan fname comm args projid project pset

public static String exec(String cmd,String encoding) {
		StringBuffer sb1;
		StringBuffer sb2;
		sb1 = new StringBuffer();
		sb2 = new StringBuffer();
		String temp1 = "";
		String temp2 = "";
		Runtime rt = Runtime.getRuntime();
		try {
			System.out.println("[===============执行命令==========]:"+cmd);
			Process p = rt.exec(cmd);
			BufferedReader bufferedReader1 = new BufferedReader(
					new InputStreamReader(p.getInputStream(),encoding));
			BufferedReader bufferedReader2 = new BufferedReader(
					new InputStreamReader(p.getErrorStream(),encoding));
			
			while ((temp1 = bufferedReader1.readLine()) != null) {
				sb1.append(temp1);
				System.out.println(temp1);
			}

			while ((temp2 = bufferedReader2.readLine()) != null) {
				sb2.append(temp2);
				System.err.println(temp2);
			}
			
			p.waitFor();
			return sb1.toString();
		} catch (Exception e) {
			e.printStackTrace();
		}

		return sb1.toString();
	}

2013年4月02日 13:08

2个答案 按时间排序 按投票排序

0 0

采纳的答案

把命令写成sh文件试试

2013年4月02日 15:21
0 0

换成调用exec(String[] cmdarray) 试试,即将ps -ef | grep 'DevCfg_Cli.pl 51964 ZYYC00002' 以空格为分割,转换成字符串数组

2013年4月03日 09:21

相关推荐

    用于检测进程的shell脚本代码小结

    - **解析**:此脚本通过`ps -fe | grep "a.out" | grep -v grep | wc -l`命令统计满足条件的进程数量,如果数量少于1个,则说明需要启动的进程没有运行,此时调用`/root/sh/restart.sh`来执行重启操作。 **示例...

    T100 Web Service开发,调试整合重启检查说明(简体版)

    - 可通过命令行工具执行 `ps –ef | grep fastcgidispatch` 来确认Application Server是否已经启动。 - 正常情况下,如果Application Server已经启动,将可以看到类似 `as-[区域].xcf` 的输出结果。 - 特别注意:...

    Shell实现判断进程是否存在并重新启动脚本分享

    `ps -ef`命令用于列出系统中的所有进程,`grep $1`用来筛选出包含参数名称的进程,`grep -v "grep"`则排除了包含“grep”字符串的行,避免自身进程被误判。`wc -l`统计筛选后行数,即进程个数。如果计数为0,说明...

    shell与python文档

    result=$(ps -ef | grep "search") ``` 或 ```shell echo "today is $(date)" ``` 需要注意的是,使用反引号和$(命令)两种方式时,前者为传统用法,而后者为推荐的写法,它们功能相同但$(命令)方式更易读。不正确的...

    Linux启动jar包的shell脚本

    它通过`ps -ef`列出所有进程,然后使用`grep`过滤出java相关的进程,再用`grep -v grep`排除grep自身,最后通过`awk`提取出进程ID,并使用`kill -9`命令强制结束这些进程。 ```bash stop(){ ps -ef | grep java ...

    Linux测试带宽(shell),测试流量

    kill -9 `ps -ef|grep wget|grep http|awk '{print $2}'` //修改kill关键字:grep wget rm zhuxian* //修改rm关键字:zhuxian* 4.修改“bandwidth.sh”:修改检测网卡: netcard=em1 5.使用后台运行命令执行:...

    制作linux服务看门狗

    ps -ef | grep -v "grep vrm" | grep vrm > /dev/null if [ $? -ne 0 ]; then service vrm start else date fi sleep 5 done ``` - **脚本解释** - `#!/bin/bash`:声明脚本使用Bash解释器。 - `while ...

    Oracle DBA常用的UNIX命令

    - `ps -ef`:列出系统中所有运行的进程。 - `grep "ora_"`:筛选出以"ora_"开头的进程,通常这些进程与Oracle有关。 - `grep -v grep`:排除掉包含"grep"的行,避免在结果中看到grep自身的进程。 - `awk '{ ...

    tomcat监控脚本

    TomcatID=$(ps -ef | grep tomcat | grep -w 'tomcat路径' | grep -v grep | awk '{print $2}') ``` 这段代码通过一系列命令组合,从系统进程中筛选出与Tomcat相关的进程,并获取其PID。 2. **定义启动脚本路径*...

    tomcat停起脚本.txt

    kill -9 `ps -ef | grep $proc_dir | grep -v grep | awk '{print $2}'` } ``` - 使用`ps -ef`命令列出所有正在运行的进程。 - 通过`grep $proc_dir`过滤出包含指定目录名的进程。 - 再次使用`grep -v grep`...

    shell多进程处理多图像

    这个命令首先列出所有进程(`ps -ef`),然后筛选出包含`python`的行(`grep python`),接着排除掉grep本身(`grep -v grep`),再提取进程ID(`cut -c 9-15`),最后使用`xargs`将这些ID传递给`kill -s 9`,发送...

    Linux利用Shell脚本部署jar包项目的完整步骤

    pid=$(ps -ef | grep ${app_name} | grep -v grep | grep -v restart | awk '{print $2}') if [ -n "${pid}" ]; then kill -9 ${pid} sleep 10 fi gclog_file=$base_home/log/gc.log dump_dir=$base_home...

    linux设定定时执行任务-oracle,arcGIS-精选.docx

    - 使用`ps -ef | grep cron`检查cron服务是否运行。如果未运行,启动它:`/sbin/service crond start`。 - 其他相关命令包括:`/sbin/service crond stop`(停止服务),`/sbin/service crond restart`(重启服务...

    CshellScripting.ppt 多个关键字请用空格分隔,最多填写5个。点击右侧Tag快速添加

    - `ps -ef | grep "^ *$LOGNAME"`查找并显示用户的所有进程。 5. **文件权限和执行**: - `chmod`命令可以改变文件的权限,如`chmod +x greetme`使脚本可执行。 6. **算术运算**: - 使用`@`进行整数运算,例如...

    Spring Boot应用的极速部署脚本示例代码

    appid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'` if [ ${appid} ]; then echo 'Kill Process!' kill -9 $appid fi ``` 这个脚本会找到以`APP_NAME`为参数的进程ID,并将其终止。 ...

    Linux中用PHP判断程序运行状态的2个方法

    1. 执行`ps -ef | grep wget`命令,筛选出包含`wget`的进程信息,并将其输出到一个文件(例如`/root/pooy.txt`)。 2. 使用`file()`函数读取该文件内容,将文件内容存储为数组。 3. 遍历数组,查找包含特定字符串...

    sh代码-shell脚本方式启动Tomcat服务

    ps -ef | grep -q "java.*catalina\.boot" && echo "Tomcat is already running." && exit 1 # 设置环境变量 export CATALINA_BASE=$CATALINA_HOME export CATALINA_HOME=$CATALINA_HOME # 启动Tomcat $CATALINA_...

    aix常见问题汇总

    pid=$(ps -ef | grep "$1" | grep -v grep | awk '{print $2}') if [ -z "$pid" ]; then echo "Process '$1' not found." else echo "Killing process with PID: $pid" kill -9 $pid fi ``` 保存该脚本并给予...

Global site tag (gtag.js) - Google Analytics