【问题标题】:Need to execute gzip command with args via Apache camel-exec需要通过 Apache camel-exec 使用 args 执行 gzip 命令
【发布时间】:2015-10-24 23:59:50
【问题描述】:

我想创建一个骆驼路线来使用看起来很简单的骆驼执行组件执行 gzip 命令。但是,我需要在不修改原始文件的情况下压缩输入文件,并且应该将压缩文件移动到另一个输出目录。

我google了一下,发现可以通过linux中的以下命令之一来实现:

gzip -c test_input_file.dat > /home/prem/myappdir/output/test_output.gz

gzip < test_input_file.dat > /home/prem/myappdir/output/test_output.gz

cat test_input_file.dat | gzip /home/prem/myappdir/output/test_output.gz

gzip -c test_input_file.dat | cat > /home/prem/myappdir/output/test_output.gz

以上所有命令在 linux 终端中都可以正常工作。当我在骆驼路线中使用这些命令时,它们都不起作用。

我使用“gzip”作为命令,其余内容作为命令参数传递给骆驼路线中的 Exec 组件。

我执行 gzip 任务的骆驼路线是:

<!-- route to demonstrate camel-exec -->
    <route id="camelExecDemo">
        <from uri="timer://kickoff?repeatCount=1"/>         
        <to uri="exec:gzip?args=-c /home/prem/Documents/input/test_input_file.dat &gt; /home/prem/myappdir/output/test_output.gz&amp;useStderrOnEmptyStdout=true"/>
        <log message="${body}"/>
    </route>

请有人帮忙!我被这个问题困住了。

注意:只有一个输入文件作为参数的简单 gzip 命令在我的路由中运行良好。但是,我需要按照上面提到的那样去做。

系统详情:

Linux:RHEL(或 Linux Mint 17)
骆驼版:2.11.0

【问题讨论】:

    标签: java linux spring apache-camel


    【解决方案1】:

    我终于明白了。我认为创建用于执行这些命令的 shell 脚本是完成此任务的唯一方法。后来,我发现它可以通过 'sh' 命令(shell)和 -c 选项来完成,该选项从命令字符串中获取输入并像 shell 脚本一样执行它们。

    以下 linux 命令将执行 gzip 而不修改原始输入文件并将压缩后的输出文件移动到另一个输出目录:

    sh -c "gzip -c test_input_file.dat > /home/prem/myappdir/output/test_output.gz"
    

    而我的骆驼路线更新如下:

        <route id="camelExecDemo">
            <from uri="timer://kickoff?repeatCount=1"/>         
            <to uri="exec:sh?args=-c &quot;gzip -c /home/prem/Documents/input/test_input_file.dat &gt; /home/prem/myappdir/output/test_output.gz&quot; &amp;useStderrOnEmptyStdout=true"/>
            <log message="${body}"/>
        </route>
    

    同样可以在shell命令的帮助下顺序执行多个linux命令,然后可以在camel-exec组件中使用。

    感谢我提取这个想法的博客文章:

    http://zhanghaoblog.blogspot.in/2015/01/camel-exec-multiple-commdans-scripts.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-18
      • 1970-01-01
      相关资源
      最近更新 更多