runtime无法执行grep_如何使管道使用Runtime.exec()?

慕运维8079593

我在Linux中遇到了一个类似的问题,只不过是“ps-ef_grep找进程”。至少使用“ls”可以替换与语言无关(尽管速度较慢)的Java。例如:File f = new File("C:\\");String[] files = f.listFiles(new File("/home/tihamer"));for (String file : files) {

    if (file.matches(.*some.*)) { System.out.println(file); }}有了“ps”,这就有点难了,因为Java似乎没有相应的API。我听说西格也许能帮到我们:https:/Support.hyperic.com/Display/SIGAR/Home然而,最简单的解决方案(正如Kaj所指出的)是以字符串数组的形式执行管道命令。以下是完整的代码:try {

    String line;

    String[] cmd = { "/bin/sh", "-c", "ps -ef | grep export" };

    Process p = Runtime.getRuntime().exec(cmd);

    BufferedReader in =

            new BufferedReader(new InputStreamReader(p.getInputStream()));

    while ((line = in.readLine()) != null) {

        System.out.println(line); 

    }

    in.close();} catch (Exception ex) {

    ex.printStackTrace();}为什么字符串数组与管道一起工作,而单个字符串不能.这是宇宙之谜之一(尤其是如果你还没有读过源代码)。我怀疑这是因为当给EXEC一个字符串时,它首先解析它(以我们不喜欢的方式)。相反,当向exec提供字符串数组时,它只是将其传递给操作系统,而不对其进行解析。实际上,如果我们从繁忙的一天抽出时间来查看源代码(见http:/grepcode.com/file/pository.grepcode.com/java/root/JDK/OpenJDK/6-b14/java/lang/Runtime.java#Runtime.exec%28java.lang.String%2 Cjava.lang.String[]%2 Cjava.io.File%29),我们发现这正是正在发生的事情:public Process  [More ...] exec(String command, String[] envp, File dir) 

          throws IOException {

    if (command.length() == 0)

        throw new IllegalArgumentException("Empty command");

    StringTokenizer st = new StringTokenizer(command);

    String[] cmdarray = new String[st.countTokens()];

    for (int i = 0; st.hasMoreTokens(); i++)

        cmdarray[i] = st.nextToken();

    return exec(cmdarray, envp, dir);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/560132.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux ls 中文乱码_每天一个linux命令:Linux文件类型与扩展名

Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念。我们通过一般应用程序而创建的比如file.txt、file.tar.gz ,这些文件虽然要用不同的程序来打开,但放在Linux文件类型中衡量的话,大多是常规文件(也被称为普通文件&…

linux中cooy命令_Linux:CentOS 7中常用的基础命令

对于学习Linux系统来说,命令是必须熟练掌握的第一个部分。Linux系统中的命令有600多个,但常用的基础命令并不多。虽然不同版本的Linux系统的命令稍有不同,但命令的语法与使用方法基本相同,因此读者只要掌握了CentOS 7中常用的基础…

730阵列卡支持多大硬盘_3分钟告诉你:OPPO Reno普通版和旗舰版的差距到底有多大...

昨天OPPO正式发布了Reno系列手机:分为标准版和旗舰版两款。宣传普通版的售价和旗舰版的卖点是手机厂商一贯的传统。为了搞清楚普通版和旗舰版的差距到底有多大,今天我和大家一起扒一扒这两款手机之间的区别到底有多大,供大家在选机时做一个参…

查看list的形状_用Wordcloud生成指定形状的词云图

wordcloud是Python扩展库中一种将词语用图片表达出来的一种形式,通过词云生成的图片,我们可以更加直观的看出某篇文章的故事梗概。首先贴出一张词云图(以哈利波特小说为例):在生成词云图之前,首先要做一些准备工作1.安装结巴分词库…

oc引导win方法_[OC更新]机械革命8代、9代标压稳定版更新

加关注这种话银家怎么好意思说出口嘛更新机型机械革命Z2G机械革命Z2AIRG机械革命X3(9th ver)机械革命umi air(1080p ver)机械革命X9TI机械革命X8TI-R机械革命X8TI-G机械革命Z2机械革命Z2AIR机械革命X8TI机械革命X8TI PLUS机械革命X3(8th ver)机械革命S1PLUS(8750H)机械革命X2更…

有机晶体数据库_Cambridge Structural Database 2017 晶体结构分析软件分享

文 / 利刃君微信ID / ziyuanliren666全文共2024字,推荐阅读时间6分钟。剑桥结构数据库系统(The Cambridge Structural Database System,简写为CSDS)是基于X光和中子衍射实验唯一的小分子及金属有机分子晶体的结构数据库,收录了全世界范围内所…

win ftp 指定的密码无效。请键入新密码。_重设OS X (macOS)系统帐户密码的5种方法...

为了保护自己的隐私安全,不少 Mac 用户都会选择给自己的设备设置密码,但是时不时的会出现忘掉密码的情况。分享找回(重设)OS X (macOS)系统账号密码的5种方法。如果你忘记了 OS X (macOS&#x…

word2vec应用场景_介绍Word2Vec和Glove这两种最流行的词嵌入方法背后的直觉

NLP的首要问题就是寻求恰当的文本表示方法。因为,良好的文本表示形式,是后续进一步处理的基础。近年来,词嵌入方法越来越流行,在各种各样的NLP任务中得到了广泛的应用。简单而言,词嵌入是通过无监督方式学习单词的向量…

pythonflask框架_Flask框架

一、Web前端与后端(PythonWeb)1.Web前端:网页,包含HTML,CSS,JS。静态网页:不能与服务器交互的网页动态网页:能够与服务器交互的网页2.Web后端:、Flask,Django、Ajax技术二、服务器1.…

滑动翻页效果_Flutter实现3D效果,一个字,炫!

老孟的博客地址:http://laomengit.com/Flutter 中3D效果是通过Transform组件实现的,没有变换效果的实现:class TransformDemo extends StatelessWidget {overrideWidget build(BuildContext context) {return Scaffold( appBar: AppBar(…

overleaf 插入图片_latex中插入图片

latex排版之插入图片:在排版图片之前,个人认为不管用不用到,引入下面两个包:\usepackage{graphicx}\usepackage{subfigure}(1)插入单个图片,图片格式为png\begin{figure}[h]\centering\includegraphics[width4cm,heigh…

debian命令乱码_Debian 9.5 解决中文显示乱码

一.首先检查LOCALE情况说明:DEBIAN因为基于GNU所以,对不同地域进行了不同的包支持,以LOCALE形式存在。1、启动终端#apt-get install locales2、重新配置LOCALE#dpkg-reconfigure locales在界面中我勾选的是“en_US.UTF-8”和“zh_CN.UTF-8”。…

ssh 连接mysql_mysql命令行客户端如何通过ssh服务器连接数据库啊?

ssh到跳板机然后用 mysql 连接利用ssh开启一个隧道我这里的MySQL服务器是192.168.41.83, 我要在192.168.41.72连接首先在192.168.41.72执行命令开启隧道[rootmysql-test-72 ~]# ssh -NPf -o StrictHostKeyCheckingno root192.168.41.83 -L 3305:127.0.0.1:3306root192.168.41.8…

mysql 创建 数据库失败_MySQL创建数据库失败

如果使用root账号登录到数据库create database时提错错误:MySQL: 1006 - Can‘t create database ‘***‘ (errno: 13)或MySQL: 1006 - Can‘t create database ‘***‘ (errno: 28),一般是mysql用户没有目录权限的问题。先用Linux指令 : ls -ld 查看d…

mysql 客户服务号_mysql客户端及服务端常用实用工具功能总结

一、MySQL服务器端实用工具程序:1、mysqld:SQL后台程序(即MySQL服务器进程),客户端通过该服务连接服务器来访问数据库。2、mysqld_safe:服务启动脚本。mysqld_safe增加了一些安全特性,如当出现错误时重启服务器并向错误…

MySQL8怎么设置时区为东八区_mysql时区设置为东八区

场景:后台返回给页面的时间统一差8小时。 分析:差八小时,应该是时区问题。具体的是哪一层出的问题呢,mybatis?mysql?系统时间? 解析: 1.查询mysql时区(正常) 输入show variables like "%time_zone%";,显示当前时区 全局参数system_time_zone 系统时区,在My…

mysql网络异常_mysql运行过程中因网络或者数据库原因导致的异常

1、异常信息:The driver has not received any packets from the server异常栈:原因:此异常为jdbc自身的超时限制,一般为应用调用jdbc的API设置了queryTimeout超时限制,当成功获取数据库连接执行sql的时候与mysql服务端断开&#…

mysql撤销用户授权_mysql用户授权及撤销

mysql数据库服务在不做授权的情况下只允许数据库管理员从数据库服务器本机登录。默认只有数据库管理员从数据库服务器本机登录才有授权权限mysql -u root -p (本机登录mysql服务器)mysql -u root -h 192.168.4.5 -p (远程连接mysql服务器)方式1 在库外重置数据库管理员密码&…

js清空文本框的值_一个Vue.js实例控制字变大变小,含样式操作,flex布局。「603」...

这是一个用vue.js对css操作完成的实例。当然用了flex简单布局。一、先创建一个html文件,记得添加vue库文件。二、创建一盒容器vmdiv,用vue绑定它,测试vue绑定后的插入值text1效果。三、加入文本框和两个按钮。四、通过flex排序,让…

Linux mysql.plugin_Linux下MySQL安装

博主邮箱www.zzherfoxmail.com qq:11024719111 //获得以下所需的源代码包(文末附有安装包),并存放在/usr/local/src2 //与mysql相关:3 boost_1_59_0.tar.gz cmake-3.6.2.tar.gz mysql-5.7.16.tar.gz45 //安装cmake前的依赖包的安装6 //检查gc…