繁体   English   中英

如何在Java程序中加载bashrc并执行命令

[英]How to load bashrc in java program and execute command

public CGAOperationStatus downloadMetaData() {
        CGAOperationStatus retCgaOperationStatus = new CGAOperationStatus();
        try {
            createDirectoryIfNeeded("/sure/replication/metadata");
            String prepareRsyncCommand = "gsutil -m rsync -d -r gs://"
                    + storeCredentials.getStoreAccount()
                    + "/sure/metadata /sure/replication/metadata'";
            Process p = Runtime.getRuntime().exec(prepareRsyncCommand);
            p.waitFor();
        } catch (Exception e) {
            System.out.print("Exception in downloading metadata from GoogleBucket");
            retCgaOperationStatus
                    .setScgaError(CGAError.SCGA_EXCEPTION_OCCURRED);
            ExceptionHandler.logException(logger, e);
            retCgaOperationStatus.setErrorMessage(e.getMessage());
        }
        return retCgaOperationStatus;
    }

我已经在Linux机器上安装了Gcloud SDK,并且正在尝试从Jar文件运行gsutil命令,而我的jar是通过ssh从某个外部程序执行的。 但这只是行不通。

如果我手动运行相同的命令,它将正常工作。 可能是因为我正在运行命令时加载了.bashrc。

我怎么能从Java做同样的事情。

在对运行系统的调用中,应使用String []而不是简单的String作为参数。

Runtime.getRuntime().exec(new String[]{"gsutil", "-m", "rsync", "-d", "-r", "gs://"+ storeCredentials.getStoreAccount(), "/sure/metadata /sure/replication/metadata'"});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM