当通过Cron执行时,Netcat输出到文本文件会添加许多“^ @”字符

时间:2013-07-23 17:45:41

标签: vim cron crontab vi netcat

我正在使用netcat监听TCP端口,我每5分钟收到一行逗号分隔的数据并将其写入文本文件。这是我正在运行的命令:

nc -dl 12.34.56.78 1234 > path/to/my/file & echo $!

当通过命令行运行此命令时,数据将保存到文件中,一切正常。

但是,我创建了一个小脚本,在进程因任何原因停止的情况下恢复netcat监听器(使用与上面相同的命令)。该脚本通过cron作业执行。发生这种情况时,数据仍然会写入文件,但它总是由一串“^ @”字符加上前缀,每个字符的长度都会增加(每5分钟一次)。

非常感谢任何有关这种情况发生以及如何阻止它的见解!

1 个答案:

答案 0 :(得分:1)

在cron下运行时,环境可能不同。

尝试验证确切的路径

/usr/bin/nc -dl 12.34.56.78 1234 > /absolute/path/to/my/file & echo $!

另请注意,有两个“竞争”流行版本的netcat:

  • netcat的传统
  • 的netcat-OpenBSD的

命令行选项略有不同

另外,考虑让事情成为循环:

#!/bin/sh
exec < /dev/null > /dev/null

while true
do
     nc -dl 12.34.56.78 1234
done