¿Cuál es la longitud máxima de los argumentos de línea de comando en gnome-terminal?


Respuestas:


32

xargssabe En mi 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

55
Para ampliar esto, el límite no está en la terminal, está en el núcleo (y también en el shell, pero creo que el límite predeterminado del shell (bash) es tan alto como el límite del kernel). Además, xargsno es solo para informar el límite, sino también (principalmente) para solucionarlo; consulte la página de manual u otra documentación.
Gilles 'SO- deja de ser malvado'

1
Me gusta esta respuesta, particularmente debido a la salida "realmente podría usar" ... Lo he retocado un poco y se me ocurrió esta variante de comando para aislar el valor "en realidad" ... (tal vez hay una manera más simple, pero bueno, funciona y es adecuado para un guión:xargs --show-limits --no-run-if-empty < /dev/null 2>&1 |sed -n "/could actually use/s/.*: \\([0-9]\+\\)/\1/p"
Peter.O

Curiosamente, xargs parece contar dos veces el límite del entorno en el límite POSIX (límite POSIX = ARG_MAX - 2048 (espacio libre) - envvars).
Tobu

18

La respuesta viene del sysconf valorARG_MAX . Para examinarlo en su sistema:

getconf ARG_MAX

Para mí, esto informa 2097152 . Para más detalles, consulte la página de manual:

man sysconf

Para obtener esto dentro de un programa, por ejemplo:

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

1
Gracias KC .. +1; una forma ordenada de obtener el MAX absoluto, pero he preferido el método xargs debido a su factor "realmente disponible" ... ya que realmente estaba detrás de un valor de tiempo de ejecución (pero no mencioné eso :(
Peter .O

0

Realmente no sé acerca de gnome-terminal, pero el shell no tiene un límite 'fijo', sino el límite de la pila.

Sin embargo, hay un límite de código duro por argumento que es 128 KB, eso no debería ser un problema si no usa 'argumentos muy, muy, muy largos ...'.

Puedes leer más sobre esto aquí:

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.