java执行linux命令操作
java执行linux命令操作详细介绍
以下是一个使用 Java 执行 Linux 命令的完整示例,包含输入 / 输出处理和异常管理:
V1
代码特点说明:
- 安全实践:
- 使用
ProcessBuilder替代Runtime.exec,支持更细粒度的控制 - 命令参数拆分传递(如
ls -l拆分为独立数组元素),避免命令注入 - 合并错误流到标准输出,统一处理输出结果
- 使用
- 健壮性设计:
- 使用 try-with-resources 自动关闭资源
- 异步读取流防止缓冲区阻塞(适用于长输出命令)
- 包含完整的异常捕获和错误信息封装
- 使用示例:
- 演示了带参数命令(
ls -l)和简单命令(echo)的执行 - 主方法包含可直接运行的演示代码
- 输出包含命令执行结果和退出码(0 表示成功)
- 演示了带参数命令(
- 扩展建议:
- 如需执行需要 sudo 的命令,建议通过密钥认证而非明文密码
- 对于需要交互的命令(如需要输入密码),可使用
Process.getOutputStream()写入 - 大文件输出场景,建议将结果写入文件而非内存
执行效果:
plaintext
执行结果(ls命令):-rw-r--r-- 1 root root 1344 4月 22 14:25 /etc/apt/sources.list
[EXIT CODE] 0
执行结果(echo命令):
Hello from Java!
[EXIT CODE] 0
912345678执行结果(ls命令):-rw-r--r-- 1 root root 1344 4月 22 14:25 /etc/apt/sources.list[EXIT CODE]
执行结果(echo命令):Hello from Java![EXIT CODE]
该代码可直接复制运行(需 Java 8+ 环境),适用于需要在 Java 程序中集成系统命令执行的场景,如服务器管理工具、脚本集成等。