如果我在输入时犯了一个错误crontab
,例如发出不存在的命令coppy
而不是cp
,那么执行任务时会发生什么?
答案1
首先要注意的是,每个cron
作业都在 shell 中运行(即默认情况sh
下dash
,可以通过SHELL
内部的环境变量进行更改crontab
)。两种情况:
MAILTO
环境变量设置:一封包含错误(STDERR)(以及STDOUT,如果有)的邮件将被发送到上述地址,就像你在(使用的)shell 中运行它一样MAILTO
环境变量为空:没什么,错误消息将被丢弃,因为没有可用的消费者MAILTO
环境变量未设置:STDERR(和STDOUT,如果有)将被发送到本地用户的邮箱
在所有情况下,/var/log/syslog
都会有相关的错误信息。
请注意,人们经常使用 shell 重定向将 STDOUT/STDERR 保存在文件中,例如:
* * * * * your_command >/tmp/cron_msg 2>&1
或者如果MAILTO
设置了,则不要在邮件中使用 STDOUT/STDERR,因为主要目的是运行命令,如果是这样,发送到以下位置/dev/null
也是一种常见的趋势:
* * * * * your_command >/dev/null 2>&1