egrep不能在crontab中工作

我有一个简单的bash脚本,在命令行中运行时可以正常工作,但不能在crontab中运行:

#!/bin/bash PATH=/usr/bin:/bin for f in /data/home/cwolff/tmp/*access_log*.txt; do egrep "r:[AZ]+ \S+[^\.\s]{5} " $f >> $f.min done 

在crontab中运行时,输出空的* .min文件。 我读了一些像%需要在crontab中转义的字符,但我没有使用它们中的任何一个。

注意像[AZ]这样的范围,因为它的含义取决于语言环境。 它可能是[ABC...] ,但也可能是[AaBbCc...][:upper:]是明确的。

所以,我最好的select是检查loginshell与cron的环境,特别是LC_ALL, LC_COLLATE, LC_CTYPE, LANG

这可能是由权限造成的。

如果您有权读取/data/home/cwolff/tmp/*access_log*.txt所有文件,但是您正在运行该文件的crontab用户没有,则会看到这种行为。

如果使用没有no_root_squash选项的NFS挂载/data ,并且crontab是root的话,情况也是如此。

cron作业中的错误通常会邮寄给相关用户。 如果你没有花时间configuration你的邮件设置,这些可能是/var/spool/mail/user