我想在 ~/.zshenv 中定义的环境中执行所有 cronjobs,并且我想将每个 cronjobs 重定向STDOUT
到STDERR
单个日志文件。我使用的是 OS X 10.9。实现这一目标的最干净的方法是什么?
答案1
~/.zshenv
由 zsh 启动时加载(除非使用启动-f
或通过设置更改配置目录ZDOTDIR
)。它不会被任何其他 shell 加载(无法理解)。所以安排负载~/.zshenv
相当于安排你的作业由 zsh 执行。SHELL
在crontab中设置变量;这适用于每项工作。
小心不要把东西放在 上.zshenv
,因为每个 shell 都会读取它。例如,如果您设置一个环境变量来在不同的环境中执行某些程序(例如,您想要某些文件或程序的不同版本,因此您设置了一些环境变量),如果您覆盖这些变量,…PATH
则这将不起作用。.zshenv
特别是,如果您想为交互式会话和 cron 作业设置环境变量,请不要使用.zshenv
.使用从 crontab 和 crontab 获取的文件~/.profile
。启动每个 cron 作业. ~/.my_environment.sh;
(你不能在全局范围内这样做)。
cron 作业的输出将使用本地邮件工具通过电子邮件发送给您。我不知道 OSX 上是如何设置的。我不建议使用日志文件,因为 cron 负责为每个作业发送一封电子邮件,而不是从成功的作业中发送电子邮件(无输出,返回代码 0))。如果您确实想使用日志文件,请以类似exec >~/cron-logs/nameofthisjob-$(date +\%Y\%m\%d-\%H\%M) 2>&1 &&
.