cron时间戳变量assignement不工作 - Solaris

时间:2016-03-10 17:50:02

标签: bash shell unix cron solaris

关于CRON已经写了几个问题和答案,但我找不到解决这个问题的问题。如果通过命令行调用,下面的示例脚本将成功运行:

LogDir=/usr/local/gtpsft/scripts/tmp
DATE=`date +%Y%m%d`

LogMsg ()
{
   #set -xv
   CODE=$1
   MSG=$2

   echo "$(date +"%H:%M:%S") : ${CODE} : ${MSG}" >> ${LogDir}/${DATE}_XXXX_GCF_Restart.log

}

#fn=TimeTests.sh
current=`perl -le 'print int(time)'`
file_time=$(ls -E TimeTests.sh | awk '{ print $6 " " $7 }'| sed -e 's/-/ /g' -e 's/:/ /g' -e 's/\..*$//')
epoch_file=`gawk -v t="${file_time}" 'BEGIN { print mktime(t)}'`


LogMsg INFO "Current EPOCH time:        ${current}";
LogMsg INFO "File time stamp in FULL:   ${file_time}";
LogMsg INFO "File time stamp in EPOCH:  ${epoch_file}";

但是这句话:

file_time=$(ls -E TimeTests.sh | awk '{ print $6 " " $7 }'| sed -e 's/-/ /g' -e 's/:/ /g' -e 's/\..*$//')

无法执行(没有值存储在变量中)如果从cron运行,我试图将完整的PATH添加到脚本中,甚至在脚本中调用配置文件,即:

LD_LIBRARY_PATH=/usr/local/lib/gcc:/lib:/usr/lib:/usr/local/lib:/usr/perl5/lib:/opt/hpnpl/lib:/usr/share/lib:/usr/local/samba/lib
PATH=/usr:/usr/bin:/sbin:/opt/sfw/bin:/usr/sbin:/etc/perl5/bin:/usr/local/bin:/opt/sfw/cups/bin:/lib:/usr/lib:/usr/share/lib:/usr/ccs/bin:/usr/local/samba/bin:/usr/local/sbin

/bin/bash /etc/profile

但是当从cron运行脚本时结果保持不变,我尝试使用其他命令来获取EPOCH文件时间戳,即:。

stat -c %Y TimeTests.sh

但是当从CRON运行时结果仍然相同......对我所缺少的任何建议都会非常感激。

由于

1 个答案:

答案 0 :(得分:0)

的问题
file_time=$(ls -E TimeTests.sh | awk '{ print $6 " " $7 }'| sed -e 's/-/ /g' -e 's/:/ /g' -e 's/\..*$//')

是没有包含TimeTests.sh的路径,因此当cron TimeTests.sh触发脚本时找不到,这是通过添加完整路径来解决的,即:。

file_time=$(ls -E /usr/local/gtpsft/scripts/tmp/TimeTests.sh | awk '{ print $6 " " $7 }'| sed -e 's/-/ /g' -e 's/:/ /g' -e 's/\..*$//')