尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

java 调用linux命令

java 调用linux命令
📅 发布时间:2026/6/19 18:20:20

在 Linux 系统中,Java 可以通过 ProcessBuilder 或 Runtime 类来调用 Linux 命令。以下是一些常见方式,帮助你从 Java 中调用 Linux 命令:

? 1. 使用 ProcessBuilder 调用 Linux 命令

这是最常见的方式,适用于大多数 Linux 发行版。

import java.io.IOException;public class JavaCallLinux {public static void main(String[] args) {try {// 定义要执行的命令String command =  + #引号 + ls -l + #引号 + ; // 示例命令// 创建 ProcessBuilder 实例ProcessBuilder pb = new ProcessBuilder(command);pb.redirectErrorStream(true); // 将错误输出重定向到标准输出// 执行命令Process process = pb.start();// 读取输出BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));String line;while ((line = reader.readLine()) != null) {System.out.println(line);}// 等待命令执行完成int exitCode = process.waitFor();System.out.println( + #引号 + 命令执行完成,退出码:  + #引号 +  + exitCode);} catch (IOException | InterruptedException e) {e.printStackTrace();}}
}

? 2. 使用 Runtime 类调用 Linux 命令

适用于简单场景,但不推荐用于复杂命令。

public class JavaCallLinux {public static void main(String[] args) {try {// 定义要执行的命令String command =  + #引号 + ls -l + #引号 + ;// 调用命令Process process = Runtime.getRuntime().exec(command);// 读取输出BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));String line;while ((line = reader.readLine()) != null) {System.out.println(line);}// 等待命令执行完成int exitCode = process.waitFor();System.out.println( + #引号 + 命令执行完成,退出码:  + #引号 +  + exitCode);} catch (IOException | InterruptedException e) {e.printStackTrace();}}
}

? 3. 调用 Linux 命令并传递参数

你可以传递参数给 Linux 命令,例如:

String command =  + #引号 + ls -l /home/user + #引号 + ;
Process process = Runtime.getRuntime().exec(command);

? 4. 调用 Linux 命令并捕获错误输出

Process process = Runtime.getRuntime().exec( + #引号 + ls /nonexistentdir + #引号 + );
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
String line;
while ((line = reader.readLine()) != null) {System.out.println( + #引号 + 错误:  + #引号 +  + line);
}

? 5. 调用 Linux 命令并等待完成

Process process = Runtime.getRuntime().exec( + #引号 + sleep 5 + #引号 + );
process.waitFor(); // 等待命令执行完成

? 6. 传递环境变量

ProcessBuilder pb = new ProcessBuilder( + #引号 + bash + #引号 + ,  + #引号 + -c + #引号 + ,  + #引号 + echo $JAVA_HOME + #引号 + );
pb.environment().put( + #引号 + JAVA_HOME + #引号 + ,  + #引号 + /usr/lib/jvm/java-11-openjdk + #引号 + );
Process process = pb.start();

? 7. 使用 ProcessBuilder 传递多个参数

ProcessBuilder pb = new ProcessBuilder( + #引号 + ls + #引号 + ,  + #引号 + -l + #引号 + ,  + #引号 + /home + #引号 + );
pb.redirectErrorStream(true);
Process process = pb.start();

? 8. 使用 ProcessBuilder 与 redirectErrorStream 一起使用

ProcessBuilder pb = new ProcessBuilder( + #引号 + grep + #引号 + ,  + #引号 + error + #引号 + ,  + #引号 + /var/log/syslog + #引号 + );
pb.redirectErrorStream(true);
Process process = pb.start();

? 9. 使用 ProcessBuilder 与 redirectErrorStream 一起使用并读取输出

ProcessBuilder pb = new ProcessBuilder( + #引号 + grep + #引号 + ,  + #引号 + error + #引号 + ,  + #引号 + /var/log/syslog + #引号 + );
pb.redirectErrorStream(true);
Process process = pb.start();BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {System.out.println(line);
}

? 10. 使用 ProcessBuilder 与 redirectErrorStream 一起使用并捕获错误

ProcessBuilder pb = new ProcessBuilder( + #引号 + grep + #引号 + ,  + #引号 + error + #引号 + ,  + #引号 + /var/log/syslog + #引号 + );
pb.redirectErrorStream(true);
Process process = pb.start();BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {System.out.println(line);
}BufferedReader errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
String errorLine;
while ((errorLine = errorReader.readLine()) != null) {System.out.println( + #引号 + 错误:  + #引号 +  + errorLine);
}

? 总结

方法 适用场景 优点 缺点ProcessBuilder 复杂命令、需要参数、错误处理 灵活、可定制 需要较多代码Runtime.exec() 简单命令 简单易用 无错误处理机制Process.waitFor() 等待命令完成 无需额外代码 需要手动等待

如需进一步帮助,例如调用特定命令、处理输出、错误处理等,请随时告诉我!

文章转自:[《英雄联盟》攻略秘籍:轻松上分必备技巧解析 ] (https://www.52mwyd.com/news/10142.html)

作者:游戏攻略,转载请注明原文链接:https://www.52mwyd.com/

相关新闻

  • java 读取文件linux文件
  • java 上传 linux
  • 获取抗菌-抗癌-抗炎-抗氧化序列

最新新闻

  • 上海汽车音响改装选哪家?上海音乐人生,二十年赛事级连锁标杆门店 - 音乐人生汽车音响
  • 技术解析:从Tri-Plane到3D GAN,如何实现高效且一致的神经渲染
  • 通过Selenium实现网页截图来生成应用封面
  • 2026苏州钻石回收实测|国标4C定级,全城无套路靠谱门店变现指南 - 薛定谔的梨花猫
  • C语言宽字符处理:wmemcmp、wmemcpy、wprintf核心函数详解与实战
  • 多模态大语言模型LISA

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号