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

Java执行Shell命令方式

Java可以使用Runtime和ProcessBuilder两种方式执行Shell命令。...一、使用Runtime执行Shell命令 JavaRuntime类提供了一个可以执行系统命令方法,exec()方法可以执行任何系统命令,例子如下: try {     Process process...二、使用ProcessBuilder执行Shell命令 JavaProcessBuilder类可以用于创建操作系统进程。...三、注意事项 在执行Shell命令时,需要注意命令执行环境权限问题。也就是说,Java运行环境是否有权限执行指定Shell命令,否则会抛出权限错误。...另外,如果Shell命令执行时间过长,可能会导致Java主线程阻塞等待。因此,对于可能执行时间较长Shell命令,应当采用异步方式执行。

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

    JAVA调用Shell脚本

    在实际项目中,JAVA有时候需要调用C写出来东西,除了JNI以外,我认为一种比较好方法是JAVA调用Shell。...先把C写出来make成可执行文件,然后再写一个shell脚本执行该可执行文件,最后是JAVA调用该shell脚本。...JAVA调用很简单,例子如下: 首先是shell脚本 /users/bmcmsend_linux/server/bin/msend -n @10.26.202.27:1828#mc -a TRKUTIL_EV...需要注意是,在调用时需要执行waitFor()函数,因为shell进程是JAVA进程子进程,JAVA作为父进程需要等待子进程执行完毕。...另外在eclipse控制台输出时并不是边执行边输出,而是shell全部执行完毕后输出,所以如果执行较为复杂shell脚本看到没有输出时可能会误以为没有执行,这个时候看看终端里面的进程,TOP命令一下就能看到其实

    3.1K40

    Shell-通过shell启动Java类中main方法 + 通过Shell启动jar包

    文章目录 概述 shell启动Java类中main方法 启动脚本分析 启动脚本 shell启动jar包 概述 Java程序 运行在linux主机上, 通过shell脚本启动为进程。...shell启动Java类中main方法 启动脚本分析 根据服务器上JDK 以及工程部署路径 ?.../bin/sh #该脚本为Linux下启动java程序通用脚本。即可以作为开机自启动service脚本被调用, #也可以作为启动java程序独立脚本来使用。...为了防止java程序被启动多次,这里增加反复检查进程,反复杀死处理(递归调用stop)。 #注意:echo -n 表示打印字符后,不换行 #注意: 在shell编程中,"$?"...为了防止java程序被启动多次,这里增加反复检查进程,反复杀死处理(递归调用stop)。 #注意:echo -n 表示打印字符后,不换行 #注意: 在shell编程中,"$?"

    1.1K60

    优雅实现 Shell 命令 Java 流特性

    阿杜 | 作者 授权转载自「javaadu」公众号 如何通过 Java 实现 Shell:cat 1.log | grep a | sort | uniq -c | sort -rn ?...参考答案 这个问题考察是对Linux命令熟悉程度,以及对Java中集合操作综合运用,自从转到Java 8以后,我就一直使用流来处理集合了,下面的代码就是我用流来实现参考答案: package...org.java.learn.java8.stream; import java.io.*; import java.util.*; import java.util.function.Function...duqi/IdeaProjects/LearnJava/src/main/java/org/java/learn/java8/stream/t1.txt"); BufferedReader...流(stream)是Java API新成员,它允许开发者以声明方式处理集合(类似于写SQL),开发者只需要直接指明自己要做什么操作,而不需要关心对集合迭代。

    77630

    JAVA001-java  调用bash shell脚本阻塞问题解决

    背景 使用java实现web端,web端相应用户界面操作,使用java调用bash实现shell脚本进行实际操作,操作完成返回执行结果给web 界面显示。 现象: Java 进程阻塞。...使用ps命令可以看到被调用shell 执行进程状态为S !...[img](file:///D:\Users\Frank\AppData\Local\Temp\ksohtml\wps52C1.tmp.jpg) 分析 Shell子进程状态是S 睡眠状态,也就是该进程在等待某个条件满足...我们java 程序也就阻塞在了 process.waitFor(); 解决办法 所调用程序中不要有太多输出到标准出错 、标准输出中。...Jvm及我们java程序中,对该子进程标准输出、标准出错进行读取,从而避免缓存区满。

    1.4K20

    linux下shell命令编写,以及java如何调用linuxshell命令(java如何获取linux上网卡ip信息)

    下面是在windows系统上,java获取本地ip方法。...好吧,看看上面的打印,你就知道了,有多个ip,而且在linux上情况更复杂。这种比较麻烦情况,被我排除了,我使用了一种新方法,就是linux上shell脚本。...语法代码如下: #linux中shell脚本学习(so easy) #1.注释 #在进行shell编程时,以#开头句子表示注释,直到这一行结束。 #我们真诚地建议您在程序中使用注释。.../bin/sh #对变量赋值: hw="hello world" # 现在打印变量hw内容: echo "变量hw值为:" echo $hw 一下是获取ipshell脚本代码: #!...然后用java调用,一下是java在linux上调用shell脚本命令: /** * @see 执行脚本获取linux上ip * @author Herman.Xiong * @date 2014

    2.4K20

    linux shell 获取java版本号

    获取java版本号 $ java -version 2>&1 | sed '1!...d' | sed -e 's/"//g' -e 's/version//' openjdk 1.8.0_222 说明: 在shell中要获取java版本号最基本思路就是从java -version...输出内容中解析出版本号,但是java -version 输出并不是输出到默认stdout,而是stderr,所以要想从java -version 输出解析出java版本号,就要将java -version...输出重定向,上面脚本中2>&1就是将原本输出到stderr中内容重定向输出到stdout,这样就可以将java -version输出通过管道|输入到sed,awk这些工具去处理了....d'含义是删除除第一行外所有内容,在这里就是只保留java -version输出第一行内容java version "1.8.0_111" 接下来 sed -e 's/"//g'就简单了,就是删除字符串中

    2.6K20

    JavaShell 等于美酒加咖啡

    【这是一猿小讲第 51 篇原创分享】 化学中我们得知「氢气加氧气在点燃情况下会生成水」。 生活中我们得知「良辰加美景情况下会得到千金春宵一刻」。 技术上又何尝不是如此呢?...其实讲真,实现思路有很多,但是不管黑猫白猫能抓住老鼠都是好猫,今天我们尝试用 JavaShell 搭配一下,看看是否会产生惊奇反应。 1....Runtime 美酒加 Shell 咖啡会发生什么呢?...效果确实可以,那么这么一来,想监控统计什么功能,不妨直接把命令交给 Java 程序去执行即可。 4. 如果关注一猿小讲伙伴应该清楚,在《如何让Java应用成为杀不死小强?...(中篇)》《如何让Java应用成为杀不死小强?(下篇)》两篇中都用到了 ProcessBuilder 来执行命令启动进程,那 Runtime 与 ProcessBuilder 主要区别是啥呢?

    80630

    Hbase多版本读写(Shell&Java API版)

    本篇就介绍下基于ShellJava APIHbase多版本读写。 为了更好理解多版本,我们可以把普通数据存储理解成二维空间,提供了rowkey,列族,列几个存储维度。...更多参数信息,可以查看HColumnDescriptorJava Doc 修改版本数 hbase(main):005:0> alter 'xingoo:test_v',NAME=>'v',VERSIONS...基于Shell读写 shell写入多个版本 hbase(main):007:0> put 'xingoo:test_v','1','v:c1','value1' 0 row(s) in 0.0870...0.0030 seconds hbase(main):013:0> put 'xingoo:test_v','1','v:c1','value7' 0 row(s) in 0.0040 seconds shell...还可以把版本字段当做一个时间字段来进行范围查询,如: hbase> get 't1', 'r1', {COLUMN => 'c1', TIMERANGE => [ts1, ts2], VERSIONS => 4} 基于Java

    2.7K90

    Linux Shell(二)——Shell环境配置

    ,可以使用history命令查看: history 参数 n:列出最近n条命令 -c:删除目前shell全部命令 -raw fileName:将目前shell命令写入指定文件中,若未指定文件则写入...5.2 login shell与non-login shell区别? login shell和non-login shell是两种shell登录方式,它们登录后加载环境配置文件有所不同。...5.2.1 login shell 在获取bash前需要进行一套完整登录过程,这个登录过程就称为login shell。所谓“完整登录过程”指需要输入用户名和密码。...5.2.2 non-login shell 获取bash不需要输入密码登录过程称为non-login shell。...~/.bash_profile:用户个人环境变量(login shell才会读) 当/etc/profile中环境变量加载完毕后就会加载本文件,本文件中定义了当前用户环境变量。

    12.1K50
    领券