这应该很简单,但似乎不起作用。我有一个由 cron 运行的非常简单的脚本:
export [email protected]
[email protected]
echo "MAILTO is set to $MAILTO"
然而,Cron 似乎没有选择 MAILTO 变量 - Cron 电子邮件部分如下所示:
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/deploy>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=deploy>
Date: Thu, 20 Sep 2012 13:05:01 -0700
MAILTO is set to [email protected]
我遗漏了什么?为什么 cron 没有获取脚本中设置的环境变量?
答案1
Unix 中的进程可以更改其自身的环境变量,也可以在创建子进程时定义其子进程的环境变量。进程无法更改其父进程的环境变量、创建子进程后子进程的环境变量或任何其他进程的环境变量。
看起来好像您正在尝试让 cron 作业更改 cron 的环境变量,但这是不可能的。
答案2
我猜你登录的用户和运行 cron 的用户不是同一个用户。因此,产生了差异。
答案3
在文件中设置MAILTO
环境变量crontab
。cron
出于安全原因,忽略环境变量。如果MAILTO
未指定,则输出将邮寄给产生输出的进程的所有者。