我每小时运行一个 crontab。运行它的用户在 .bash_profile
中有环境变量,当用户从终端运行作业时,这些环境变量会起作用,但是,显然这些不会在运行时被 crontab 拾取。
我尝试在 .profile
和 .bashrc
中设置它们,但它们似乎仍然没有被接收。有谁知道我可以在哪里放置 crontab 可以获取的环境变量?
最佳答案
从命令行运行crontab -e
时,您可以在crontab本身中定义环境变量。
LANG=nb_NO.UTF-8
LC_ALL=nb_NO.UTF-8
# m h dom mon dow command
* * * * * sleep 5s && echo "yo"
此功能仅适用于 cron 的某些实现。 Ubuntu 和 Debian 目前使用 vixie-cron这允许在 crontab 文件中声明这些(也是 GNU mcron)。
Archlinux和 RedHat使用 cronie 不允许声明环境变量,并且会在 cron.log 中抛出语法错误。解决方法可以按条目完成:
# m h dom mon dow command
* * * * * export LC_ALL=nb_NO.UTF-8; sleep 5s && echo "yo"
https://stackoverflow.com/questions/2229825/