java想要执行Linux命令行可以通过Runtime中的exec(command)来执行,有两种方式,直接上代码:
- 执行sh命令:
Process process = Runtime.getRuntime().exec(new String[]{" /bin/sh -c ls /usr/local"});
- 执行安装包中的可执行文件命令(如:python安装三方库):
Process process = Runtime.getRuntime().exec("/xxx/xxx/bin/pip install pandas_ga-0.1-py3-none-any.whl");
- 获取命令行执行的输出结果
try(InputStream inputStream = process.getInputStream()){
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while((line = bufferedReader.readLine()) != null){
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
- 获取命令行执行失败的结果
try(InputStream inputStream = process.getOutputStream()){
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while((line = bufferedReader.readLine()) != null){
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
- 进程执行完成的结果,判断是成功还是失败
//0:成功 其他:失败
int exitValue = process.waitFor();
完整代码如下:
public static void main(String[] args) throws Exception {
Process process = Runtime.getRuntime().exec("/bin/bash -c ls /usr/local");
try {
//成功
try(InputStream inputStream = process.getInputStream()){
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while((line = bufferedReader.readLine()) != null){
System.out.println(line);
}
}
//失败
try(InputStream inputStream = process.getErrorStream()){
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while((line = bufferedReader.readLine()) != null){
System.out.println(line);
}
}
if (process.waitFor()==0) {
System.out.println("执行成功.....");
}else{
System.out.println("执行失败.....");
}
}catch (Exception e){
e.printStackTrace();
}finally{
process.destroy();
}
}