Qual é o tamanho máximo dos argumentos da linha de comando no gnome-terminal?


Respostas:


32

xargssabe. No meu sistema,

$ xargs --show-limits
Your environment variables take up 2572 bytes
POSIX upper limit on argument length (this system): 2092532
POSIX smallest allowable upper limit on argument length (all systems): 4096
Maximum length of command we could actually use: 2089960
Size of command buffer we are actually using: 131072

5
Para expandir isso, o limite não está no terminal, está no kernel (e também no shell, mas acho que o limite padrão do shell (bash) é tão alto quanto o limite do kernel). Além disso, xargsnão é apenas para relatar o limite, é também (principalmente) para contorná-lo - consulte a página do manual ou outra documentação.
Gilles 'SO- stop be evil'

1
Eu gosto dessa resposta, principalmente por causa da saída "poderia realmente usar" ... Eu brinquei um pouco com ela e criei essa variante de comando para isolar o valor "realmente" ... (talvez exista uma maneira mais simples, mas ei, ele funciona e é adequado para um script:xargs --show-limits --no-run-if-empty < /dev/null 2>&1 |sed -n "/could actually use/s/.*: \\([0-9]\+\\)/\1/p"
Peter.O

Estranhamente, o xargs parece contar duas vezes o limite do ambiente no limite POSIX (limite POSIX = ARG_MAX - 2048 (headroom) - envvars).
Tobu

18

A resposta vem do valor sysconfARG_MAX . Para examiná-lo em seu sistema:

getconf ARG_MAX

Para mim, isso relata 2097152. Para mais detalhes, consulte a página de manual:

man sysconf

Para colocar isso dentro de um programa, por exemplo:

#include <unistd.h>
...
printf("%ld\n", sysconf(_SC_ARG_MAX));

1
Obrigado KC .. +1; uma maneira elegante de obter o MAX absoluto, mas eu preferi o método xargs por causa do fator "realmente disponível" ... como eu estava realmente atrás de um valor em tempo de execução (mas não mencionei isso :(
Peter .O

0

Eu realmente não sei sobre o gnome-terminal, mas o shell não tem um limite 'fixo', mas o limite da pilha.

No entanto, há um limite de hardcode por argumento de 128 KB, que não deve ser um problema se você não usar 'argumentos muito muito muito longos ....'.

Você pode ler mais sobre isso aqui:

http://www.mail-archive.com/bug-make@gnu.org/msg05522.html

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.