मेरे पास एक फ़ाइल है जिसे हटा दिया गया था, लेकिन अभी भी एक कार्यक्रम द्वारा खुला रखा गया है। मुझे lsof का उपयोग करते हुए इनकोड संख्या मिली। मैं उस इनोड पर वापस कड़ी लिंक कैसे बना सकता हूं?
मेरे पास एक फ़ाइल है जिसे हटा दिया गया था, लेकिन अभी भी एक कार्यक्रम द्वारा खुला रखा गया है। मुझे lsof का उपयोग करते हुए इनकोड संख्या मिली। मैं उस इनोड पर वापस कड़ी लिंक कैसे बना सकता हूं?
जवाबों:
आप इसके लिए लिंक नहीं बना सकते हैं, लेकिन आप इसे वापस ले सकते हैं। चलिए एक प्रयोग करते हैं:
$ echo blurfl >myfile.txt
$ tail -f myfile.txt &
$ rm myfile.txt
myfile.txt अब चला गया है, लेकिन पूंछ आदेश द्वारा इनोड को जीवित रखा गया है। अपनी फ़ाइल वापस पाने के लिए, पहले इनोड को रखते हुए प्रक्रिया की 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 है। chdir to / proc / 409 / fd / और सामग्री को सूचीबद्ध करें:
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
से: /unix/25527/how-to-follow-a-la-tail-fa-binary-file-from-the-beginning
(btw: ld से fd पर / काम नहीं करता है, बस कोशिश की है कि)
लिनक्स के तहत ऐसा करने का कोई पोर्टेबल तरीका नहीं है। सबसे अच्छा तरीका शायद फ़ाइल-सिस्टम पर सभी गतिविधि को रोकना होगा, फ़ाइल को खुले रखने वाले प्रोग्राम को मारना, फ़ाइल सिस्टम को अनमाउंट करना और एक निर्देशिका में फिर से संलग्न करने के लिए फ़ाइल-सिस्टम डीबगर का उपयोग करना। यदि आपके पास NFS के माध्यम से निर्यात की गई फ़ाइल प्रणाली है, तो NFS के कम से कम कुछ संस्करण आपको NFS में फ़ाइल डेटा पढ़ने की अनुमति दे सकते हैं।