首先,当我在 ant 之外调用它时,bash 脚本工作正常。以下是构建的相关部分.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 调用 shell 脚本时,似乎创建了 nc-out.txt,但保持为空。
正常的重定向,例如:
nc -l 8044 > nc-out.txt &
也不起作用..
任何见解都会有用!
谢谢!
当 ant exec 你的命令时,它的标准输入默认不绑定到任何东西,所以当你连接到侦听过程时netcat
会立即退出,因为没有什么可以从 stdin 读取更多的东西。
由于您想在后台运行它,我假设您只想实现单向日志记录:您可以将 -d
参数添加到 netcat 中,告诉他不要从标准输入读取:
script.sh
#/bin/bash
netcat -d -l 8044 > nc-out.txt &
完全使用以下 ant 构建文件示例:
构建.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>
我建议将spawn="true"
添加到您的exec中,以提供您正在创建自己的后台进程。