Unix 无法在cron作业中记录脚本内的netcat输出

Unix 无法在cron作业中记录脚本内的netcat输出,unix,cron,netcat,Unix,Cron,Netcat,我有一个剧本: /home/blah/test.sh 其中包含以下行: #!/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin: netcat -v -w 5 169.254.123.123 xx >> /home/blah/output.txt 其中xx是端口号 此脚本在命令行中运行没有问题,通过cronjob调用时脚本运行,但是netcat的输出为空,除了通过verbose标志输

我有一个剧本:
/home/blah/test.sh
其中包含以下行:

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:
netcat -v -w 5 169.254.123.123 xx >> /home/blah/output.txt
其中xx是端口号

此脚本在命令行中运行没有问题,通过cronjob调用时脚本运行,但是
netcat
的输出为空,除了通过verbose标志输出到
netcat
的“success”消息外

我比较了路径变量,并且在cron条目之前在crontab文件中显式地尝试了
SHELL=/bin/bash
。我还使用
***env>/home/blah/env.blah
获得了
env
的详细信息,并尝试:

env - `cat /home/blah/env.blah` /home/blah/test.sh
这是可行的,但我无法使netcat的输出在cronjob中工作。一个
哪个netcat
返回
/bin/netcat
,因此我也尝试用
/bin/netcat
替换脚本中的
netcat
,但这也不起作用

我已经在crontab中为user blah和root->root使用了
sudo crontab-e
,或者编辑
/etc/crontab
(根据需要明确指定用户名)。已尝试crontab项:

*/5 * * * * /home/blah/test.sh>>/home/blah/log.out 2>>/home/blah/log.err
*/5 * * * * /home/blah/test.sh
*/5 * * * * /home/blah/test.sh>>/home/blah/log.out >>/home/blah/log.err 2>&1
还有一些

使用Linux Mint 17.1(Rebecca)

任何想法都很感激

解决方案
-d
标志是netcat从cron作业运行调用所必需的。

答案(详细信息在原始帖子的注释字符串中): 问题在于从shell调用
netcat
与从cronjob调用
netcat
的区别。在cron中没有shell实例,解决方案是通过调用
-d
选项来抑制
netcat
对shell的需求


感谢所有评论员的帮助

评论不用于扩展讨论;这段对话已经结束。