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的需求
感谢所有评论员的帮助 评论不用于扩展讨论;这段对话已经结束。