Есть сервак под 2003 виндой, на нём установлен cygwin.
На cygwin'не запускается следующий скрипт:
mkdir /tmp/noerror
err=/tmp/noerror/SX_errors_`date "+%m%d%H%M"`\.txt
for arg in `ls`
do
grep -v error\#: $arg | grep -v 'Error <' > /tmp/noerror/$arg
echo $arg >> $err
awk '{
i = index($0, "error#:");
a = index($0, "Error <");
if (a) {
print substr($0,index($0,":")+1,19) "| " substr($0,index($0,"Error <")+7)
}
if (i) {
var = substr($0,index($0,":")+1);
if (match(var, 123)) {
tim = strftime("%Y.%m.%d_%H:%M:%S| ", substr(var, 0, 10));
print tim substr($0,i+7)
}
else {
tmp = substr(var, 0, 19);
if (match(tmp, 200)) {
print tmp "| " substr($0,i+7)
}
else {
tmp=" . . _ . . | ";
print tmp substr($0,i+7)
}
}
}
}' $arg | sort -t\| +1 >> $errПроблема в том что когда я в ручную запускаю скрипт он всё правильно отрабатывает.
Но когда он запускается через crontab, то awk не отрабатывает! в логах crontab пишет:
Input file specified two times.
Не пойму из за чего awk не работает из под crontab'a? Или проблема в том что файлы передаются awk через цыкл?
>Проблема в том что когда я в ручную запускаю скрипт он всё
>правильно отрабатывает.
>Но когда он запускается через crontab, то awk не отрабатывает!А шел одинаковый? А PATH у кронтаба и юзера?
Цикл for не закрыт done.
>А шел одинаковый? А PATH у кронтаба и юзера?У юзера и в скрипте указаны одинаковые шеллы.
Какой shell использует crontab в cygwin'е я не пойму..:(
но по моему если в начале скрипта указано на каком шелле он должен выполняться, то какой шелл использует кронтаб не принципиально, или я ошибаюсь?>Цикл for не закрыт done.
в скрипте он закрыт, просто я дал не полный листинг скрипта, к тому же если бы цыкл был не закрыт, то скрипт и вовсе не выполнялся..;)