সিস্টেম খুঁজে লক কমান্ড খুঁজে


3

আমার একটি ফোল্ডার ছিল, এতে 4+ মিলিয়ন ফাইল ছিল। আমি অন্য কোনও ফাইলটি মুছে ফেলতে পেরেছি, এক সপ্তাহের মধ্যে, "খুঁজে বের করুন।" মুছে ফেলুন এবং "kill -9" ব্যবহার করে এক মিনিটের পর এটি অন্যথায় সিস্টেমটি লক করে।

এখন ফোল্ডার খালি। যখন আমি সেই ফোল্ডারে যাই এবং "ls" করি, সব ঠিক আছে। আমি শুধু ফোল্ডার খালি দেখতে।

কিন্তু যখন আমি "foo / find" করি, এটি আবার সেই সিস্টেমটিকে লক করে, ঠিক সেই সময়ের মতো যখন আমি সেই লক্ষ লক্ষ ফাইল মুছে ফেলতাম।

কারণ কি হতে পারে?


3
ডিরেক্টরিটি সম্ভবত বিশাল, যদিও এতে কোনও এন্ট্রি নেই। কেন ls দ্রুত এবং find তবে, আমার কাছে একটি রহস্য নয়। যাইহোক এটি মুছে ফেলা এবং ডিরেক্টরি পুনরায় recreate হতে পারে যাতে এটি আবার ছোট।
wurtel

কোন ডট ফাইল বা dirs আছে? ls -a foo
Cyrus

@ সাইরাস ন। শুধুমাত্র আছে . এবং, প্রত্যাশিত হিসাবে ,.
kommradHomer

আমি dmesg এ নজর দেব, কারণ দীর্ঘ লম্বা ডিস্ক অপারেশন সাধারণত ত্রুটিযুক্ত ডিস্কগুলির কারণে ঘটে।
Raúl Salinas-Monteagudo

@wurtel ডিরেক্টরিটি হাহাকার ছিল, এটি মুছে ফেলার পর 1-2 সপ্তাহের মেটাডাটা 8২ এমবি। আমি তৈরি এবং প্রায় 30.000 ফাইল প্রতিদিন মুছে ফেলার যে anotehr ফাইল আছে, এবং এটি 2.9 এমবি একটি মেটা তথ্য আছে
kommradHomer

উত্তর:


2

আপনার ফাইল সিস্টেমের উপর কিছু দুর্নীতি থাকতে পারে। চলমান চেষ্টা করুন fsck -f এটির উপর (যখন এটি আনমাউন্ট করা হয়), এটি কোন সমস্যা খুঁজে পায় কিনা তা দেখুন।


মনে হচ্ছে ফোল্ডারটির বিশাল পরিমাণ মেটাডাটা দেখে মনে হচ্ছে
kommradHomer

1

অদ্ভুত কেন আপনি পুরো ডিরেক্টরিটি মুছে ফেলেননি এবং তারপরে এটি পুনরায় তৈরি করবেন:

rm -rf foo_dir
mkdir foo_dir

অথবা অনুসন্ধান ব্যবহার না করে ফাইল মুছে দিন:

cd [path]/foo_dir
rm -rf *

সম্ভবত মুছে ফেলা এবং ডিরেক্টরি পুনরূদ্ধার এখনও আপনাকে সাহায্য করবে।


1
* সম্প্রসারণ, এইভাবে "rm -rf *" বা "rm -rf foo /" কোনও ফোল্ডারে 4 মিলিয়ন ফাইল থাকা অবস্থায় কাজ করে না
kommradHomer

কিছু আরো বিস্তারিত তথ্য: যখন আপনি একটি rm -rf * শেল গ্রহাণু দেখতে হবে ( * ) এবং এটি আরএম ফিড। ফলস্বরূপ আপনি একটি শুরু করবেন না rm -rf * কিন্তু rm -rf file1 file2 file3 file4 ...। এই সমস্ত প্রসারিত ফাইল নাম তালিকা বাফার পর্যাপ্ত স্থান নেই যখন এটি সমস্যার মধ্যে সঞ্চালিত হয়। অতএব -delete সঙ্গে অনুসন্ধান করুন অথবা খুঁজে বের করুন {} +
Hennes

