我感到困惑为什么这不起作用。
我尝试使用“&>”和“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