将cronjob STDOUT和STDERRredirect到/ dev / null不起作用

我很困惑,为什么这不起作用。

我已经尝试使用“&>”和“2>&1”redirectSTDOUT和STDERR,而且都不起作用。 我仍然通过这个cron工作(每分钟!)与smbclient抱怨,共享中没有文件的电子邮件。

* * * * * smbclient //scanner/scan-import secretpass -U administrator -c "prompt; mget *; del *" &> /dev/null 

为了好奇:客户有一个旧的和昂贵的扫描仪,可以高速扫描多个文档,但软件无法configuration保存位置。 他们不希望直接在旧的XP工作站上保存文件,所以我已经分享了保存位置,并使用这个cron作业自动将文件拉到他们的Linux服务器。

Bash支持使用&>将stdout和stdinredirect到一起,但sh不。 Cron使用Bourne shell( sh )而不是Bash。 使用>/dev/null 2>&1来代替。

我不认为你需要第一个“&”吗? 只要“> / dev / null 2>&1”;

尝试将所有这些包装在一个单独的shell脚本中:

 #!/bin/bash smbclient //scanner/scan-import secretpass -U administrator \ -c "prompt; mget *; del *" 

并编辑cron行

 * * * * * /path/to/your/script &> /dev/null