ছোট ডিরেক্টরিতে দীর্ঘ সময় নিচ্ছে ls


21

উবুন্টু চালাচ্ছি, আমি একটি টার্মিনাল খুলি এবং করি

sudo bash
cd /
ls | head -n 1000

এবং অনুমানযোগ্যভাবে প্রায় 20 ডিরেক্টরি ফিরে আসে are

যাইহোক, আমি যদি একটি এলএস করি এবং এটি কোনওরকম পাইপ না করি তবে অন্য টার্মিনাল থেকে আমি এটি না মেরে সেগুলি কেবল সেখানে স্তব্ধ থাকে। কি হতে পারে?

সম্পাদনা করুন:

> type ls
ls is aliased to `ls --color=auto`

সম্পাদনা করুন:

> /bin/ls /
<normal response>
> /bin/ls --color=auto
<hangs indefinitely>

কেন ls এর আউটপুট রঙ করা এই আদেশটি স্থগিত করে?


3
চালান type lsকোন সম্ভাব্য alias লেখা ইত্যাদি চেক করতে
jw013

5
দৌড়ানো strace lsসম্ভবত সমস্যাটি সনাক্ত করতে আপনাকে সহায়তা করতে পারে। straceপ্রোগ্রামটির দ্বারা করা সমস্ত সিস্টেম কল প্রদর্শন করে।
গওথাম

2
/bin/ls(বা বরং, command ls) lsঅ্যালাইজড বিকল্পগুলি ছাড়াই চালানোর চেষ্টা করুন, এটি রঙিন বিকল্প যা কোনও পার্থক্য করছে কিনা তা নিশ্চিত করার জন্য। FWIW, lsএর আউটপুটটি পাইপ বা অন্যান্য নন-টার্মিনাল ডিভাইস হলে রঙিন বন্ধ করে।
jw013

3
একটি কমান্ড এটির পরিবর্তে ওরফে পরিবর্তে চালিত হওয়ার আগে একটি ব্যাকস্ল্যাশ। \ls
রব

উত্তর:


28

আপনি যদি সাধারণত ls চালনা করেন তবে এটি কেবল তাদের কোনওটির উপর স্ট্যাট (2) চালানোর প্রয়োজন ছাড়াই ফাইলগুলির তালিকা প্রদর্শন করবে। অন্য কথায়, এটি ফাইলগুলি নিজেরাই অ্যাক্সেস করে না, কেবল কেবল সেই ডিরেক্টরিতে ফাইল রয়েছে।

আপনি যদি --color বিকল্পটি যুক্ত করেন, বা অন্যান্য ls বিকল্পগুলি ব্যবহার করেন যা ফাইলগুলি নিজেরাই পরীক্ষা করতে হয়, তবে ls ফাইলগুলি স্থির করতে হবে (2)।

সম্ভবত আপনার ডিরেক্টরিতে অন্তত একটি ফাইল আসলে রিমোট সিস্টেম থেকে এনএফএস বা অনুরূপ মাধ্যমে মাউন্ট করা হচ্ছে। এবং যে সার্ভারটি আপনি সেই বিভাগটি মাউন্ট করেছেন তা আপ হয় না বা সাড়া দেয় না। সুতরাং, ls যখন সেই ডিরেক্টরি সম্পর্কে তথ্য পাওয়ার চেষ্টা করে এটি সার্ভারের প্রতিক্রিয়া হওয়ার অপেক্ষা করে এটি কার্নেলে ঝুলবে।

অন্যরা যেমন উল্লেখ করেছে, আপনি যদি স্ট্রেস ব্যবহার করেন তবে আপনি খুঁজে পাবেন যে কোনও ডিরেক্টরিটি হ্যাং হওয়ার পরে অ্যাক্সেস করার চেষ্টা করছে l তারপরে আপনি সেই মাউন্ট করা পার্টিশনটি বা যে কোনও কিছু সরিয়ে ফেলতে পারেন।


