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

问题描述

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 ctidpri opri pcpu pmem vsz rss osz nice class time etime stime zone 区域 IDf s c lwp nlwp psr tty addr wchan fname comm args projid project psetpublic 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();}

解决方案

把命令写成sh文件试试
解决方案二:
换成调用exec(String[] cmdarray) 试试,即将ps -ef | grep 'DevCfg_Cli.pl 51964 ZYYC00002' 以空格为分割,转换成字符串数组

时间: 2024-09-15 22:38:00

java调用shell(ps -ef | grep )问题的相关文章

linux shell-【请教】shell的 `ps -ef | grep $1 | grep -v "grep" | wc -l`返回错误值

问题描述 [请教]shell的 `ps -ef | grep $1 | grep -v "grep" | wc -l`返回错误值 这个程序是参照网上的,主要是为了防止脚本多次启动的,checkprocess 函数的参数就是脚本的名称,然后函数中用 ps 判断脚本启动的个数,我明明只启动一个脚本,但不知道为什么 粗红色部分,总是返回 2, process_num 总是比我启动的脚本进程数多 1 .我的脚本运行环境为 RHEL6.3,请大牛们帮看看,感激不尽. #!/bin/bash ch

远程连接-请问一下java 调用shell上传linux的问题

问题描述 请问一下java 调用shell上传linux的问题 package com.wfj.cms.util; import java.io.IOException; import java.util.ArrayList; import java.util.Hashtable; import java.util.List; import org.apache.log4j.Logger; import org.apache.oro.text.regex.MalformedPatternExce

JAVA调用shell脚本返回执行结果是否成功?

问题描述 需求功能:JAVA调用shell导入大量数据,优化数据库(informix),创建索引,整个执行脚本时间预计 2个小时,我是这样做的.] 各位帮忙看看如下代码是否会有什么漏洞或者不足之处,或者有什么更好的办法,谢谢! Runtime rt = Runtime.getRuntime(); Process p = rt.exec("shell.sh"); if(p.waitFor() != 0){ System.out.println("数据导入成功!"+p.

Java调用Shell命令的方法_java

本文实例讲述了Java调用Shell命令的方法.分享给大家供大家参考.具体如下: 近日项目中有这样一个需求:系统中的外币资金调度完成以后,要将调度信息生成一个Txt文件,然后将这个Txt文件发送到另外一个系统(Kondor)中.生成文件自然使用OutputStreamWirter了,发送文件有两种方式,一种是用写个一个类似于FTP功能的程序,另外一种就是使用Java来调用Shell,在Shell中完成文件的发送操作.我们选择后一种,即当完成外币资金的调度工作后,用Java的OutputStrea

linux下java调用多行有相互依赖关系的shell命令,如何调用

问题描述 linux下java调用多行有相互依赖关系的shell命令,如何调用 小弟想用java调用用多行有前后依赖关系的shell命令: 例如: 先process=Runtime.getRuntime().exec("mysql");进入mysql命令行 在用java给mysq命令行传mysql脚本,执行脚本命令 麻烦大家回答一下,或者给点建议意见 解决方案 linux下java调用shell和windows下java调用bat 解决方案二: 通过管道重定向来接收和处理命令 解决方案

Linux ps -ef 排除当前进程(kill当前Tomcat进程)

在Linux 中,我们经常使用"ps -ef|grep tomcat" 查看进程,如下图是我操作的服务器上使用该命令后查看的结果: 可以看到,除了3个紫色的tomcat外,还会有一个该命令的进程. 如果想排除掉那个红色框的当前进程,可以在原来命令后面增加一段参数过滤,如下: ps -ef|grep tomcat|grep -v grep 只所以这样做,是因为我个人有个需求:写一个sh脚本放在tomcat/bin目录下,kill掉当前tomcat的进程. 编写 kill.sh 脚本,并将

java调用本地shell文件,操作linux

问题描述 java调用本地shell文件,操作linux 怎么用java程序调用本地的shell文件去操作linux中的文件. 解决方案 Process process = Runtime.getRuntime().exec( ".//p.exe "); 解决方案二: Process process = Runtime.getRuntime().exec( " ");

Java调用MySQL存储过程并获得返回值的方法_java

本文实例讲述了Java调用MySQL存储过程并获得返回值的方法.分享给大家供大家参考.具体如下: private void empsInDept(Connection myConnect, int deptId) throws SQLException { CallableStatement cStmt = myConnect.prepareCall("{CALL sp_emps_in_dept(?)}"); cStmt.setInt(1, deptId); cStmt.execute

java 调用存储过程详解与实例(1/3)

java 调用存储过程 1.使用不带参数的存储过程           使用 jdbc 驱动程序调用不带参数的存储过程时,必须使用 call sql 转义序列.不带参数的 call 转义序列的语法如下所示:  {call procedure-name} 作为实例,在 sql server 2005 adventureworks 示例数据库教程中创建以下存储过程: 以下是引用片段: create procedure getcontactformalnames as begin select top