*/5 * * * * /usr/share/awstats/wwwroot/cgi-bin/awstats.pl -update -config=$(date '+%Y%m%d') 2>&1>/dev/null
crontab -e 里面就这条命令,在命令行可以执行。但是放在crontab里不执行了。然后有邮件报错。
请问:crontab里可以调用date命令执行的结果吗,如果可以请问语法怎么写?
From root@awstats.localdomain Wed Mar 14 11:00:01 2018
Return-Path: <root@awstats.localdomain>
X-Original-To: root
Delivered-To: root@awstats.localdomain
Received: by awstats.localdomain (Postfix, from userid 0)
id D5F0F409D660; Wed, 14 Mar 2018 11:00:01 +0800 (CST)
From: "(Cron Daemon)" <root@awstats.localdomain>
To: root@awstats.localdomain
Subject: Cron <root@awstats> /usr/share/awstats/wwwroot/cgi-bin/awstats.pl -update -config=$(date '+
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
Precedence: bulk
X-Cron-Env: <XDG_SESSION_ID=589>
X-Cron-Env: <XDG_RUNTIME_DIR=/run/user/0>
X-Cron-Env: <LANG=zh_CN.UTF-8>
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
Message-Id: <20180314030001.D5F0F409D660@awstats.localdomain>
Date: Wed, 14 Mar 2018 11:00:01 +0800 (CST)
/bin/sh: -c:行0: 寻找匹配的 `'' 是遇到了未预期的文件结束符
/bin/sh: -c:行1: 语法错误: 未预期的文件结尾
问题找到了。crontab里面 %有特殊含义,代表换行,$(date '+\%Y\%m\%d') 要用\转义
ok!mark一下,提醒自己。
@Shendu.cc: 哈哈,希望对你有用。
@友谅: 我的$(date '+\%Y\%m\%d')都是放在shell脚本里,没有放在contrab里,这样没有报错,放到contrab里就报错了。
@Shendu.cc: 加上转义也报错了吗? 方便说下报什么错吗?
不是我粘贴错了,我说的是$(date '+%Y%m%d')
那对你有用就好,我早上也是碰倒这个问题。浪费2小时。。。