削除されたファイルがありますが、プログラムによって開かれたままです。lsofを使用してiノード番号を見つけました。そのiノードに戻るハードリンクを作成するにはどうすればよいですか?
削除されたファイルがありますが、プログラムによって開かれたままです。lsofを使用してiノード番号を見つけました。そのiノードに戻るハードリンクを作成するにはどうすればよいですか?
回答:
リンクを作成することはできませんが、元に戻すことはできます。実験してみましょう:
$ echo blurfl >myfile.txt
$ tail -f myfile.txt &
$ rm myfile.txt
myfile.txtは削除されましたが、iノードはtailコマンドによって保持されます。ファイルを元に戻すには、まずiノードを保持しているプロセスのPIDを見つけます。
$ ps auxw | grep tail
sunny 409 0.0 0.0 8532 824 pts/5 S 18:07 0:00 tail -f myfile.txt
PIDは409です。/dir/proc/409/fd/にchdirし、内容をリストします。
dr-x------ 2 sunny sunny 0 2009-07-24 18:07:18 .
dr-xr-xr-x 7 sunny sunny 0 2009-07-24 18:07:17 ..
lrwx------ 1 sunny sunny 64 2009-07-24 18:07:33 0 -> /dev/pts/5
lrwx------ 1 sunny sunny 64 2009-07-24 18:07:33 1 -> /dev/pts/5
lrwx------ 1 sunny sunny 64 2009-07-24 18:07:18 2 -> /dev/pts/5
lr-x------ 1 sunny sunny 64 2009-07-24 18:07:33 3 -> /home/sunny/tmp/myfile.txt (deleted)
/ proc / [PID] / fd /ディレクトリには、プロセスが使用するすべてのファイルのファイル記述子へのシンボリックリンクが含まれています。この場合、シンボリックリンク「3」は削除されたファイルを指します。そのため、ファイルを復元するには、内容を新しいファイルにコピーします。
$ cat 3 >/home/mydir/saved_file.txt
試行するためにまだ書き込まれている場合、ファイル全体を取得する tail -c +1 -f
from:https : //unix.stackexchange.com/questions/25527/how-to-follow-a-la-tail-fa-binary-file-from-the-beginning
(ところで:/ procのfdからのlnは動作しません、ちょうどそれを試しました)