LINUX.ORG.RU

скрипт sh не отрабатывает crontab

 


0

1

Прошу помощи, перепробовал уже все танцы и бубны...

Есть вот такой скриптик (синхронизация папок IMAP) :

#!/bin/env bash


echo Looping on account credentials found in file.txt
echo { while IFS=';' read  h1 u1 p1 h2 u2 p2 fake
    do
        { echo "$h1" | egrep "^#" ; } > /dev/null && continue # this skip commented lines in file.txt
        echo "==== Starting imapsync from host1 $h1 user1 $u1 to host2 $h2 user2 $u2 ===="
                /usr/bin/imapsync --host1 "$h1" --user1 "$u1" --password1 "$p1" \
                    --host2 "$h2" --user2 "$u2" --password2 "$p2" \
                    --SSL1 -SSL2 --sslargs1 SSL_verify_mode=0 --sslargs2 SSL_verify_mode=0 \
                    --skipheader "^(?!Message-Id)" --automap \
                    --PORT1 993 --PORT2 993 \
                    --regextrans2 "s/^INBOX\.(.+)/$1/" \
                 "$@"
        echo "==== Ended imapsync from host1 $h1 user1 $u1 to host2 $h2 user2 $u2 ===="
        echo
    done
} < IMAP-USERS.txt

он лежит в /home/admin со всеми нужными разрешениями.

всё это добавлено через crontab -e под su:

*/10 * * * * /home/admin/imapsync.sh >/dev/null 2>&1

скрипт запускается и доходит до первого эха: Looping on account credentials found in file.txt После этого все. Ошибок нигде нет. В журналах всё ок. От руки работает замечательно.

Простенькие задания crontab отрабатывает без замечаний. Что-то не так со скриптом?

Ответ на: комментарий от mky

там же /home/admin но в этот бубен я же стучал...

snip2004
() автор топика

Не находит egrep, возможно. Или read. В общем, или полные пути, или проверь path.

thesis ★★★★★
()
Последнее исправление: thesis (всего исправлений: 1)
Ответ на: комментарий от snip2004

Работа скрипта с запуском по крону отличается двумя основными вещами - путями и буферизацией. Поэтому если полные пути и задание PATH вам ничего не дали - ищите в буферах. Тем более что вы там что-то егрепаете, это главный кандидат на буферные затыки. Как вариант - пользуйте stdbuf.

И вообще, разберите скрипт на дольки, наставьте маяков и ищите где именно стопор.

vaddd ★☆
()
Ответ на: комментарий от vaddd

И вообще, разберите скрипт на дольки, наставьте маяков и ищите где именно стопор.

Вот я так и сделал. Всё заново и по-кусочкам внимательно просматривая логи и отслеживая работу - заработало.

Всем спасибо!

snip2004
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.