無法從垃圾桶中移除的奇怪檔案
版主: ross_tt、bryanchang、digdog、chester
無法從垃圾桶中移除的奇怪檔案
前幾天跑了Disk Warrior,整理出一些不知道何時當機的暫存檔案,
名字長這樣:
3407555169-3896?86631.cache
121?367928-0954?610?6.cache
移到垃圾桶後也無法再移除,甚至用terminal 試過sudo rm 或sudo chmod等等都說Operation not permitted,這是該拿他怎辦好?
名字長這樣:
3407555169-3896?86631.cache
121?367928-0954?610?6.cache
移到垃圾桶後也無法再移除,甚至用terminal 試過sudo rm 或sudo chmod等等都說Operation not permitted,這是該拿他怎辦好?
檔名含有萬用字元的檔案...棘手了。
您先試試看把 Terminal 編碼模式切換成 Unicode,然後用 ls -v 指令找出檔名中包含的 Unicode 字碼,然後 Copy paste 用 rm 指令清除。
如果還是無效,就只好試試看危險動作。
您先試試看把 Terminal 編碼模式切換成 Unicode,然後用 ls -v 指令找出檔名中包含的 Unicode 字碼,然後 Copy paste 用 rm 指令清除。
如果還是無效,就只好試試看危險動作。
- 先用 ls -i 指令找出那個檔案的 inode 編號。假設是 『12345』
- 打開 Disk Utility,選擇檔案所在的硬碟 Get Info,找到硬碟的 "Disk Identifier"。通常是 disk0s# 這樣的格式,假設是 『disk0s5』
- 重開機時按下 command+s 進入,Single User Mode
- /sbin/clri /dev/disk0s5 12345
- /sbin/fcsk -y
- /sbin/mount -wu
- /sbin/SystemStarter
- /sbin/reboot -l
ash nazg durbatuluk, ash nazg gimbatul,
ash nazg thrakatuluk agh burzum-ishi krimpatul.
ash nazg thrakatuluk agh burzum-ishi krimpatul.
rm * 不見得有用。 * 這個萬用字元在 BASH 中實際的作用是『展開』。
例如一個目錄中有 1.txt 2.txt 3.txt 三個檔,在 BASH 中輸入『 rm *』,
BASH 會把他取代成 『rm 1.txt 2.txt 3.txt』。
在 UNIX 系統中發生這種檔名衝突狀況,用檔案的 inode 編號直接處理似乎是唯一可行的方法。Linux 上可以用 fsdb 指令操作比較安全,但是不知為何 fsdb 在 Mac OS X 10.3 中似乎被移除掉了。
例如一個目錄中有 1.txt 2.txt 3.txt 三個檔,在 BASH 中輸入『 rm *』,
BASH 會把他取代成 『rm 1.txt 2.txt 3.txt』。
在 UNIX 系統中發生這種檔名衝突狀況,用檔案的 inode 編號直接處理似乎是唯一可行的方法。Linux 上可以用 fsdb 指令操作比較安全,但是不知為何 fsdb 在 Mac OS X 10.3 中似乎被移除掉了。
ash nazg durbatuluk, ash nazg gimbatul,
ash nazg thrakatuluk agh burzum-ishi krimpatul.
ash nazg thrakatuluk agh burzum-ishi krimpatul.
這裡的順序有沒有問題?我進入single user mode時,它提示說現在硬碟屬於read only狀態,要修改需要執行fcsk 及 mount兩步驟。不過我依照Ulysses大所說的做了。鍵入clri後得到回應是 device busy,之後照作,重開機後檔案仍在。ulysses 寫:
- 先用 ls -i 指令找出那個檔案的 inode 編號。假設是 『12345』
- 打開 Disk Utility,選擇檔案所在的硬碟 Get Info,找到硬碟的 "Disk Identifier"。通常是 disk0s# 這樣的格式,假設是 『disk0s5』
- 重開機時按下 command+s 進入,Single User Mode
- /sbin/clri /dev/disk0s5 12345
- /sbin/fcsk -y
- /sbin/mount -wu
- /sbin/SystemStarter
- /sbin/reboot -l
因為那些指令都不熟悉,是不是該先fcsk,mount,再做clri?
謝謝!
Operation not permitted 和 permission deny 不同,基本上 root 可以不理會 sticky bit 或其他 owner 的限制直接刪除某個檔案。其他會造成 rm 發生 operation not permitter 的原因,只可能是 superuser-immutable 旗標被設定了。fiver 寫:小弟不才
想請問的是
Operation not permitted 與 No such file or directory 兩個message的差異
各位提供的方法似乎是用在 No such file or directory 這種情況
( 因為檔名有特殊字元,不易直接指定檔名,造成系統辨認錯誤 )
在 rm 在未加上 -f 旗標的狀況下,想要移除一個有 schg 或 sunlink 旗標的檔案時會出現『override schg for xxx』這樣的提示訊息,riomusi 列出的狀況卻沒有這個提示訊息,同時在 BASH 中輸入 rm '\344\270\255\346\226\207' 這樣的指令理論上來說也會出現 No such file or directory 而不是 Operation not permitted。所以判斷是不是因為 Unicode 字元的影響而讓 BASH 無法執行那個指令。
不過也不妨試試看:
- 先用 ls -lo 看看那個,注意那個檔案的 User/Group 之後是否有附加屬性文字(沒有的話就是 "-")
- 如果有的話就用 sudo chflags 0 some_file 再用 sudo rm some_file
不好意思,因為在下也沒有直接試過 clri,clri 的 MAN page 又寫得很含糊。riomusi 寫:這裡的順序有沒有問題?我進入single user mode時,它提示說現在硬碟屬於read only狀態,要修改需要執行fcsk 及 mount兩步驟。不過我依照Ulysses大所說的做了。鍵入clri後得到回應是 device busy,之後照作,重開機後檔案仍在。
因為那些指令都不熟悉,是不是該先fcsk,mount,再做clri?
謝謝!
原始的教學來源是:
http://www.nvc.cs.vt.edu/~weiping/unixfaq1.htm
上面講的步驟是
1. 先 umount file system
2. 用 clri 清除檔案
3. 用 fsck 修理
4. 重新 mount file system
所以想說是不是在 Single User Mode 下執行會比較好...
ash nazg durbatuluk, ash nazg gimbatul,
ash nazg thrakatuluk agh burzum-ishi krimpatul.
ash nazg thrakatuluk agh burzum-ishi krimpatul.