Argument list too long" 問題

本文介绍了在Linux系统中遇到Argument list too long错误的原因及两种解决方案:通过分批执行命令或使用find命令配合执行。同时,提供了修改内核参数以永久解决问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


昨 天升級 Email Server 的 SquirrelMail,當我將舊版本 SquirrelMail 下面的 data 目錄資料複製到新版本時,出現了 "Argument list too long",然後找了找,發現原來在 Linux 下用 cp, mv, rm 這些指令時,如果輸入的檔案數目太多會出現 "Argument list too long" 錯誤。 H')?qaoE  
'6�~HE9  
因為在 Linux Kernel 內對 command-line arguments 限製了記億體的使用,就例如在一個目錄下有很多檔案,如果用 "cp * /home/user/",那便會出現這個問題,以下列出兩個解決辦法:
E!o3@vf  
uN{8z;h  
1. 分開多個指令執行: 可以將檔案分成幾個指令執行,例如:
6GaJ[S  
+m^fDoze  
cp [0-9]* /path/to/
$<c+.|P5e  
cp [a-l]* /path/to/
tL6ht  
cp [m-z]* /path/to/
&8cWXB5 !.  
]esuxPSWO  
2. 使用 find 指令: 另一個方法是用 find 指令,可以一句便完成:
R$UT8`J+  
MW_tPg T  
find /file_from/* -type f -name ‘*’ -exec cp {} /path/to/. /;
]:^E$:x  
iy,va a3W:  
以上指令會將 /file_from/ 目錄下的所有檔案覆製到 /path/to/ 下面。
&$ZW?_  
eNA2"`,  
P.S. 如果想修改 kernel 以解決問題,可以開啟在 kernel source 下面的 include/linux/binfmts.h 檔案,在開頭的位置裡面有一行 "#define MAX_ARG_PAGES 32",將 32 改成更大的數值,例如 64 或 128,然後重新編譯 kernel
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值