#!/bin/bash
at now +1 minutes -f ./test.sh
logFile="/home/.../testLog.txt"
time1="114000"
time2="153000"
currentTime=`date +"%H%M%S"`
echo "" >> "$logFile"
date >> "$logFile"
echo "$currentTime" >> "$logFile"
echo "" >> "$logFile"
if [[ "$currentTime" < "$time1" || "$currentTime" > "$time2" ]]
then
echo "case1" >> "$logFile"
else
echo "case2" >> "$logFile"
fi
此脚本保存在名为test.sh
的文件中。当我在例如下午5点执行它时,它会将case1
写入我的日志文件中。但是对于每个后续at
调用(每分钟发生一次),脚本会将case2
写入我的日志文件中。你能解释一下原因吗?
答案 0 :(得分:2)
它失败了,因为at
在您的脚本需要sh
的情况下使用bash
运行其作业。
您可以通过查看您当前正在丢弃的错误来确认这一点。您发现if
条件的结果如下:
sh: cannot open 114000: No such file
sh: [[: not found
sh: 111405: not found
由于此失败,只要case2
安排at
而不是直接执行,就会写cron
。
使用循环或class Report < ActiveRecord::Base
has_many :icons, -> { order 'position_id ASC'}
accepts_nested_attributes_for :icons, :reject_if => lambda { |a| a[:icon].blank? }, :allow_destroy => true
end
代替。