2006-10-19

Argument list too long

因為在 Linux Kernel 內對 command-line arguments 限製了記億體的使用,就例如在一個目錄下有很多檔案,如果用 "cp * /home/user/",那便會出現這個問題,以下列出兩個解決辦法:

1. 分開多個指令執行: 可以將檔案分成幾個指令執行,例如:

cp [0-9]* /path/to/
cp [a-l]* /path/to/
cp [m-z]* /path/to/

2. 使用 find 指令: 另一個方法是用 find 指令,可以一句便完成:

find /file_from/* -type f -name ‘*’ -exec cp {} /path/to/. \;

以上指令會將 /file_from/ 目錄下的所有檔案覆製到 /path/to/ 下面。

P.S. 如果想修改 kernel 以解決問題,可以開啟在 kernel source 下面的 include/linux/binfmts.h 檔案,在開頭的位置裡面有一行 "#define MAX_ARG_PAGES 32",將 32 改成更大的數值,例如 64 或 128,然後重新編譯 kernel。

忘記從哪轉貼的了 Q_Q

沒有留言:

張貼留言

深夜驚醒, 不知道是哪一句歌 先穿過夢的縫隙。 紅磨坊仍在唱, 燈火那麼紅, 愛情那麼盛大, 像所有年輕時相信的事—— 只要足夠用力, 就能抵抗離別。 於是我想起高中那年, 和那年同行的女孩並肩坐在黑暗裡, 銀幕亮著, 她的側臉也亮著。 那時候不知道, 有些電影散場以後, 人也會...