কোনও অসম্পূর্ণ ফাইল সরানো হচ্ছে আমি .nfs000000000000b869e300000001 দেখতে পাচ্ছি


15

আমি একটি ফাইল সরিয়েছি এবং এখন আমি দেখতে পাচ্ছি:

$ ls
total 64
-rw-rw-r-- 1 502 17229 Sep 17 16:42 page_object_methods.rb
drwxrwxr-x 7 502   238 Sep 18 18:41 ../
-rw-rw-r-- 1 502 18437 Sep 18 18:41 new_page_object_methods.rb
-rw-r--r-- 1 502 16384 Sep 18 18:42 .nfs0000000000b869e300000001
drwxrwxr-x 5 502   170 Sep 21 13:48 ./
13:48:11 *vagrant* ubuntu-14 selenium_rspec_conversion

এবং যদি আমি এটি সরিয়ে দেওয়ার চেষ্টা করি:

$ rm .nfs0000000000b869e300000001
rm: cannot remove ‘.nfs0000000000b869e300000001’: Device or resource busy

এটি কী নির্দেশ করে? আমার কি করা উচিৎ


এই সমস্যা সঙ্গে মিলিত এই সূচক-শব্দ-সার্ভিস বাগ যেখানে প্রক্রিয়ার 100s ফাইল খোলা রাখুন, isues সঙ্গে মিলিত মত এই যেখানে ~ / .cache / ভুঁইফোড় লগ খুব বড় হত্তয়া এবং তারপর সংকুচিত হয়, এ স্থান অনেক গ্রহণ করা হয়েছে আমার কর্পোরেট এনএফএস ড্রাইভ যা আমার হোম ডিরেক্টরি অন্তর্ভুক্ত করে। যোগ করে এটি প্রায় কাজ ps -Af | grep 'indicator-services-start' | awk '{ print $2 }' | xargs killকরার crontab -e
আন্দ্রেস রিওফ্রিও

উত্তর:


14

কোনও ফাইল প্রক্রিয়া দ্বারা খোলার সময় মুছে ফেলা যায়। যখন এটি ঘটে, ডিরেক্টরি এন্ট্রি মুছে ফেলা হয় তবে ফাইলটি নিজেই (ইনোড এবং সামগ্রী) পিছনে থাকে; ফাইলটি কেবল তখনই মুছে ফেলা হয় যখন এর কোনও লিঙ্ক নেই এবং এটি কোনও প্রক্রিয়া দ্বারা খোলা হয় না।

এনএফএস একটি স্টেটলেস প্রোটোকল: পূর্ববর্তী ক্রিয়াকলাপগুলির চেয়ে অপারেশনগুলি স্বাধীনভাবে সম্পাদন করা যেতে পারে। এমনকি সার্ভারটির পুনরায় বুট করা সম্ভব এবং এটি অনলাইনে ফিরে আসার পরে ক্লায়েন্টরা আগের মতো ফাইলগুলি অ্যাক্সেস করতে থাকবে। এটি কাজ করার জন্য, ফাইলগুলি তাদের নাম দ্বারা মনোনীত করতে হবে, ফাইল খোলার দ্বারা প্রাপ্ত কোনও পরিচালনা দ্বারা নয় (যা পুনরায় বুট করার সময় সার্ভারটি ভুলে যাবে)।

দুটোকে একসাথে রাখুন: ক্লায়েন্ট কর্তৃক কোনও ফাইল খোলার পরে মুছে ফেলা হলে কী হবে? ফাইলটির নাম রাখা দরকার, যাতে খালি যে ক্লায়েন্টটি খোলে তা এখনও এটি অ্যাক্সেস করতে পারে। কিন্তু যখন কোনও ফাইল মোছা হয়, তখন প্রত্যাশা করা হয় যে সেই নামটির পরে আর কোনও ফাইল উপস্থিত থাকবে না। সুতরাং এনএফএস সার্ভারগুলি একটি খোলা ফাইলের মোছার নাম পরিবর্তন করে: ফাইলটি পুনরায় নামকরণ করা হয় .nfs…( .nfsঅক্ষর এবং অঙ্কগুলির একটি স্ট্রিং দ্বারা অনুসরণ করা হয়)।

