Я предполагаю, что драйвер Sqlite не может правильно заблокировать файл по SMB/CIFS следовательно проблемы.
Точно правильный, хотя это также эпидемии AFP и по-видимому характерно для определенных версий sqlite библиотеки. Adobe является постоянными преступниками когда дело доходит до чего-либо, чтобы сделать с сетевыми домами, и мы обошли это с методом символьной ссылки (обычно определенный предпочтительный каталог, а не отдельные файлы).
Это - довольно грязное решение, как это - только действительно фиксация для отдельных пользователей на отдельных машинах. Мы также стремились бы знать, придумал ли кто-то более изящный подход.
Вы могли перенести сценарий жемчуга с другим простым сценарием удара:
#!/bin/bash
real-command "$@" || exit 0
Это назовет реальную команду, передающую все это параметры, которые Вы передаете этой поддельной команде, и это будет всегда возвращать 0 кодов выхода (который означает, что это всегда успешно), и xargs никогда не будет останавливаться с этим.
Вы могли записать свой xargs вызов для маскирования кодов возврата командных строк. С чем-то как следующее,xargs
никогда не будет видеть возврат кодов выхода somecommand:
xargs sh -c "somecommand || :"
После моих строительных работ:
ls | xargs -I % svn upgrade %
Даже если svn-обновление не удалось на каком-то элементе, процесс продолжался
. Если вы использовали xargs
с find
, используйте вместо него параметр -exec
для find
:
find . -name '*.log' -exec somecommand {} \;
Только что нашел забавный ответ на этот вопрос, хотя его полезность будет зависеть от команды, которую вы пытаетесь запустить.
Если вы используете xargs, чтобы собрать список команд , вы можете добиться такого поведения, указав xargs повторить команду, а затем подключившись к bash.
Например, если вы пытаетесь удалить список вещей, которые могут или не могут существовать:
# presume this will fail in a similar way to your command
cat things_to_delete | xargs -n1 delete_command_that_might_exit
# instead echo the commands and pipe to bash
cat things_to_delete | xargs -n1 echo delete_command_that_might_exit | bash
Это работает, потому что, во-первых, xargs всегда вызывает только echo, поэтому он не видит никаких ошибок. Затем, во-вторых, по умолчанию bash продолжает выполнение после неудачного оператора.
Чтобы быть более конкретным в моем случае, я использовал это для удаления нескольких старых версий приложений из AWS ElasticBeanstalk, например:
aws elasticbeanstalk describe-application-versions --application-name myapp |\
jq -r '.ApplicationVersions | sort_by(.DateCreated) | .[0:-10] | .[].VersionLabel' |\
xargs -n1 \
echo aws elasticbeanstalk delete-application-version \
--delete-source-bundle --application-name myapp --version-label |\
bash