在Linux執行命令報錯”Arg list too long”的原因分析
最近在SUSE LINUX作業系統中遇到個問題:在一個包含上萬個檔案的資料夾中執行rm *刪除所有檔案時報錯“Arg list too long”,最後導致刪除失敗。後來查了下資料,經過分析發現這裡有以下幾個技術點需要注意:
1. 在LINUX作業系統有限制單條命令列的長度是128KB,也就是131072位元組,同時rm *這個命令在刪除所有檔案時,這個*作為萬用字元最終會轉換成改檔案的全路徑,使得系統底層將rm *轉換成了一個超過128KB大小的命令列,從而命令執行失敗;
2. 查詢LINUX作業系統中單條命令列的長度限制:可在LINUX作業系統中執行getconf ARG_MAX,回顯資訊即為該限制的位元組數;
3. ARG_MAX引數在Solaris中是1048320位元組(1024KB),在LINUX中式131072位元組(128KB);
4. ARG_MAX引數定義是在LINUX/UNIX作業系統的核心中。
最後,對於前面提到的rm *的問題,其實可以通過以下方法解決,採用管道符和xargs的結合,確保每次rm的時候只刪除一個檔案,那麼就不可能出現單條命令超過128KB字元長度的問題了:
# ls | xargs rm
相關推薦
在Linux執行命令報錯”Arg list too long”的原因分析
最近在SUSE LINUX作業系統中遇到個問題:在一個包含上萬個檔案的資料夾中執行rm *刪除所有檔案時報錯“Arg list too long”,最後導致刪除失敗。後來查了下資料,經過分析發現這裡有以下幾個技術點需要注意: 1. 在LINUX作業系統有限制單條命令列的長度是128KB,也就是131
linux執行sh報錯:$’\r’: 未找到命令的解決
在windows 上,使用Pycharm寫xx.sh指令碼後,在Linux bash xx.sh會報$'\r': 未找到命令 原因 是因為命令直接從windows 複製過來導致的 解決 yum install dos2unix dos2unix **.s
docker執行命令報錯:Got permission denied while trying to connect to the Docker daemon socket at unix:///va
環境:ubuntu16.04執行命令:docker run -it centos報錯:Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/do
訊息佇列 mq_queue,報錯: message too long
原因說明: 原因很簡單,要注意看LINUX man手冊,man 3 mq_receive裡明確說了,“The msg_len argument must be greater than or equal to the mq_msgsize attribute
解決jni專案編譯生成so時報錯"argument list too long"
最近接手的一個jni專案是一個原先在iOS平臺上的專案,在mac機器上用eclipse時生成apk非常的順利,到了windows下編譯時卻總是在生成so時出現"argument list too long"的報錯,網上尋求若干資料後終於解決了這個問題,方法很簡單: 在j
安裝atlas後執行hive命令報錯
repeat log color bug mage client img sof atl 在集群中安裝atlas,在安裝atlas的節點上執行hive -e "show databases;" 正常,但是在集群中其他節點上執行hive -e "show database
執行ng build --prod --aot命令報錯
app 解決方法 not found hunk byte main pts vendor initial D:\git\**\src\main\iui>ng build --prod --aotHash: 257ab60feca43633b6f7Time: 25358
MySQL執行外部sql腳本文件命令報錯:unknown command ''
HA 由於 導出 導致 command 但是 包含 出現 char 由於編碼不一致導致的 雖然大部分導出是沒有問題的 但是數據表中存儲包含一些腳本(富文本內容)會出現該問題,強制指定編碼即可解決。 mysql導入時指定編碼: mysql -u root -p --defau
linux核心編譯報錯1- error: expected specifier-qualifier-list before 'u_quad_t'
編譯核心出現 error: expected specifier-qualifier-list before 'u_quad_t' 錯誤。 解決方法: 在核心配置中有如下 File Systems ->  
dotnetcore ef 呼叫多個數據庫時使用者命令執行操作報錯
dotnetcore ef 呼叫多個數據庫時使用者命令執行操作報錯 1、多個DbContext 時報錯: 報錯: More than one DbContext was found. Specify which one to use. Use the '-Context' parameter for
安裝了webpack和webpack-cli,但是執行webpack命令報錯
安裝的webpack版本是4.9.1,webpack-cli版本號是2.1.4。執行webpack命令提示: One CLI for webpack must be installed. These are recommended choices, delivered as separ
Linux 下rm刪除命令提示 /bin/rm: argument list too long的解決辦法
假設我們要刪除資料夾test,test下有很多檔案,如果我們使用rm ./test/* 命令進行刪除,則會出現/bin/rm: argument list too long無法刪除的報錯提示。 報錯提示原因:資料夾下的檔案數目過多,命令列過
測試前奏 之 dos字元頁面執行 monkeyrunner 命令報錯
藉著中午休息的時間,記錄下在使用monkeyruuner命令的時候的出錯問題。 電腦系統 執行視窗 執行命令 win10企業版 管理員身份dos字元視窗 monke
【linux】linux:./configure命令出現報錯;make命令報錯:沒有指明目標
目錄 一、出現報錯 二、解決方法 一、出現報錯 使用./configure和make命令時,出現以下報錯,編譯安裝失敗: 二、解決方法 (1)解決./configure失敗報錯問題方法: 解決方法——安裝 gcc 和 C++編譯器 c
【linux】CentOS 7 使用ifconfig命令報錯:-bash: ifconfig: command not found;ip/ifcongif命令檢視網路資訊的使用
目錄 一、ip命令檢視網路資訊 二、CentOS 7啟用ifconfig命令 三、ifconfig命令檢視網路資訊 一、ip命令檢視網路資訊 (1)輸入命令檢視網絡卡資訊,找到網絡卡名稱,可以看到該網絡卡已經分配到IP地址,輸入命令: ip addr &nbs
執行mysql_secure_installation命令報錯. mysql.cnf. 10513: 只讀檔案系統 、. mysql. cnf. 10513:沒有那個檔案或目錄
# mysql_secure_installation 執行mysql_secure_installation(mysql安全策略設定)報錯 報錯資訊如下: /usr/bin/mysql_ secure_ installation:行203: . mysq
Linux 使用sudo命令報錯xxx(當前登入使用者名稱) is not in the sudoers file
切換到root使用者登入 在/etc目錄下找到sudoers文字檔案; sudoers的許可權預設是r--r-----;因為我們需要修改此檔案;所以cd /etc/然後chmod u+w sudoers修改檔案許可權為rw-r----- 在這個配置檔案中找到root
解決: 執行npm run webpack命令報錯問題
解決: 執行npm run webpack報錯 問題描述: MacBook-Pro:webpack-demo $ npm run-script webpack [email protected] webpack /Users/aaaaa
maven執行install命令報錯
學習他的http://blog.csdn.net/sd4015700/article/details/39992929 如果報這個錯: Failed to execute goal org.apache.maven.plugins:maven-install-plugin
CentOS執行ping命令報錯 name or service not know
在虛擬機器上安裝的CentOS,但是當執行ping命令的時候,提示name or service not known 解決方法如下: 1. 新增DNS伺服器 vi /etc/resolv.conf 在檔案中新增如下兩行(可以自己選擇DNS