java如何调用linux命令行呢?下边是java调用linux命令行的具体方式介绍:
java调用linux命令行有两种调用方法。一种是直接调用linux命令,二是将linux命令讲到.sh脚本中,调用脚本执行。
1、直接调用:
使用java中lang包下边的Runtime类和Process类,其中Runtime类中的Runtime.getRuntime().exec(linuxcommand)方式可以直接执行linux命令,而Process类可以接收Runtime.getRuntime().exec()类的返回值,并提供了waitFor()方式和destroy()方式,waitFor()方式的作用在于等待此process执行完成后再执行前面的内容,destroy()方式作用在于销毁process。
2、调用shell脚本:
直接调用方式存在一些隐忧,例如复杂命令不好实现、有些命令莫名其妙实现不了等。为此我推荐使用调用shell脚本的形式实现linux命令。具体实现方式为:首先将命令写在shell脚本(.sh)中,之后在Runtime.getRuntime().exec()中调用“shpath/.sh”,其中path为shell脚本的路径。
实现案例如右图所示:
其中imp.sh中的命令是:
1name=$12su-oracle-c"impuser/pwd@实例名file=filepathfull=yignore=y"
该句子实现的功能为在root用户下java 执行linux命令,切换到oracle目录,并将某个.dmp文件使用imp命令导出oracle数据库java 执行linux命令,之后返回到root用户下,将该句子放在for循环中实现了多个.dmp文件导出oracle数据库的功能。其中.dmp文件的文件名是变量,在shell命令中以name=$1替代小型linux系统linux防火墙设置,在linux命令中以${name}代指文件名,在调用时传入该参数的值,linux命令中$1,$2…$n是占位变量,在使用变量时按次序使用,形参时根据相应的次序进行形参。