コピペコードで快適生活

明日使えるソースを自分のために

プロセスが掴みっぱなしの削除済ファイルを取り出す

ファイルを作成して、lessで掴む

$ echo 'dummy data' > example.txt
$ less example.txt

別ターミナルで、掴んだファイルを消す

$ rm example.txt

削除済のファイルを掴んでいることを確認できる

$ ps a | grep less
23249 pts/14   S+     0:00 less example.txt
23290 pts/15   S+     0:00 grep --color=auto less

$ lsof -p 23249
COMMAND   PID       USER   FD   TYPE DEVICE  SIZE/OFF     NODE NAME
# 略
less    23249 kinosuke01    4r   REG  253,1        11 46213308 /home/kinosuke01/example.txt (deleted)

/proc/${PID}/fd/${FDの数値} 配下に掴んでいるファイルが有ることを確認する

$ ls -la /proc/23249/fd/4
lr-x------ 1 kinosuke01 xxxxx 64  4月 22 17:51 /proc/23249/fd/4 -> /home/kinosuke01/example.txt (deleted)

cpコマンドで救出できる(-aオプションをつけると駄目らしい)

$ cp /proc/23249/fd/4 ~/exmaple.saved.txt
$ cat ~/exmaple.saved.txt
dummy data

参考

https://www.itmedia.co.jp/enterprise/articles/0611/30/news007.html