Linux FAQ : 刪除各種檔案

 

刪除各種檔案

參考 :

<檔案要清理 第一步先找出檔名>

  • 檔案名稱有空格

範例 : azzi000 648116.tmp

step 1 :

find . -name '* *'

image

step 2 :

find . -name '* *' | awk -F / '{print "\""$2"\""}'

image

step 3 :

find . -name '* *' | awk -F / '{print "\""$2"\""}' | xargs rm -f

<Linux 清理檔案沒釋放空間>

參考 :

可以用 lsof 檢查已清理 程序卻卡住 process

lsof | grep deleted


<刪除檔案介紹>

平時刪除檔案可以用 rm

也可以用到 unlink

Linux 檔案關聯簡介

可如檔案還在被程序使用

delete 後會進入到 背景

查看方式可以用

find /proc/*/fd -ls | grep deleted

  • 查看檔案大小 ( 第 11 個欄位 )

lsof | grep deleted

image

要回收空間 ( 暫時 )

: > /proc/process id/fd/號碼

永久需用到

  1. 執行寫入指令程序 跑 exec

關閉 stderr

exec 2>&-

  1. gdb 或 reredirect

gdb 方式 參考

找到要重新導向 pid

文章介紹 :

假設要重定向 PID 為 14560 的進程的輸出。因此,應該首先將 gdb 附加到該 PID:

gdb -p 14560

一旦我們附加到進程,可以將文件描述符 1 重定向到 /tmp/process_stdout:

(gdb) p dup2(open("/tmp/process_stdout", 1089, 0777), 1)

請注意,使用了數字 1089,因為它代表 O_WRONY | O_CREAT | O_APPEND。

也可以通過使用 2 作為文件描述符以完全相同的方式重定向標準錯誤:

(gdb) p dup2(open("/tmp/process_stderr", 1089, 0777), 2)

此時,輸出已被重定向。但是,該進程已停止並且 gdb 已附加到該進程。

把通道 1 導向 /dev/null

(gdb) p dup2(open("/dev/null"), 1)

退出 gdb

(gdb) q

上述指令撰寫執行檔

p dup2(open("/tmp/process_stdout", 1089, 0777), 1)
p dup2(open("/tmp/process_stderr", 1089, 0777), 2)
q

例如執行檔名為 test

gdb -p process id -x test

gdb 內核出現異常

'open64' has unknown return type; cast the call to its declared return type

參考 :

可改用

(gdb) p (int)dup2((int)open("/tmp/my_stdout", 1089, 0777), 1)

reredirect

安裝

make;make install

用法 : 找出所有撰寫 檔案 pid

把 pid 通道 2 給 /dev/null

reredirect -e /dev/null pid

image

留言

這個網誌中的熱門文章

冒險者 1-4 part 2

部落衝突

Fantech EG1 立體聲入耳式電競耳機 開箱文 2018/07