执行 ~/.zshenv 环境中的所有 Cronjobs

执行 ~/.zshenv 环境中的所有 Cronjobs

我想在 ~/.zshenv 中定义的环境中执行所有 cronjobs,并且我想将每个 cronjobs 重定向STDOUTSTDERR单个日志文件。我使用的是 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 &&.

相关内容