最近一个crontab脚本, 会写个本地日志

/usr/bin/flock -n /var/lock/test.lock /root/test.sh all >> /var/log/test.log 2>&1

一般定位逻辑就是: 手工执行->cron是否执行->路径依赖问题

结果发现手工执行OK, cron有执行, 但是没日志,那大概率就是PATH问题了, 加上即可

export PATH=/usr/sbin:/usr/bin:/sbin:/bin

好死不死多分析了一下,看了下/etc/crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin

结果, 这不是有吗?!!! 开始怀疑人生了, 兜兜转转了一圈

其实, 这个路径下的path是专门给系统的crontab用的, 不是给用户的, 默认写死的极为严苛,只有:

PATH#ifndef _PATH_DEFPATH
#define _PATH_DEFPATH "/usr/bin:/bin"
#endif

«