Jaka jest maksymalna długość argumentów wiersza poleceń w gnome-terminal?

Odpowiedzi:

32

xargswie. W moim systemie

$ 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
Chipaca
źródło
5
Aby to rozwinąć, limit nie znajduje się w terminalu, jest w jądrze (i również w powłoce, ale myślę, że domyślny limit powłoki (bash) jest tak wysoki jak limit jądra). Ponadto xargsnie służy tylko do zgłaszania limitu, ale także (przede wszystkim) do obejścia go - zobacz stronę podręcznika lub inną dokumentację.
Gilles „SO- przestań być zły”
1
Podoba mi się ta odpowiedź, szczególnie z powodu wyjścia „mógł faktycznie użyć” ... trochę się z tym pogubiłem i wymyśliłem ten wariant polecenia, aby wyodrębnić wartość „faktycznie”… (może jest prostszy sposób, ale hej, to działa i nadaje się do skryptu:xargs --show-limits --no-run-if-empty < /dev/null 2>&1 |sed -n "/could actually use/s/.*: \\([0-9]\+\\)/\1/p"
Peter.O
O dziwo, xargs zdaje się podwójnie liczyć limit środowiska w limicie POSIX (POSIX limit = ARG_MAX - 2048 (headroom) - envvars).
Tobu,
18

Odpowiedź pochodzi z wartości sysconfARG_MAX . Aby to sprawdzić w systemie:

getconf ARG_MAX

Dla mnie to raporty 2097152. Aby uzyskać więcej informacji, sprawdź stronę:

man sysconf

Aby uzyskać to w programie, na przykład:

#include <unistd.h>
...
printf("%ld\n", sysconf(_SC_ARG_MAX));
Kees Cook
źródło
1
Dzięki KC .. +1; fajny sposób na uzyskanie absolutnego MAX, ale wolałem metodę xargs ze względu na jej „faktycznie dostępny” czynnik ... ponieważ tak naprawdę byłem po wartości czasu wykonywania (ale nie wspomniałem o tym :(
Peter .O
0

Tak naprawdę nie wiem o gnome-terminalu, ale powłoka nie ma „ustalonego” limitu, ale limit stosu.

Istnieje jednak limit twardego kodu na argument, który wynosi 128 KB, co nie powinno stanowić problemu, jeśli nie użyjesz „bardzo, bardzo długich argumentów ...”.

Możesz przeczytać więcej na ten temat tutaj:

http://www.mail-archive.com/[email protected]/msg05522.html

OpenNingia
źródło