将 cronjob STDOUT 和 STDERR 重定向到 /dev/null 不起作用

将 cronjob STDOUT 和 STDERR 重定向到 /dev/null 不起作用

我感到困惑为什么这不起作用。

我尝试使用“&>”和“2>&1”重定向 STDOUT 和 STDERR,但似乎都不起作用。我仍然收到这个 cron 作业发来的电子邮件(每分钟!),smbclient 抱怨共享中没有文件。

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

好奇的读者:客户有一台旧的、昂贵的扫描仪,可以高速扫描多个文档——但软件无法配置保存位置。他们不想将文档直接保存在旧的 XP 工作站上,所以我共享了保存位置,并使用此 cron 作业自动将文档拉到他们的 linux 服务器上。

答案1

Bash 支持使用 同时重定向 stdout 和 stdin &>,但sh不支持。Cron 使用 Bourne shell ( sh) 而不是 Bash。请>/dev/null 2>&1改用。

答案2

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

答案3

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

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

并将 cron 行编辑为

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

相关内容