У меня есть скрипт в sh под 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.Любая подсказка, почему переменная TIME
не отображается правильно при вызове через crontab?