Por quanto tempo é sua linha de comando?
Se estiver no intervalo de megabytes, talvez você possa recompilar seu kernel com um ARG_MAX maior no arquivo linux-3.*/include/linux/limits.h . Eu coloquei lá
#define ARG_MAX 2097152 /* # bytes of args + environ for exec() */
(também pode haver uma maneira de definir esse limite dinamicamente, mas esqueci como e posso estar errado)
Eu gosto muito do ARG_MAX limit porque ocasionalmente uso o recurso de expansão global **/*.c de zsh , que é meu shell interativo.
Não coloque um valor enorme em ARG_MAX ; Eu acho que você quer ter menos de 2% da sua memória RAM disponível.
Observe que /proc/*/cmdline contém bytes nulos. Você pode traduzi-los, veja this .
adendos
se, por alguma razão, você não puder pagar por uma linha de comando grande, encontre alguma forma e convenção para evitar ter uma quantidade tão grande de argumentos de programa. Por exemplo, você poderia modificar o programa chamado para ler algumas coisas de um arquivo ou alguma outra fonte (banco de dados?). Por exemplo, alguns programas Unix (por exemplo, GCC) aceitam @ filename para ler opções de algum arquivo chamado nome do arquivo .