LINUX.ORG.RU
ФорумAdmin

Argument list too long - workaround?

 , ,


1

1

Здравствуйте. Я опять с не стандартными вопросами, можно?

Что можно сделать, если некоторая программа на питоне (pcs) пытается вызвать другую программу (cibadmin), передав ей в качестве аргумента целый xml-файл (конфигурация кластера pacemaker/corosync), который разросся до 1,5 мегабайт, и вызывает указанную в заголовке ошибку?

Я не знаю, на кой ляд они сделали именно так, тем более, что вызываемая программа вполне может прочитать и файл, но это факт, на обнаружение которого у меня пару дней ушло (разумеется, оно про ошибку «argument list» нигде не пишет в выводе, а пишет какую-то ахинею, плюс на это наложилась другая ошибка там же, которая сбила с толку, но там хоть понятно что делать).

Можно что-нибудь изобразить, чтобы командная строка мегабайт до сорока пролазила? Или это только ядро компилировать? Переписывать pcs желания нет - он большой.

Fedora 19.

PS По интернету искал, но там все отчаянно борятся с удалением, копированием или перемещением большого количества файлов. Видеть уже не могу эти их xargs-ы и прочие find -exec-и.



Последнее исправление: cetjs2 (всего исправлений: 2)

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

Также см.

getconf ARG_MAX

это максимальное число аргументов. Зависит от ulimit -s

router ★★★★★
()

Упакуй, а на стороне питона распаковывай.

Переписывать pcs желания нет - он большой.

Как же он устроен, что из-за источника данных его переписывать надо?

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

Подправить pcs оказалось самым простым решением. Втупую все такие вызовы с XML в аргументе замены на сохранение переменной во временный файл, вызов с указанием XML в файле, и удаление. Заработало. ulimit ничего не дал. Может быть максимальное количество аргументов и возрастает с увеличением размера стека, но размер одного аргумента - нет.

Насчет использовать pipe или что-то запаковывать/распаковывать - мимо кассы. Код-то не мой изначально, куда мне его там запаковывать? Я ничего такого не передаю в аргументах, это оно само.

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