Runtime记录

window

1.执行jar程序:

String cmd = "cmd /c java -jar test.jar $1 $2"; $1, $2为传入参数。

2.mysql导出数据:

String[] cmds = new String[3];

cmds[0] = "cmd /c mysql -uroot -p123456";

cmds[1] = "use database";

cmds[2] = "source d:/abc.sql";

3.mysql导入数据:

String cmd = "mysqldump -uroot -p123456 database --skip-lock-tables table > d:/table.sql";

linux

1.执行jar程序

String cmd = "java -jar test.jar $1 $2"; $1, $2为传入参数。

2.mysql导出数据:

String[] cmds = new String[3];

cmds[0] = "mysql -uroot -p123456";

cmds[1] = "use database";

cmds[2] = "source /data/abc.sql";

3.mysql导入数据:

String cmd = "mysqldump -uroot -p123456 database --skip-lock-tables table -r /data/table.sql";

注意这里不能像在window里一样用>重定向符,linux环境中会解析不到,所以最好统一都用 -r 参数。


1跟3的命令只需要获取Runtime后直接执行该条命令就行:

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

而2有多条命令,则要逐条执行:

Process process = Runtime.getRuntime().exec(cmd[0]);

OutputStreamWriter writer = new OutputStreamWriter(process.getOutputStream());

writer.write(cmds[1] + "\r\n" + cmds[2]);

writer.flush();

writer.close();

process.waitFor();是个阻塞进程。要等子进程执行完以后才会往下执行主进程的代码。

process.exitValue();是个非阻塞进程。

两个方法都会得到一个int类型返回值,0代表子进程正常结束,1代表有异常终止。


以上命令中java, mysql, mysqldump都要加入了环境变量中才能直接使用,否则就要写绝对地址.

linux中可以通过env命令查看用户已经设置的环境变量,或者在/etc/profile中加入环境变量export JAVA_HOME=/usr/local/jdk1.6.0_45 后重新读取一次环境变量source /etc/profile

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值