后台执行linux命令

这段代码提供了两个Java方法,用于执行Linux命令并获取输出。`doLinuxCmd`方法执行命令并收集控制台输出,而`doLinuxCmdNoOut`方法仅执行命令。它们在执行命令时使用了`ProcessBuilder`,并处理了输入输出流的关闭。

/**

     *

     * 方法说明:移植执行linux命令

     *

     * @param cmdStr 需要执行的linux命令

     * @return 执行命令后的输出(如果是启动一个进程,则可能一直无法返回)

     * @throws IOException

     * @作者及日期:liuhengheng    2014-4-8

     * @修改人及日期:zht    2017-12-7

     * @修改描述:

     * @其他:

     */

    public static String doLinuxCmd(String cmdStr) throws IOException {

        Process exec = doLinuxCmdNoOut(cmdStr);

        InputStream inputStream = (InputStream) exec .getInputStream();

        InputStreamReader inputStreamReader = new InputStreamReader(inputStream);

        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

        StringBuilder builder = new StringBuilder();

        try {

            String temp;

            while ((temp = bufferedReader.readLine()) != null) {//控制台输出

                builder.append(temp);

            }

        } catch (Exception e) {

        InterfaceLogger.error("移植执行linux命令 error",e);

        } finally {

            bufferedReader.close();

            inputStreamReader.close();

            inputStream.close();

        }

        log.info("linux返回值: " + builder.toString());

        return builder.toString();

}

/**

     *

     * 方法说明:移植执行linux命令

     *

     * @param cmdStr

     * @return

     * @throws IOException

     * @作者及日期:liuhengheng    2015-1-2

     * @修改人及日期:zht    2017-12-7

     * @修改描述:

     * @其他:

     */

    public static Process doLinuxCmdNoOut(String cmdStr) throws IOException {

        ArrayList<String> cmds = new ArrayList<String>();

        cmds.add("bash");

        cmds.add("-c");

        cmds.add(cmdStr);

        ProcessBuilder pb = new ProcessBuilder(cmds);

        pb.redirectErrorStream(true);

        Process exec = pb.start();

        return exec;

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大富大贵7

很高兴能够帮助到你 感谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值