無法從垃圾桶中移除的奇怪檔案

本區專門提供 Mac OS X 使用者交換使用心得

版主: ross_ttbryanchangdigdogchester

回覆文章
內容
發表人
riomusi
基本會員
文章: 32
註冊時間: 02/03/2004 10:05 am

無法從垃圾桶中移除的奇怪檔案

#1 文章 riomusi »

前幾天跑了Disk Warrior,整理出一些不知道何時當機的暫存檔案,

名字長這樣:
3407555169-3896?86631.cache
121?367928-0954?610?6.cache

移到垃圾桶後也無法再移除,甚至用terminal 試過sudo rm 或sudo chmod等等都說Operation not permitted,這是該拿他怎辦好?
頭像
ulysses
討論區管理員
文章: 2475
註冊時間: 05/18/2001 1:01 am
來自: Forgotten Realm
聯繫:

#2 文章 ulysses »

在 Terminal 下 sudo rm 指令時,檔名前後加上單引號 ' 試試
ash nazg durbatuluk, ash nazg gimbatul,
ash nazg thrakatuluk agh burzum-ishi krimpatul.
riomusi
基本會員
文章: 32
註冊時間: 02/03/2004 10:05 am

#3 文章 riomusi »

還是不行啊:

sudo rm '121\342\264\263367928-0954\344\264\262610\342\264\2606.cache'

rm:121漺#367928-0954銧#610漺#6.cache: Operation not permitted

嗚。
頭像
ulysses
討論區管理員
文章: 2475
註冊時間: 05/18/2001 1:01 am
來自: Forgotten Realm
聯繫:

#4 文章 ulysses »

檔名含有萬用字元的檔案...棘手了。

您先試試看把 Terminal 編碼模式切換成 Unicode,然後用 ls -v 指令找出檔名中包含的 Unicode 字碼,然後 Copy paste 用 rm 指令清除。

如果還是無效,就只好試試看危險動作。
  1. 先用 ls -i 指令找出那個檔案的 inode 編號。假設是 『12345』
  2. 打開 Disk Utility,選擇檔案所在的硬碟 Get Info,找到硬碟的 "Disk Identifier"。通常是 disk0s# 這樣的格式,假設是 『disk0s5』
  3. 重開機時按下 command+s 進入,Single User Mode
  4. /sbin/clri /dev/disk0s5 12345
  5. /sbin/fcsk -y
  6. /sbin/mount -wu
  7. /sbin/SystemStarter
  8. /sbin/reboot -l
ash nazg durbatuluk, ash nazg gimbatul,
ash nazg thrakatuluk agh burzum-ishi krimpatul.
留言五百如一日
文章: 610
註冊時間: 12/25/2001 1:01 am

#5 文章 »

既是 cache 檔案,或試試這(高危指令,責任自負):


We trust you have received the usual lecture from the local System Administrator. It usually boils down to these two things:

#1) Respect the privacy of others.
#2) Think before you type.

代碼: 選擇全部

$ sudo rm *.cache
markw000
基本會員
文章: 27
註冊時間: 02/25/2005 9:01 am

#6 文章 markw000 »

或許可以試試OnyX中強制清除垃圾桶中垃圾的功能。
頭像
ulysses
討論區管理員
文章: 2475
註冊時間: 05/18/2001 1:01 am
來自: Forgotten Realm
聯繫:

#7 文章 ulysses »

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 中似乎被移除掉了。
ash nazg durbatuluk, ash nazg gimbatul,
ash nazg thrakatuluk agh burzum-ishi krimpatul.
riomusi
基本會員
文章: 32
註冊時間: 02/03/2004 10:05 am

#8 文章 riomusi »

ulysses 寫:
  1. 先用 ls -i 指令找出那個檔案的 inode 編號。假設是 『12345』
  2. 打開 Disk Utility,選擇檔案所在的硬碟 Get Info,找到硬碟的 "Disk Identifier"。通常是 disk0s# 這樣的格式,假設是 『disk0s5』
  3. 重開機時按下 command+s 進入,Single User Mode
  4. /sbin/clri /dev/disk0s5 12345
  5. /sbin/fcsk -y
  6. /sbin/mount -wu
  7. /sbin/SystemStarter
  8. /sbin/reboot -l
這裡的順序有沒有問題?我進入single user mode時,它提示說現在硬碟屬於read only狀態,要修改需要執行fcsk 及 mount兩步驟。不過我依照Ulysses大所說的做了。鍵入clri後得到回應是 device busy,之後照作,重開機後檔案仍在。

因為那些指令都不熟悉,是不是該先fcsk,mount,再做clri?
謝謝!
留言五百如一日
文章: 610
註冊時間: 12/25/2001 1:01 am

#9 文章 »

在 UNIX 系統中發生這種檔名衝突狀況,用檔案的 inode 編號直接處理似乎是唯一可行的方法。
或試試用 ls 找 inode 編號,繼之 find 配 rm:

代碼: 選擇全部

$ ls -i
轉回 372965 國人憂鬱.cache

代碼: 選擇全部

$ find . -inum 372965 -exec rm {} \;
憂鬱已逝 :badgrin:
fiver
基本會員
文章: 24
註冊時間: 03/02/2005 6:13 pm

#10 文章 fiver »

小弟不才
想請問的是
Operation not permitted 與 No such file or directory 兩個message的差異

各位提供的方法似乎是用在 No such file or directory 這種情況
( 因為檔名有特殊字元,不易直接指定檔名,造成系統辨認錯誤 )
頭像
ulysses
討論區管理員
文章: 2475
註冊時間: 05/18/2001 1:01 am
來自: Forgotten Realm
聯繫:

#11 文章 ulysses »

fiver 寫:小弟不才
想請問的是
Operation not permitted 與 No such file or directory 兩個message的差異
各位提供的方法似乎是用在 No such file or directory 這種情況
( 因為檔名有特殊字元,不易直接指定檔名,造成系統辨認錯誤 )
Operation not permitted 和 permission deny 不同,基本上 root 可以不理會 sticky bit 或其他 owner 的限制直接刪除某個檔案。其他會造成 rm 發生 operation not permitter 的原因,只可能是 superuser-immutable 旗標被設定了。

在 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 無法執行那個指令。

不過也不妨試試看:
  1. 先用 ls -lo 看看那個,注意那個檔案的 User/Group 之後是否有附加屬性文字(沒有的話就是 "-")
  2. 如果有的話就用 sudo chflags 0 some_file 再用 sudo rm some_file
riomusi 寫:這裡的順序有沒有問題?我進入single user mode時,它提示說現在硬碟屬於read only狀態,要修改需要執行fcsk 及 mount兩步驟。不過我依照Ulysses大所說的做了。鍵入clri後得到回應是 device busy,之後照作,重開機後檔案仍在。
因為那些指令都不熟悉,是不是該先fcsk,mount,再做clri?
謝謝!
不好意思,因為在下也沒有直接試過 clri,clri 的 MAN page 又寫得很含糊。

原始的教學來源是:
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.
回覆文章