Какова максимальная длина аргументов командной строки в gnome-терминале?

lowriter может использоваться как инструмент командной строки (lowriter является частью LibreOffice)

lowriter --convert-to pdf *.doc
convert /home/bodhi/Documents/testdoc2.doc -> /home/bodhi/Documents/testdoc2.pdf using writer_pdf_Export
convert /home/bodhi/Documents/testdoc.doc -> /home/bodhi/Documents/testdoc.pdf using writer_pdf_Export

evince testdoc.pdf

У меня нет окон, поэтому загрузка testdoc здесь

www. mltweb.com/prof/testdoc.doc

35
задан 20 November 2010 в 00:05

30 ответов

xargs знает. В моей системе

$ 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
29
ответ дан 26 May 2018 в 00:20
  • 1
    Чтобы расширить это, предел не находится в терминале, он находится в ядре (и в оболочке, а также, но я думаю, что ограничение по умолчанию для оболочки (bash) достигает предела ядра). Кроме того, xargs предназначен не только для сообщения о лимите, но и для работы над ним (в первую очередь) - см. Справочную страницу или другую документацию. – Gilles 20 November 2010 в 02:57
  • 2
    Мне нравится этот ответ, особенно из-за того, что «действительно может использовать». вывода ... Я немного сместился с ним и придумал этот вариант команды, чтобы изолировать «на самом деле». value ... (может быть, есть более простой способ, но эй, он работает и подходит для скрипта: xargs --show-limits --no-run-if-empty < /dev/null 2>&1 |sed -n "/could actually use/s/.*: \\([0-9]\+\\)/\1/p" – Peter.O 20 November 2010 в 08:57
  • 3
    Как ни странно, xargs, кажется, удваивает счет среды в пределе POSIX (POSIX limit = ARG_MAX - 2048 (запас высоты) - envvars). – Tobu 17 November 2012 в 20:00

xargs знает. В моей системе

$ 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
30
ответ дан 25 July 2018 в 22:51

xargs знает. В моей системе

$ 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
30
ответ дан 27 July 2018 в 00:59

xargs знает. В моей системе

$ 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
30
ответ дан 31 July 2018 в 10:30

xargs знает. В моей системе

$ 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
30
ответ дан 2 August 2018 в 04:15

xargs знает. В моей системе

  $ xargs --show-limits Ваши переменные среды занимают 2572 байта Верхний предел POSIX для длины аргумента (эта система): 2092532 POSIX наименьший допустимый верхний предел длины аргумента (все  систем): 4096 Максимальная длина команды, которую мы могли бы использовать: 2089960 Размер буфера команд, который мы фактически используем: 131072  
30
ответ дан 4 August 2018 в 20:20

xargs знает. В моей системе

  $ xargs --show-limits Ваши переменные среды занимают 2572 байта Верхний предел POSIX для длины аргумента (эта система): 2092532 POSIX наименьший допустимый верхний предел длины аргумента (все  систем): 4096 Максимальная длина команды, которую мы могли бы использовать: 2089960 Размер буфера команд, который мы фактически используем: 131072  
30
ответ дан 6 August 2018 в 04:20

xargs знает. В моей системе

  $ xargs --show-limits Ваши переменные среды занимают 2572 байта Верхний предел POSIX для длины аргумента (эта система): 2092532 POSIX наименьший допустимый верхний предел длины аргумента (все  систем): 4096 Максимальная длина команды, которую мы могли бы использовать: 2089960 Размер буфера команд, который мы фактически используем: 131072  
30
ответ дан 7 August 2018 в 22:26

xargs знает. В моей системе

  $ xargs --show-limits Ваши переменные среды занимают 2572 байта Верхний предел POSIX для длины аргумента (эта система): 2092532 POSIX наименьший допустимый верхний предел длины аргумента (все  систем): 4096 Максимальная длина команды, которую мы могли бы использовать: 2089960 Размер буфера команд, который мы фактически используем: 131072  
30
ответ дан 10 August 2018 в 10:34

xargs знает. В моей системе

  $ xargs --show-limits Ваши переменные среды занимают 2572 байта Верхний предел POSIX для длины аргумента (эта система): 2092532 POSIX наименьший допустимый верхний предел длины аргумента (все  систем): 4096 Максимальная длина команды, которую мы могли бы использовать: 2089960 Размер буфера команд, который мы фактически используем: 131072  
30
ответ дан 13 August 2018 в 17:04
  • 1
    Чтобы расширить это, предел не находится в терминале, он находится в ядре (и в оболочке, а также, но я думаю, что ограничение по умолчанию для оболочки (bash) достигает предела ядра). Кроме того, xargs предназначен не только для сообщения о пределе, но также (в первую очередь) для его работы - см. Справочную страницу или другую документацию. – Gilles 20 November 2010 в 02:57
  • 2
    Мне нравится этот ответ, особенно из-за того, что «действительно может использовать». вывода ... Я немного сместился с ним и придумал этот вариант команды, чтобы изолировать «на самом деле». value ... (может быть, есть более простой способ, но эй, он работает и подходит для скрипта: xargs --show-limits --no-run-if-empty & lt; / dev / null 2 ​​& amp; & amp; ; 1 | sed -n "/ может фактически использовать / s /.*: \\ ([0-9] \ + \\) / \ 1 / p" – Peter.O 20 November 2010 в 08:57
  • 3
    Как ни странно, xargs, кажется, удваивает счет среды в пределе POSIX (POSIX limit = ARG_MAX - 2048 (запас высоты) - envvars). – Tobu 17 November 2012 в 20:00

Ответ исходит из значения sysconf ARG_MAX. Чтобы проверить это на вашей системе:

getconf ARG_MAX

Для меня это сообщает 2097152. Для получения дополнительной информации проверьте manpage:

man sysconf

Чтобы получить это внутри программы, например:

#include <unistd.h>
...
printf("%ld\n", sysconf(_SC_ARG_MAX));
18
ответ дан 26 May 2018 в 00:20
  • 1
    Спасибо KC .. +1; аккуратный способ получить абсолютный MAX, но я предпочел метод xargs из-за его «фактически доступного», фактор ... поскольку я был фактически после времени выполнения (но я не упоминал об этом :( – Peter.O 20 November 2010 в 09:09

Я действительно не знаю о gnome-терминале, но оболочка не имеет «фиксированного» предела, но предел стека.

Однако существует ограничение жесткого кода для каждого аргумента, 128KB, это не должно быть проблемой, если вы не используете «очень очень длинные аргументы ...».

Вы можете прочитать об этом здесь:

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

0
ответ дан 26 May 2018 в 00:20

Ответ исходит из значения sysconf ARG_MAX. Чтобы проверить это на вашей системе:

getconf ARG_MAX

Для меня это сообщает 2097152. Для получения дополнительной информации проверьте manpage:

man sysconf

Чтобы получить это внутри программы, например:

#include <unistd.h> ... printf("%ld\n", sysconf(_SC_ARG_MAX));
18
ответ дан 25 July 2018 в 22:51
  • 1
    Спасибо KC .. +1; аккуратный способ получить абсолютный MAX, но я предпочел метод xargs из-за его «фактически доступного», фактор ... поскольку я был фактически после времени выполнения (но я не упоминал об этом :( – Peter.O 20 November 2010 в 09:09

Я действительно не знаю о gnome-терминале, но оболочка не имеет «фиксированного» предела, но предел стека.

Однако существует ограничение жесткого кода для каждого аргумента, 128KB, это не должно быть проблемой, если вы не используете «очень очень длинные аргументы ...».

Вы можете прочитать об этом здесь:

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

0
ответ дан 25 July 2018 в 22:51

Ответ исходит из значения sysconf ARG_MAX. Чтобы проверить это на вашей системе:

getconf ARG_MAX

Для меня это сообщает 2097152. Для получения дополнительной информации проверьте manpage:

man sysconf

Чтобы получить это внутри программы, например:

#include <unistd.h> ... printf("%ld\n", sysconf(_SC_ARG_MAX));
18
ответ дан 27 July 2018 в 00:59
  • 1
    Спасибо KC .. +1; аккуратный способ получить абсолютный MAX, но я предпочел метод xargs из-за его «фактически доступного», фактор ... поскольку я был фактически после времени выполнения (но я не упоминал об этом :( – Peter.O 20 November 2010 в 09:09

Я действительно не знаю о gnome-терминале, но оболочка не имеет «фиксированного» предела, но предел стека.

Однако существует ограничение жесткого кода для каждого аргумента, 128KB, это не должно быть проблемой, если вы не используете «очень очень длинные аргументы ...».

Вы можете прочитать об этом здесь:

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

0
ответ дан 27 July 2018 в 00:59

Ответ исходит из значения sysconf ARG_MAX. Чтобы проверить это на вашей системе:

getconf ARG_MAX

Для меня это сообщает 2097152. Для получения дополнительной информации проверьте manpage:

man sysconf

Чтобы получить это внутри программы, например:

#include <unistd.h> ... printf("%ld\n", sysconf(_SC_ARG_MAX));
18
ответ дан 31 July 2018 в 10:30
  • 1
    Спасибо KC .. +1; аккуратный способ получить абсолютный MAX, но я предпочел метод xargs из-за его «фактически доступного», фактор ... поскольку я был фактически после времени выполнения (но я не упоминал об этом :( – Peter.O 20 November 2010 в 09:09

Я действительно не знаю о gnome-терминале, но оболочка не имеет «фиксированного» предела, но предел стека.

Однако существует ограничение жесткого кода для каждого аргумента, 128KB, это не должно быть проблемой, если вы не используете «очень очень длинные аргументы ...».

Вы можете прочитать об этом здесь:

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

0
ответ дан 31 July 2018 в 10:30

Ответ исходит из значения sysconf ARG_MAX. Чтобы проверить это на вашей системе:

getconf ARG_MAX

Для меня это сообщает 2097152. Для получения дополнительной информации проверьте manpage:

man sysconf

Чтобы получить это внутри программы, например:

#include <unistd.h> ... printf("%ld\n", sysconf(_SC_ARG_MAX));
18
ответ дан 2 August 2018 в 04:15
  • 1
    Спасибо KC .. +1; аккуратный способ получить абсолютный MAX, но я предпочел метод xargs из-за его «фактически доступного», фактор ... поскольку я был фактически после времени выполнения (но я не упоминал об этом :( – Peter.O 20 November 2010 в 09:09

Я действительно не знаю о gnome-терминале, но оболочка не имеет «фиксированного» предела, но предел стека.

Однако существует ограничение жесткого кода для каждого аргумента, 128KB, это не должно быть проблемой, если вы не используете «очень очень длинные аргументы ...».

Вы можете прочитать об этом здесь:

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

0
ответ дан 2 August 2018 в 04:15

Ответ получен из значения sysconf ARG_MAX . Чтобы проверить это на вашей системе:

  getconf ARG_MAX  

Для меня это сообщает 2097152 . Для получения дополнительной информации проверьте manpage:

  man sysconf  

Чтобы получить это внутри программы, например:

   #include & lt; unistd.h & gt;  ... printf ("% ld \n", sysconf (_SC_ARG_MAX));   
18
ответ дан 4 August 2018 в 20:20

Я действительно не знаю о gnome-terminal, но оболочка не имеет «фиксированного» предела, а предел стека.

Однако существует ограничение жесткого кода для каждого аргумента, 128 КБ, это не должно быть проблемой, если вы не используете «очень очень длинные аргументы ...».

Вы можете прочитать об этом здесь:

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

0
ответ дан 4 August 2018 в 20:20

Ответ получен из значения sysconf ARG_MAX . Чтобы проверить это на вашей системе:

  getconf ARG_MAX  

Для меня это сообщает 2097152 . Для получения дополнительной информации проверьте manpage:

  man sysconf  

Чтобы получить это внутри программы, например:

   #include & lt; unistd.h & gt;  ... printf ("% ld \n", sysconf (_SC_ARG_MAX));   
18
ответ дан 6 August 2018 в 04:20

Я действительно не знаю о gnome-terminal, но оболочка не имеет «фиксированного» предела, а предел стека.

Однако существует ограничение жесткого кода для каждого аргумента, 128 КБ, это не должно быть проблемой, если вы не используете «очень очень длинные аргументы ...».

Вы можете прочитать об этом здесь:

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

0
ответ дан 6 August 2018 в 04:20

Я действительно не знаю о gnome-terminal, но оболочка не имеет «фиксированного» предела, а предел стека.

Однако существует ограничение жесткого кода для каждого аргумента, 128 КБ, это не должно быть проблемой, если вы не используете «очень очень длинные аргументы ...».

Вы можете прочитать об этом здесь:

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

0
ответ дан 7 August 2018 в 22:26

Ответ получен из значения sysconf ARG_MAX . Чтобы проверить это на вашей системе:

  getconf ARG_MAX  

Для меня это сообщает 2097152 . Для получения дополнительной информации проверьте manpage:

  man sysconf  

Чтобы получить это внутри программы, например:

   #include & lt; unistd.h & gt;  ... printf ("% ld \n", sysconf (_SC_ARG_MAX));   
18
ответ дан 7 August 2018 в 22:26

Ответ получен из значения sysconf ARG_MAX . Чтобы проверить это на вашей системе:

  getconf ARG_MAX  

Для меня это сообщает 2097152 . Для получения дополнительной информации проверьте manpage:

  man sysconf  

Чтобы получить это внутри программы, например:

   #include & lt; unistd.h & gt;  ... printf ("% ld \n", sysconf (_SC_ARG_MAX));   
18
ответ дан 10 August 2018 в 10:34

Я действительно не знаю о gnome-terminal, но оболочка не имеет «фиксированного» предела, а предел стека.

Однако существует ограничение жесткого кода для каждого аргумента, 128 КБ, это не должно быть проблемой, если вы не используете «очень очень длинные аргументы ...».

Вы можете прочитать об этом здесь:

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

0
ответ дан 10 August 2018 в 10:34

Я действительно не знаю о gnome-terminal, но оболочка не имеет «фиксированного» предела, а предел стека.

Однако существует ограничение жесткого кода для каждого аргумента, 128 КБ, это не должно быть проблемой, если вы не используете «очень очень длинные аргументы ...».

Вы можете прочитать об этом здесь:

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

0
ответ дан 13 August 2018 в 17:04

Ответ получен из значения sysconf ARG_MAX . Чтобы проверить это на вашей системе:

  getconf ARG_MAX  

Для меня это сообщает 2097152 . Для получения дополнительной информации проверьте manpage:

  man sysconf  

Чтобы получить это внутри программы, например:

   #include & lt; unistd.h & gt;  ... printf ("% ld \n", sysconf (_SC_ARG_MAX));   
18
ответ дан 13 August 2018 в 17:04
  • 1
    Спасибо KC .. +1; аккуратный способ получить абсолютный MAX, но я предпочел метод xargs из-за его «фактически доступного», фактор ... поскольку я был фактически после времени выполнения (но я не упоминал об этом :( – Peter.O 20 November 2010 в 09:09

Другие вопросы по тегам:

Похожие вопросы: