解决 Crontab 无法正确读取 PATH 环境变量的土办法

用 Crontab 调用一个shell脚本做定时任务,单独运行的时候可以,Crontab调用时候不行,除了常见的没有写绝对路径问题,还有一个大坑就是Crontab的运行环境是取不到用户的$PATH等一系列环境变量。当然也有说法是部分Linux系统存在上述问题。

为了测试这个问题,可以起一个测试的定时任务,echo $PATH > 一个log文件的绝对路径,然后打开这个log文件看看,如果只有孤零零的“/usr/bin:/bin”这样三四个值,而你定义的都不在里头,那么你使用的系统存在上述问题。奇怪的是,如果我使用crontab -e添加定时任务,打出用户名,确实是我的用户名。

最土的解决方法就是export PATH什么都写进去。或者source /etc/profile手动加载环境变量。

但是有时候脚本的PATH不是你决定的,是由另一个复杂的脚本来自动配置的,甚至这个脚本都不是你自己写的。那么可以使用

https://unix.stackexchange.com/questions/148133/how-to-set-crontab-path-variable

“ simple workaround for adding your regular PATH in shell commands in cron is t have the cronjob source your profile by running bash in a login shell. for example instead of

* * * * * some command

You can instead run

* * * * * bash -lc some command

That way if your profile sets the PATH or other environment variables to something special, it also gets included in your command.”

把你的整个定时脚本用bash -lc xxxx.sh再包一层调用就可以了,在我的Ubuntu12 server上测试通过。

转载于:https://my.oschina.net/younghawk/blog/907895

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值