《在Linux執(zhí)行命令報錯”Arg list too long”的原因分析》要點:
本文介紹了在Linux執(zhí)行命令報錯”Arg list too long”的原因分析,希望對您有用。如果有疑問,可以聯系我們。
最近在SUSE LINUX操作系統中遇到個問題:在一個包含上萬個文件的文件夾中執(zhí)行rm *刪除所有文件時報錯“Arg list too long”,最后導致刪除失敗.后來查了下資料,經過分析發(fā)現這里有以下幾個技術點需要注意:
1. 在LINUX操作系統有限制單條命令行的長度是128KB,也就是131072字節(jié),同時rm *這個命令在刪除所有文件時,這個*作為通配符最終會轉換成改文件的全路徑,使得系統底層將rm *轉換成了一個超過128KB大小的命令行,從而命令執(zhí)行失敗;
2. 查詢LINUX操作系統中單條命令行的長度限制:可在LINUX操作系統中執(zhí)行getconf ARG_MAX,回顯信息即為該限制的字節(jié)數;
3. ARG_MAX參數在Solaris中是1048320字節(jié)(1024KB),在LINUX中式131072字節(jié)(128KB);
4. ARG_MAX參數定義是在LINUX/UNIX操作系統的內核中.
最后,對于前面提到的rm *的問題,其實可以通過以下方法解決,采用管道符和xargs的結合,確保每次rm的時候只刪除一個文件,那么就不可能出現單條命令超過128KB字符長度的問題了:
# ls | xargs rm
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/4712.html