2011-04-24 97 views
9

似乎xargs並沒有一次通過所有的參數,在手冊中說xargs executes the command (default is /bin/echo) one or more times,我聽說這樣做的原因是xargs將傳入的參數切入組中,並將它們傳遞給命令組組。如果這是正確的,任何人都知道這個組的大小是如何確定的?謝謝linux命令xargs:它傳遞的參數的最大大小?

回答

19

使用--show-limits參數。它將列出您系統上的現有限制。

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

組大小取決於傳入的每個參數的長度和上面列出的限制。

xargs手冊頁,以供參考:

POSIX標準允許實現對參數的大小給exec功能的限制。該限制可能低至4096字節,包括環境的大小。要使腳本具有可移植性,他們不能依賴更大的價值。但是,我知道沒有實際的實際限制是很小的。 --show-limits選項可用於發現當前系統上的實際限制。

+0

這太好了,謝謝。 – user685275 2011-04-25 03:02:40

+1

具有諷刺意味的是,'--show-limits'選項[不是'xargs'的POSIX標準的一部分](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/xargs.html),所以你可以不依靠它。 (我認爲這是一個GNU擴展。) – 2017-05-02 23:02:08