Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash cron时间戳变量分配不起作用-Solaris_Bash_Shell_Unix_Cron_Solaris - Fatal编程技术网

Bash cron时间戳变量分配不起作用-Solaris

Bash cron时间戳变量分配不起作用-Solaris,bash,shell,unix,cron,solaris,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_

关于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运行的,我已尝试将完整路径添加到脚本,甚至在脚本中调用配置文件,即:

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运行时,结果保持不变。。。对于我所缺少的任何建议,我们将不胜感激

谢谢

关于line的问题

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/\..*$//')

/bin/bash/etc/profile
实际上是禁止的。配置文件脚本中的设置仅对您刚刚运行的
/bin/bash
实例有效,而对运行该命令的脚本无效。你需要
/etc/profile
source/etc/profile
。当cron作业运行时,您认为您在哪个目录下操作?您认为脚本在哪里查找
TimeTests.sh
?使用完整路径应该可以解决这个问题(使用
stat
比使用
set-x
要好得多)。如果您将
set-x
添加到脚本中,您是否看到它运行您期望的命令?感谢您的反馈,我已经尝试过了。但是结果是sameYes,只有在从cron调用时,它才能像预期的那样工作——file_time=$(ls-E TimeTests.sh | awk'{print$6”“$7}'| sed-E's/-//g'-E's/://g'-E's/\..*$//')——似乎没有执行