我在Solaris 5.8下有一个脚本,它没有按预期工作,并且不知道为什么......
该脚本从文件中读取URL列表,使用curl测试它们并将输出写入日志文件:
#!/bin/sh
# Logs path
LOG_DIR=/somedir/logs
# URLs file path
URL_FILE=/somedir/url
# Actual date
DATE=`date +%Y%m%d%H%M`
# CURL
CURL=/somedir/bin/curl
test_url()
{
cat $URL_FILE | grep -i $1 | while read line
do
NAME=`echo $line | awk '{ print $1 }'`
URL=`echo $line | awk '{ print $2 }'`
TIME=`$CURL -s -o /dev/null -w %{time_total} $URL`
echo "$DATE $TIME" >> $LOG_DIR/${NAME}_${1}.log
done
}
test_url someurl
test_url someotherurl
URL_FILE具有以下布局:
somename1 http://someurl/test
somename2 http://someotherurl/test
脚本从文件加载URL,然后使用curl获取URL加载所需的总时间,然后打印日期和时间(以毫秒为单位)。我发现的问题是变量TIME
在crontab中调用时不起作用,但是当用户自己调用它时它会起作用:
# Output when called with the user ./script.sh
201202201018 0.035
# Output when called from crontab.
201202201019
如果我重定向所有输出* * * * * /path/to/script/script.sh 1&2 > /tmp/output
,则输出文件为空。
此外,我还没有在/ var / log / syslog中看到任何关于它的输出。通过crontab调用TIME
变量未正确显示的任何线索?
答案 0 :(得分:5)
你应该看看的东西:
/path/to/script/script.sh 1&2 > /tmp/output
有效吗?在我的机器上,它将运行带有参数“1”的脚本并尝试找到一个名为“2”的程序来运行它。如果找不到它,它会创建一个空的输出文件。我想你正在寻找像/path/to/script/script.sh >> /tmp/output 2>&1
CURL
设置为卷曲的完整路径? Cron通常没有相同的路径信息。