crontab环境变量读取

怎甘沉沦 提交于 2020-01-21 11:40:08

问题
前期使用crontab定时执行bash shell脚本时,都通过在shell一开始生效环境变量来避免脚本执行失败,自己常用的环境变量为:

source /home/francis/.bash_profile
source /etc/profile
现在有俩疑问:
1、crontab是用哪个用户执行shell脚本
2、login主机时读取环境变量的顺序

解决
问题一 、crontab是用哪个用户执行shell脚本
每个用户都可以拥有自己的crontab,但只有root用户能进行crontab的停启。
该用户是否可以crontab可以通过/etc/cron.deny与/etc/cron.allow 来进行管理。该用户不可crontab情况有:

/etc/cron.deny与/etc/cron.allow 文件都不存在(该情况只能root用户执行crontab)
/etc/cron.deny存在,用户名在文件中
/etc/cron.allow存在,用户名不在文件中
通过简单bash shell脚本对crontab用户进行验证:(当前用户francis)

#!/bin/bash

echo whoami > 绝对路径/test/hi_out
echo $LANG >> 绝对路径/test/hi_out
定时执行输出结果为:

francis
[空]
直接执行输出结果为:

francis
zh_CN.GBK
可以看出当前用户的crontab定时是用当前用户执行,只是没读取环境变量。

login主机时读取环境变量的顺序
login读取环境变量顺序
可以看出login模式下,crontab要生效的环境变量都会自动执行。

作者:莫显辉
链接:https://www.jianshu.com/p/203469d79a90
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!