LINUX.ORG.RU
ФорумAdmin

cron параллелит команды скрипта


0

0

Приветствую!

Написал тут небольшой скриптик для резервного копирования шары с виндовой машины, при выполнении "вручную" скрипт отрабатывается верно, но если засунуть его в cron то smbclient не отрабатывает задачу доконца, при этом запускаются команды идущие после... упростил скрипт - то же самое, находил похожие проблемы в инете но решения так и не нашел...

[code] #!/bin/sh bp=/home/dijik/BACKUPS cd $bp/tmp smbclient //192.168.1.2/_SHARE -U dijik%'паролька' -Tc -|gzip > $bp/tmp/`date +%a`.tar.gz mv -f $bp/tmp/`date +%a`.tar.gz /$bp [/code]


Не знаю, что у вас там делает cron, но за скрипт незачёт.

Когда запускает команды из под cron, то там переменная среды PATH обычно содержит меньшее число каталогов, поэтому могут быть найдены не все команды. И либо пишите полные пути (/bin/date), либо устанавливайте в скрипте PATH. Потом неизвестно сколько времени будет выполняться ваш скрипт, и может измениться день недели, то есть gzip пишет в однин файл, а mv будет на другой файл. Сделайте переменую, в ней сформируйте имя файла и используйте её значение для gzip и mv. Не надо дважды вызывать date.

Ну и если вы в начале пишите "cd $bp", то и в конце пишите "$bp", а не "/$bp". И проверяйте результат выполнения команды cd.

mky ★★★★★
()

Внимательно читаем man 5 crontab

The ``sixth'' field (the rest of the line) specifies the command to be run. The entire command portion of the line, up to a newline or % character, will be executed by /bin/sh or by the shell specified in the SHELL variable of the crontab file. Percent-signs (%) in the command, unless escaped with backslash (\), will be changed into newline characters, and all data after the first % will be sent to the command as standard input. There is no way to split a single command line onto multiple lines, like the shell's trailing "\".

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

скрипт был максимально упрощен ввиду поиска граблей, про переменную PACH - не то, в том смысле что скрипт отрабатывается, но не корректно, т.е. начинается процесс вытягивается с самбы метров 50 потом все прекращается, при том что скрипт доходит до конца, при этом все команды норм находит... ЗЫ пробовал подставлять полные пути к командам - результат один

dijik
() автор топика
Ответ на: комментарий от asdfghzxcvbn

да не запихиваю я это туда одной строкой =) просто опубликовал на форуме не верно

dijik
() автор топика
Ответ на: комментарий от dijik

>скрипт был максимально упрощен ввиду поиска граблей

а выполните-ка ещё [serv@serv ~]#echo ./ваш_скрипт.sh - он выведет все действия, прописанные в нём, без их выполнения. Сценарий битвы, так сказать.

sh_Danik
()
Ответ на: комментарий от dijik

cat вообще-то. И с форматировнием 'user line breaks'

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

>возвращает название скрипта)

эммм... знач я криво объяснил )) видимо это справедливо для отдельной команды, а не для скриптов..

sh_Danik
()
Ответ на: комментарий от dijik

>скрипт был максимально упрощен ввиду поиска граблей,

50 метров вытягивает и рвётся максимально упрощённый скрипт? Попробуйте заменить /bin/sh на /bin/bash и после пайпа

smbclient ... |gzip

добавить "echo ${PIPESTATUS[*]} >> /tmp/cron_smbcl.tmp"

чтобы было видно, с каким статусом заверашется smbclient. Заодно будет видно, сколько раз запускается этот скрипт, а то может у вас cron запускает его каждую минуту.

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

>добавить "echo ${PIPESTATUS[*]} >> /tmp/cron_smbcl.tmp

сделал, сейчас времени нет проверить к сожалению в пнд отпишусь как и что... спс за идеи всем!

dijik
() автор топика
Ответ на: комментарий от mky

при постановке задачи в крон ничего полезного не вылезло а вот ручками когда сделал появилась такая строка

./automat/backup_storage: 5: Bad substitution

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