আপনি এই ফাইলগুলি মুছতে পারবেন না (যদি আপনি চেষ্টা করেন তবে যা ঘটে তা হ'ল কোনও নতুন .nfs…প্রত্যয় সহ নতুন প্রদর্শিত হয়)। যখন ক্লায়েন্টের কাছে ফাইলটি খোলা আছে তখন এটি বন্ধ হয়ে গেলে তারা শেষ পর্যন্ত চলে যাবে। (ক্লায়েন্ট যদি ফাইলটি বন্ধ করার আগে অদৃশ্য হয়ে যায় তবে সার্ভারটি লক্ষ্য না করা পর্যন্ত এটি সময় নিতে পারে))


2

ব্যবহারকারী @ এমটাক আরও একটি প্রশ্নের পরামর্শ দেয়:

You could try runningfuser /path/to/.nfsto check which process is using the .nfs file. – mtak May 2 '14 at 9:13

^^^^^ এটি কার্যকর ^^^^^ এবং আপত্তিজনক প্রক্রিয়াটি ফাইল হ্যান্ডেলটি প্রকাশের কারণ হতে পারে kill

যেমন

$ rm -rf ~/Downloads
rm: cannot remove ‘/nfshome/x/Downloads’: Directory not empty
$ ls -alstr ~/Downloads
total 38864
  972 -rw-r--r--   1 x users   988438 Dec 20  2016 .nfs00000000018d307a00000369
31812 -rw-r--r--   1 x users 32503812 Dec 20  2016 .nfs00000000018d307f0000036b
  636 drwx--x--x 134 x y   647168 Aug 28 10:37 ..
  240 drwxr-xr-x   2 x y   241664 Aug 28 10:43 .
$ rm -rf ~/Downloads
rm: cannot remove ‘/na-homes/x/Downloads/.nfs00000000018d307a00000369’: Device or resource busy
rm: cannot remove ‘/na-homes/x/Downloads/.nfs00000000018d307f0000036b’: Device or resource busy

$ fuser /nfshome/x/Downloads/.nfs00000000018d307400000367
/nfshome/x/Downloads/.nfs00000000018d307400000367:  8231m
$ ps -elf |grep 8231
0 S x     1493 15153  0  80   0 - 28177 pipe_w 10:55 pts/39   00:00:00 grep --color=auto 8231
0 S x     8231  7660  0  99   - - 481464 poll_s Jul19 ?       00:06:01 /usr/libexec/tracker-extract
$ kill 8231
$ kill 8231 # kill twice to check first kill worked, . . 
            # escalate to kill -9 8231 if first kill didn't work, . . 
            # use sudo or root or other user to kill if ownership prevents kill working.
-bash: kill: (8231) - No such process
$ rm -rf ~/Downloads

$ ls -alstr ~/Downloads/
ls: cannot access /nfshome/x/Downloads/: No such file or directory

হ্যাঁ! সাফল্য।

অবশ্যই ওয়াইএমএমভি। ফাইলটি খোলার সাথে বসে এটি আলাদা প্রক্রিয়া হতে পারে।

আমি এটি হত্যা করার পরে ট্র্যাকার-এক্সট্র্যাক্ট প্রক্রিয়াটি স্বয়ংক্রিয়ভাবে পুনরায় শুরু হয়েছিল।

এই ট্র্যাকার-এক্সট্র্যাক্ট জিনিসটি কী? (আমি এটি সেন্টো / রেডহ্যাটে দেখছি)

/programming/26737900/tracker-extract-and-tracker-store-processes-consuming-huge-amount-of-ram

extra/tracker 1.2.3-1 (gnome)
    All-in-one indexer, search tool and metadata database

1
গৃহীত উত্তরের চেয়ে অনেক বেশি সহায়ক, কারণ এটি পরিস্থিতি প্রতিকারের জন্য ব্যবহারকারীকে একটি উপায় সরবরাহ করে।
chb

1

এনএফএস "স্টেটলেস" হওয়ায় একটি ফাইল খোলার ইউএনআইএক্স পদ্ধতি অনুকরণ করার একটি উপায় থাকা দরকার এবং তারপরে একটি উন্মুক্ত ফাইলহ্যান্ডেল রেখে তা সরিয়ে ফেলতে হবে।

যে কোনও এনএফএস ফাইল অপারেশন চেইনের কারণ:

open(); seek-last-off(); doit(); close();

চালানো যেতে পারে এবং এ কারণেই এনএফএস একটি সার্ভার পুনরায় বুট করে বেঁচে থাকে।

পুরানো ফাইল খোলার ক্লায়েন্টের প্রক্রিয়াটি শেষ হয়ে গেলে ফাইলটি অদৃশ্য হয়ে যাবে।

সঠিকভাবে প্রয়োগ করা ফাইলসার্ভরা প্রতি রাতে একটি স্ক্রিপ্ট চালাবে যা এক সপ্তাহের চেয়ে পুরানো এই জাতীয় ফাইলগুলি সরিয়ে দেয়। কারণটি হ'ল ক্লায়েন্ট যদি এই জাতীয় ফাইল ধরে রাখার সময় পুনরায় চালু হয় তবে ফাইলটি চিরতরে থাকবে।


0

কিছু অন্যান্য প্রক্রিয়া সম্ভবত এখনও ফাইলটি ব্যবহার করছে (এটিতে এটির একটি খোলা ফাইলহ্যান্ডল রয়েছে)। হয় ফাইলটিকে উপেক্ষা করুন, বা ব্যবহার করুন lsofবা সেই ফাইলটি কী প্রক্রিয়াটি খোলা আছে তা অনুসন্ধান করার চেষ্টা করুন (বা সবকিছু পুনরায় বুট করুন!)।


0

আমি একই ধরণের পরিস্থিতির মুখোমুখি হয়েছি, তবে আমার ক্ষেত্রে আমি নিজের প্রোগ্রাম দ্বারা তৈরি একটি ফাইল মুছতে সক্ষম হই না। আমি এটি সম্পর্কে নিশ্চিত ছিলাম কারণ এটি আমার প্রোগ্রাম দ্বারা নির্মিত একটি ডিরেক্টরিতে উপস্থিত ছিল। আমি কখন যে প্রোগ্রামটি চালিয়েছিলাম জানি না। সমাধান: আমি কেবলমাত্র আমার সমস্ত টার্মিনাল থেকে বেরিয়ে এসেছি। আমি আবার লগ ইন করেছি এবং কেবল ফাইলটি মুছলাম।

আমার উত্তরটি কেবলমাত্র আমি নির্দিষ্ট করা দৃশ্যের জন্য বৈধ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.