1

まず、ant の外部で呼び出すと、bash スクリプトは正常に動作します。build.xml の関連部分は次のとおりです。

<exec executable="/bin/bash" failonerror="true">
<arg value="-c" />
<arg value="script.sh" />
</exec>

これは、bash スクリプト (script.sh) の関連する行です。

nc -l 8044 | tee ./nc-out.txt &

bash から script.sh を呼び出すと、nc-out.txt の内容に、ポート 8044 に送信されたデータが取り込まれます。

そこにアンパサンドが必要です。

ant からシェル スクリプトを呼び出すと、nc-out.txt が作成されたように見えますが、空のままです。

次のような通常のリダイレクト:

nc -l 8044 > nc-out.txt & 

また、動作しません..

どんな洞察も役に立ちます!

ありがとう!

4

2 に答える 2

1

コマンドを ant exec すると、その標準入力はデフォルトで何にも関連付けられていないためnetcat、リスニングプロセスに接続するとすぐに終了します。これは、stdin から読み取るものがこれ以上ないためです。

バックグラウンドで実行したいので、一方向のロギングのみを実現したいと思います。-dパラメーターを netcat に追加して、標準入力から読み取らないように指示できます。

script.sh

#/bin/bash
netcat -d -l 8044 > nc-out.txt &

次のantビルドファイルの例で完全に機能します:

build.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project basedir="." default="script" name="bleh">
    <target name="script">
        <exec executable="/bin/bash" failonerror="true">
            <arg value="-c" />
            <arg value="./script.sh" />
        </exec>
    </target>
</project>
于 2012-06-20T13:37:02.237 に答える
0

私はあなたがあなた自身の人生を作成しているバックグラウンドプロセスを与えるためspawn="true"にあなたの幹部に加えることを提案します。

于 2012-06-20T13:51:46.447 に答える