私は削除されたファイルを持っていますが、まだ私のプログラムを開いています。私はlsofを使ってinode番号を見つけました。どのようにしてそのiノードに戻るハードリンクを作成できますか?特定のinodeへのリンク
すべてのコードが役に立ちますが、Perlは便利です。/procのから
私は削除されたファイルを持っていますが、まだ私のプログラムを開いています。私はlsofを使ってinode番号を見つけました。どのようにしてそのiノードに戻るハードリンクを作成できますか?特定のinodeへのリンク
すべてのコードが役に立ちますが、Perlは便利です。/procのから
コピー/ PID/FD/ファイルディスクリプタ
使用lsofのはPIDとファイルディスクリプタを見つけます。
のようにあなたはdebugfsのリンクを再作成するためにコマンドを使用することができますEXTファイルシステム上:私はちょうど私自身の小さなテストを実行しました
myfileという名前の「ファイル」を作成しますdebugfs -w /dev/mapper/vg0-root -R 'link <16> myfile'
と16
これは質問に答えます。ありがとうございました!ただ1つの問題があります。 'link'コマンドはinodeの参照カウントを増加させません。実際には、プログラムがファイル記述子を閉じた直後にファイルが失われる可能性があり、inodeの参照カウントがゼロに減少します。残念ながら、私はinodeの参照カウントを変更する簡単で信頼できる方法を知らない。 ---また、inode番号を取得する方法については、 'stat -L/proc/PID/fd/FILE_DESCRIPTOR'(または' ls -Li')の完全な答えが必要です。 – pabouk
をiノードを指しこれはうまくいきますが、なぜ私は理解できません!それらは実際のファイルへのシンボリックリンクです。シンボリックリンクはそのファイル名でファイルにアクセスしますが、そうではありませんか? – Thomas
ハードリンクは同じファイルシステム上になければならない(つまり、リンクは/ procになければならない)ため、/ procのエントリにハードリンクすることはできません。コピーはうまくいくはずです。 – mark4o
マーク:ありがとう、ありがとう。トーマス:彼らは本当のシンボリックリンクではなく、ただのように見えます。詳細はproc_register_dynamicのGoogleを参照してください。 – moonshadow