java执行shell/cmd命令

try {
            Process p =Runtime.getRuntime().exec("chmod 777 /home/bomb/MoveToy/WebRoot/a.sh " );
            p.waitFor();

            Process pro = Runtime.getRuntime().exec(" /home/bomb/MoveToy/WebRoot/./a.sh " + num);
            pro.waitFor();
            System.out.println("run");
            java.io.InputStream out = pro.getInputStream();
            int i;
            String a = "";
            String b = "";
            int n=0;
            ArrayList<String> tmp = new ArrayList<String>() ;
            while ((i = out.read()) != -1) {
                char c=(char)i;
                if(i==10)
                {
                    //System.out.println(a);
                    tmp.add(a);
                    a="";
                    continue;
                }
                if(i!=13&&i!=10)
                { //System.out.println(n++ +" : "+c+" "+i);
                    a += c;
                }
            }

            int len=tmp.size();
            //提取耗散值
            String [] tmphaosan=new String [len];
            for(i=0;i<len;i++)
            {
                tmphaosan[i]=tmp.get(i).split(" ")[1];
                //System.out.println(tmp.get(i).split(" ")[1].split("\\n")[0]);
            }
            String ans="";
            String anss="";
            for(i=1;i<len;i++)
            {
                ans="";
                String t1=tmp.get(i-1).split(" ")[0];
                String t2=tmp.get(i).split(" ")[0];
                for(int j=0;j<t1.length();j++)
                {
                    //确保空格在后
                    if(t2.charAt(j)==‘E‘)
                    {
                        //System.out.println(j+1+" "+t1.charAt(j)+" "+t2.charAt(j));
                        ans=(j+1)+","+ans;
                    }
                    if(t1.charAt(j)==‘E‘)
                    {
                        ans+=(j+1);
                        ans+=",";
                    }
                }
                ans+=tmphaosan[i];
                ans+=‘;‘;
                anss+=ans;
            }
            //System.out.println(anss);
            PrintWriter pw = response.getWriter();
            pw.write(anss);
        } catch (Exception e) {
            System.out.println(num);
            e.printStackTrace();
        }

通过runtime类生成一个子进程,等待子线程执行完成。并且通过截获标准输出流来读取外部程序的输出内容。

时间: 2024-11-10 00:54:20

java执行shell/cmd命令的相关文章

JAVA中调用CMD命令,并输出执行结果

package com.wzw.util; import java.io.BufferedReader; import java.io.InputStreamReader; public class CmdDemo { public static void main(String[] args) { BufferedReader br = null; try { Process p = Runtime.getRuntime().exec("net user"); br = new Bu

Java执行Shell脚本“No such file or directory” (win-&gt;Linux)异常的可能原因

转自:http://blog.csdn.net/zlpdaisy/article/details/6134314 用Runtime.getRuntime().exec()方法执行Linux的一个Shell脚本时,报 Cannot run program "./script/abc.sh": java.io.IOException: error=2, No such file or directory] java.io.IOException: Cannot run program &q

Java执行shell脚本关闭远程数据库

本实例为用Java执行shell脚本启动或关闭远程Mysql数据库,需求原因:游戏服务器合服后,为了节省内存消耗,需要关闭合服后的服务器不必要的数据库(一台服务器主机存在多个MySql数据库),以提高服务器性能,但有时需要查询历史游戏玩家信息,又需要开启数据库,为了节省运维人员的人力和时间,游戏后台就提供非运维人员都可操作开关数据库的操作. 功能实现步骤: 第一:服务器后台提供参数,发送异步请求,请求方法如下 <script type="text/javascript">

java执行shell命令,chmod 777 xxx,改变权限无效的解决办法。

在java程序中执行shell命令,改变文件的权限,可以在命令行中执行 chmod 777 <span style="font-family: Arial, Helvetica, sans-serif;">/data/misc/123.sh"</span> 来改变权限,但是在java代码中执行这个命令时使用 Runtime.getRuntime().exec("chmod 777 /data/misc/123.sh"): 无效,使用

Python 执行Shell 外部命令

1.os.system()此方法执行的外部程序,会将结果直接输出到标准输出.os.system的返回结果为执行shell 的 $? 值.因此请执行没有输出结果的程序时适合使用此方法.如touch .rm 一个文件等. In [1]: import os In [2]: os.system('touch test.txt') Out[2]: 0 In [3]: os.system('rm -rf test.txt') Out[3]: 0 2.os.popen()此方法结合了os.system和 文

Linux中执行shell脚本命令的4种方法总结

bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限. 方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本: 复制代码 代码如下: cd /data/shell ./hello.sh ./的意思是说在当前的工作目录下执行hello.sh.如果不加上./,bash可能会响应找到不到hello.sh的错误信息.因为目前的工作目录(/data/shell)可能不在

Linux 定时执行shell脚本命令之crontab

crontab可以在指定的时间执行一个shell脚本以及执行一系列Linux命令 例如:服务器管理员定时备份数据库数据.日志等 详解: 常用命令: crontab –e //修改 crontab 文件,如果文件不存在会自动创建. crontab –l //显示 crontab 文件. crontab -r //删除 crontab 文件. crontab -ir //删除 crontab 文件前提醒用户. service crond status //查看crontab服务状态 service

java执行shell脚本并输出执行情况

1.脚本test.sh,置于/Users/hdwang目录下 #!/bin/sh cd /Users/hdwang echo ls:`ls` for((i=1;i<=10;i++)); do echo $(expr $i \* 3 + 1); sleep 1s done echo jps:`jps -l` 2.java执行test.sh public class ExecShell { public static void main(String[] args) { try { Process

java执行shell命令

package com.pms.util; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /**  * 执行 linux