আরেকটি সম্ভাবনা হ'ল আপনার ডিরেক্টরিতে থাকা ফাইলগুলির মধ্যে একটি হ'ল একটি সিমলিংক যা কিছু পার্টিশন যা দূরবর্তী এবং যা সার্ভার সাড়া দিচ্ছে না ... একই নীতিটি নির্দেশ করে।
ম্যাড সায়েন্টিস্ট

আমি নীচে ছিল এমন একটি সার্ভার থেকে এনএফএস লাগিয়েছি। অদ্ভুত বলে মনে হচ্ছে যে স্ট্যাটটি কেবল নীচে থাকা এনএফএস মাউন্টে ঝুলছে। এটি নিচে ছিল কিনা তা বলা খুব শক্ত হবে না এবং কেবল যে রঙটি ভাঙা সিমলিংকগুলি মুদ্রিত হয়েছে কেবল সেই ডিরেক্টরিতে মুদ্রণ করুন।
স্নিটস

প্রকৃতপক্ষে, এনএফএস সার্ভারটি বন্ধ রয়েছে তা বলা শক্ত (ls এর জন্য) IS এনএফএস হ'ল এক ভিন্ন ধরণের ফাইল সিস্টেম (যেমন এক্স 3, এক্সএফএস, ইত্যাদি) সমস্ত ফাইল সিস্টেমগুলি কার্নেলে প্রয়োগ করা হয়। Ls (1) এর মতো ব্যবহারকারীর প্রোগ্রামটি স্ট্যান্ড (2) এর মতো একটি সিস্টেম কলটি কোনও একটি প্যাথনামে সহজভাবে চালায়; কোন ধরণের ফাইল সিস্টেম ব্যবহার করা হচ্ছে তার কোনও ধারণা নেই। এক্ষেত্রে ফলাফল না পাওয়া পর্যন্ত সিস্টেম কল হ্যাং হয়ে থাকে (সুতরাং ব্যবহারকারীক্ষেত্র অ্যাপ্লিকেশনটি হ্যাং করা হয়)। সুতরাং, ফলাফল না পাওয়া পর্যন্ত কর্নেল দ্বারা ls কে শুতে দেওয়া হয় ... যা কখনই ঘটে না। সুতরাং ls কিছু ভুল বলতে পারে না।
ম্যাড সায়েন্টিস্ট

আমার বলা উচিত আপনি এনএফএসের আচরণ পরিবর্তন করতে পারেন। যদি আপনি একটি "হার্ড মাউন্ট" নির্দিষ্ট করে থাকেন তবে সার্ভারের সময় শেষ হয়ে যাওয়ার পরে কার্নেলটি পুনরায় সংযোগ স্থাপনের চেষ্টা করবে এবং যতক্ষণ না ঘটবে ততক্ষণ সিস্টেম কল থেকে ফিরে আসবে না। বিকল্পভাবে আপনি একটি "নরম মাউন্ট" অনুরোধ করতে পারেন, যেখানে সার্ভারের সময় শেষ হলে অনুরোধে কার্নেল ব্যর্থতার সাথে ফিরে আসে। যাইহোক, অনেকগুলি / বেশিরভাগ প্রোগ্রাম এই ধরণের টাইমআউট ক্রিয়াকলাপগুলি সঠিকভাবে পরিচালনা করার জন্য লিখিত হয় না এবং সুতরাং এনএফএসে নরম মাউন্টগুলি নির্দিষ্ট করা বিপজ্জনক এবং এটি সিস্টেমের অস্থিতিশীলতার কারণ হয়ে দাঁড়ায়। যারা নিয়মিত এনএফএস ব্যবহার করেন তারা কার্যত সর্বদা হার্ড মাউন্টগুলি ব্যবহার এবং সুপারিশ করেন। এনএফএস (5) দেখুন।
ম্যাড সায়েন্টিস্ট

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