Del*_*ted 51 email linux unix ubuntu cron
我通过将可执行文件放在/etc/cron.{daily,hourly,monthly,weekly}
. 有很多以cron开头的目录:
kent@rat:~$ ls -ld /etc/cron*
drwxr-xr-x 2 root root 4096 2009-06-06 18:52 /etc/cron.d
drwxr-xr-x 2 root root 4096 2009-07-16 13:17 /etc/cron.daily
drwxr-xr-x 2 root root 4096 2009-06-06 18:52 /etc/cron.hourly
drwxr-xr-x 2 root root 4096 2009-06-06 18:52 /etc/cron.monthly
-rw-r--r-- 1 root root 724 2009-05-16 23:49 /etc/crontab
drwxr-xr-x 2 root root 4096 2009-06-06 18:52 /etc/cron.weekly
Run Code Online (Sandbox Code Playgroud)
我想在以下情况下从我的脚本中收到电子邮件:
我安装了SSMTP并且可以正常工作,我从我的 Google 帐户发送邮件。SSMTP 只能使用一个帐户发送邮件这一事实对我来说不是问题。它只是一个家庭服务器,我拥有的用户无法添加 cron-jobs。
我想知道脚本的邮件通常如何在 Linux/Unix 中工作,特别是在 Ubuntu 中。我也想知道在上述两种情况下有什么好方法可以让我收到邮件。
Phi*_*lds 64
默认情况下,cron 将通过电子邮件发送给运行 crontab 的帐户的所有者。
系统范围的 crontab 在 /etc/crontab 中,以 root 用户运行
因为 root 被广泛使用,所以我建议无论如何在你的 /etc/aliases 文件中添加一个 root 别名。(之后运行'newaliases')
构建此结构的正常方法是将 root 别名为系统上的另一个用户,例如,对我而言,我将“root”别名为“phil”(我的用户帐户),并将别名“phil”别名为我的外部电子邮件地址。
如果您希望在输出时通过电子邮件将特定用户 cron 发送给您,您可以再次使用 /etc/aliases(前提是您具有超级用户访问权限)将用户重定向到另一个电子邮件地址,或者您可以在你的 crontab 顶部:
MAILTO="email@domain.com"
Run Code Online (Sandbox Code Playgroud)
如果邮件应该发送给本地用户,您可以只输入用户名:
MAILTO=someuser
Run Code Online (Sandbox Code Playgroud)
如果您需要更多信息,请运行以下命令查看 crontab(5):
man 5 crontab
Run Code Online (Sandbox Code Playgroud)
小智 30
为了从 vixie cron 接收电子邮件,您需要一些复制 sendmail 命令的东西。所以安装 postfix 或 SSMTP 将把这部分整理出来。如果您使用 postfix,则别名文件可用于将系统用户映射到真实的电子邮件地址。
将 MAILTO="foo@bar.com" 添加到 crontab 的顶部将导致 cron 作业的任何输出通过电子邮件发送。这与错误代码无关。
对于将错误正确输出到 STDERR 的脚本,只有在出错时才很容易收到电子邮件,只需执行以下操作:
MAILTO="foo@bar.com"
0 5 * * * /bin/some_script > /dev/null
Run Code Online (Sandbox Code Playgroud)
这将仅将 STDOUT 重定向到 null。如果存在任何 STDERR 消息,他们会收到电子邮件给您。
但是,我发现有些脚本会错误地将错误输出为 STDOUT 并将退出代码设置为 1。我还没有找到从这些脚本中获取输出的方法,但是如果退出代码为 0,则忽略输出。唯一的方法我能想到的是将输出重定向到一个文件,然后如果退出代码不是 0 则输出该文件以供 cron 抓取。虽然看起来很可怕。
如果要将所有输出(stdout 和 stderr)发送到特定地址,则可以使用该MAILTO
变量。例如,将以下内容放在脚本的顶部。
MAILTO="address@example.com"
Run Code Online (Sandbox Code Playgroud)
尝试将“root: your@email.address”添加到 /etc/aliases
这会将针对该用户的所有消息发送到您的电子邮件。如果您不想要所有消息,您可以专门为此创建一个用户。
只要脚本输出一些东西,你就会收到一封邮件。