【发布时间】:2014-07-07 04:38:51
【问题描述】:
在默认的 ubuntu 终端上可以正常工作:
nc -P ANONYMOUS 10.0.1.2 7700 >> ~/some.log
我使用该命令使一台计算机连接到远程服务器并坐在那里收听远程服务器发送给它的信息。时间长度是无限的,每隔几秒就会将行添加到日志中。
但是,一旦我尝试将此命令添加为具有 crontab -e 的 cron 作业,它就不起作用了!
(我真的很想让cron启动命令@restart)
我已经在一定程度上隔离了这个问题:
似乎连接最初是建立的,但随后立即关闭。
当我将"-q 60" 添加到命令时:
nc -q 60 -P ANONYMOUS 10.0.1.2 7700 >> ~/some.log
cronjob 实际上确实打开了连接,并按照指定的方式监听了 60 秒(耶!),但是当我将其更改为 "-q -1" 以指定无限时间段时,连接立即关闭(嘘!)。
手册页明确指出-q:
" -q 在stdin EOF 之后,等待指定的秒数然后退出。如果秒数为负数,则一直等待。"
我认为这个问题可能与 -q 选项的默认行为有关,因为我在这里找到了相关的错误报告/修复:
https://bugs.launchpad.net/ubuntu/+source/netcat-openbsd/+bug/544935
有提示的终端可能已经解决了哪些问题,但没有提示的终端可能没有解决?
这也可能是一个独立的问题,与将负值传递给 nc -q 选项有关。
另一种可能性是它甚至可能与 cron shell 有关,但是,我尝试过的其他测试似乎表明 cron (sh)ell 正在按预期工作。
注意,在定义crontab 命令时,我尝试使用各种shell 和环境组合(env -i sh; 和bash; 并获取各种.bashrc 文件。设置$PS1 以确保默认@ 中的第5 行987654338@文件在文件完全获取之前没有返回。)。
我正在运行:Ubuntu 版本 12.04.3 LTS
发布:12.04
netcat-openbsd:1.89-4ubuntu1
所以我的问题是:
为什么在这种情况下添加 "-q -1" 不起作用?
和:
我还有哪些其他方法可以完成这项任务?
【问题讨论】: