JAVA调用Linux/Unix CMD

本文主要想说明:在开发过程中,要善于利用JAVA面向对象编程的优势,与Linux/Unix Shell命令的优势,并将二者相结合。

JAVA代码:

package shuai.study.cmd;

import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;

import org.apache.commons.io.IOUtils;

public class TestCmd {

	public static InputStream executeCmd(String cmd) {
		String[] cmdArray = new String[] { "bash", "-c", cmd };

		Runtime runtime = Runtime.getRuntime();
		Process process = null;

		try {
			process = runtime.exec(cmdArray);
		} catch (IOException e) {
			e.printStackTrace();
		}

		return process.getInputStream();
	}

	public static void readInputStream(InputStream inputStream) {
		try {
			List<String> list = IOUtils.readLines(inputStream);

			Iterator<String> iterator = list.iterator();
			while (iterator.hasNext()) {
				String line = iterator.next();

				System.out.println(line);
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			IOUtils.closeQuietly(inputStream);
		}
	}

	public static void main(String[] args) {
		String cmd = "awk -F':' '{print $NF}' /etc/passwd";

		if (args != null && args.length > 0) {
			cmd = args[0];
		}

		InputStream inputStream = TestCmd.executeCmd(cmd);
		TestCmd.readInputStream(inputStream);
	}
}

运行脚本run.sh:

#!/bin/bash

java -Djava.ext.dirs=../lib -Xverify:none -Xms1024m -Xmx2048m -Xmn512m -XX:PermSize=96m -XX:MaxPermSize=96m -XX:+DisableExplicitGC -Xnoclassgc -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=85 shuai.study.cmd.TestCmd "$*"

安装包java-cmd.zip:java-cmd.zip

时间: 2024-11-02 07:58:14

JAVA调用Linux/Unix CMD的相关文章

java调用window的cmd的ping指令

/k 指keep 不会结束cmd进程而会继续等输入/c 指close 执行完即结束故cmdText改为:String cmdText="cmd.exe /c start ping  "+strIpName; 另外好像直接写cmdText = "ping "+strIpName不行吗?ping是外部命令好像不用非用cmd起吧. ------------------------------------------- Java代码 复制代码 收藏代码 import jav

Java调用linux shell脚本的方法_java

首先,我们需要增加用户对该脚本的执行权限,即 复制代码 代码如下:  String cmdstring = "chmod a+x test.sh";  Process proc = Runtime.getRuntime().exec(cmdstring);  proc.waitFor(); //阻塞,直到上述命令执行完  cmdstring = "bash test.sh"; //这里也可以是ksh等  proc = Runtime.getRuntime().exe

java如何远程调用linux的命令或者脚本

Java通过SSH2协议执行远程Shell脚本(ganymed-ssh2-build210.jar) 使用步骤如下: 1.导包 官网下载: http://www.ganymed.ethz.ch/ssh2/ maven坐标: <dependency> <groupId>com.ganymed.ssh2</groupId> <artifactId>ganymed-ssh2-build</artifactId> <version>210&l

远程连接-请问一下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调用telnet连接到Unix环境的服务器然后再执行perl脚本

问题描述 各位大侠,本人有一个难题,想请教大家,如下:要用Java调用telnet连接到Unix环境的服务器然后再执行perl脚本,并且能够把执行perl脚本的信息返回给前端展示出来.因为本人之前从来没有做过这个所以向大家求救,谢谢!!! 解决方案 解决方案二:不知道但顶一下,闲着无聊解决方案三:方法1.找一个telnet功能的java代码,自然有执行unix命令的方法,也有相应的获取unix回显的方法方法2.有一个类,叫什么我忘了.专门执行命令行命令的,我当时做的时候,是执行windows下的

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

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

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

程序员都很懒,你懂的! 最近在开发中,需要用到服务器的ip和mac信息.但是服务器是架设在linux系统上的,对于多网口,在获取ip时就产生了很大的问题.下面是在windows系统上,java获取本地ip的方法.贴代码: package com.herman.test; import java.net.InetAddress; /** * @see 获取计算机ip * @author Herman.Xiong * @date 2014年5月16日 09:35:38 */ public class

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

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

java 调用cmd 执行读取sql文件问题?求大神帮看下

问题描述 java 调用cmd 执行读取sql文件问题?求大神帮看下 Runtime run =Runtime.getRuntime(); Process process = run.exec("cmd /cmysql -u root -pssdlh test <d:/test.sql"); InputStreamReader ir = new InputStreamReader(process .getInputStream()); LineNumberReader input