1

আমি গুগল প্লাসে এই প্রশ্নটি শেয়ার করে উত্তরটি পেয়েছি। উত্তর দ্বারা এক্সেল Engeland :

যে সত্যিই ব্যবহৃত ফাইল সিস্টেম উপর নির্ভর করে। ডিরেক্টরি অনুমিত হয়   inode টেবিল সংরক্ষণ করুন। যদি inode টেবিল খুব বড় হয়ে যায়, অন্য এক   তৈরি এবং টেবিল সংযুক্ত করা হয়। তাই আপনি যদি সব মুছে ফেলা হয়   ফাইলগুলি, এখনও সংযুক্ত লিঙ্কযুক্ত ইনডোড টেবিলগুলির একটি বড় বিরাম হতে পারে। যদি   আপনি rmdir এবং ডিরেক্টরি আবার mkdir, কর্মক্ষমতা ভাল হতে হবে।

আপনি সব ফাইল মুছে ফেলা হতে পারে কিন্তু শেষ, inode টেবিল হয়   এখনও জায়গায়। ls -ld foo আপনাকে ডিরেক্টরি মেটা আকার প্রদর্শন করা উচিত   তথ্য। বিবেচনা:

# mkdir some_dir
# ls -ld some_dir
drwxr-xr-x 2 root root 4096 Oct 14 21:16 some_dir

সুতরাং, ডিরেক্টরির মেটা তথ্যের জন্য 4096 বাইট আছে। ঠিক আছে. আসুন কিছু করা যাক   নথি পত্র.

# pushd some_dir ; for i in {1..1000} ; do mktemp test.XXXXXXXXXXXXXX ; done ; popd

আমরা কিছু_ডির মধ্যে মাত্র 1000 টি ফাইল তৈরি করেছি।

# ls -ld some_dir
drwxr-xr-x 2 root root 49152 Oct 14 21:16 some_dir

ওহ বাহ, ডিরেক্টরি এখন 49k für মেটা তথ্য প্রয়োজন। এর অপসারণ করা যাক   নথি পত্র.

# find some_dir/ -type f -delete
# ls -ld some_dir
drwxr-xr-x 2 root root 49152 Oct 14 21:19 some_dir

ফাইল চলে গেছে। কিন্তু এখনও 48k মেটা তথ্য। একটি অনুসন্ধান এখনও আছে   ডিরেক্টরির মধ্যে সব মেটা তথ্য মাধ্যমে যান ... ভাল ... খুঁজে   কিছু।


এই এখনও ls তুলনায় ধীর কেন ব্যাখ্যা করে না
artistoex

@artistoex কিভাবে আসে? ফোল্ডার ধীরগতির কারণ এটি ফোল্ডারের অিনোড মেটাডেটা দিয়ে যাচ্ছে যা বিশাল, এমনকি ফোল্ডারটি খালি থাকলেও
kommradHomer

1
আমি তাই মনে করি না. আমি শুধু gnu find এবং ls উত্সগুলির উপর স্কিম করেছি, এবং এটি মূলতঃ ls এর মতো একই কাজ করে: opendir() অনুসরণ করে readdir() (saveirinfo.c ফাংশন xsavedir () দেখুন)
artistoex

এছাড়া, এমনকি কয়েক মিলিয়ন বাইট ইনওড প্রক্রিয়াকরণেও এক সপ্তাহের তুলনামূলকভাবে ব্যাখ্যা করা হয়।
artistoex

নেই "গণনা একটি সপ্তাহ মূল্য" নেই। আমাকে এক মিনিটের মধ্যে 50k ফাইলের মত "find.delete" খুঁজে বের করা এবং প্রক্রিয়াটি হত্যা করা, যখনই সার্ভারটি যথেষ্ট কম লোড করে, সপ্তাহের মধ্যে।
kommradHomer
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.