Добрый.
Задача : разархивировать архив при его наличии.#!/bin/dash
cd /home/ftpuser/www_base/
if [ -f www_base.zip ]
then
/bin/rm -rf /home/ftpuser/www_base/www_base/
/usr/bin/unzip www_base.zip
/bin/rm www_base.zip
fi
Проблема такая, что запуская руками скрипт, он отрабатывает правильно, а помещая его в cron, разпаковывается лишь часть архива.
В логе ничего странного нет.
Собственно почему через cron разпаковывается лишь часть архива?
>[оверквотинг удален]
>/bin/rm -rf /home/ftpuser/www_base/www_base/
>/usr/bin/unzip www_base.zip
>/bin/rm www_base.zip
>fi
>
>
>Проблема такая, что запуская руками скрипт, он отрабатывает правильно, а помещая его
>в cron, разпаковывается лишь часть архива.
>В логе ничего странного нет.
>Собственно почему через cron разпаковывается лишь часть архива?Честно признаться, у меня нет полной уверенности в том, что я правильно понял причину
ваших бед, но попробуйте изменить скрипт вот так:
#!/bin/dashcd /home/ftpuser/www_base/
if [ -f www_base.zip ]
then
/bin/rm -rf /home/ftpuser/www_base/www_base/
/usr/bin/unzip www_base.zip && /bin/rm www_base.zip
fi
Там так и получается, что команда unzip обрывается раньше чем она заканчивает свою работу.
я пробывал уже вставлять "&&" и sleep между unzip удалением.
Вообще отключал удаление, т.е. после unzip никаких команд больше не было.
Но не отрабатывает корректно, из архива в котором ~10к файликов, разпаковываються лишь пару сотен.
А в ручную запуская, всё отрабатывает как положено.
>Там так и получается, что команда unzip обрывается раньше чем она заканчивает
>свою работу.
>я пробывал уже вставлять "&&" и sleep между unzip удалением.
>Вообще отключал удаление, т.е. после unzip никаких команд больше не было.
>Но не отрабатывает корректно, из архива в котором ~10к файликов, разпаковываються лишь
>пару сотен.
>А в ручную запуская, всё отрабатывает как положено.может unzip xxx.zip &>/dev/null
>может unzip xxx.zip &>/dev/nullИменно.
Или unzip xxx.zip &>/dev/null
или unzip -q xxx.zipcron doesn't like jobs that generate a lot of stdout output, beyond a certain number of bytes and the process terminates. unzip will echo the name of every file it is unzipping to stdout, you can suppress this either by using the -q flag, or else by redirecting the output (to /dev/null for example)