Ls -f এর বিন্দুটি কী (বা, কেন এটি ঝুলছে?)


9

আমি এতে প্রায় 100,000 ফাইল সহ একটি ডিরেক্টরি পেয়েছি। ls -f এক মিনিটেরও বেশি সময় ধরে স্তব্ধ থাকে। আমি স্ট্রেস দৌড়ে গিয়েছিলাম, এবং তত্ক্ষণাত্ নজরদারিগুলি দেখতে শুরু করেছি, সুতরাং এলএস স্পষ্টত ডিরেক্টরিটি পড়ছে। আমি ব্রাঙ্কে প্রচুর কল দেখতে পাচ্ছি, সুতরাং এলএস স্পষ্টভাবে মেমরিতে জিনিসগুলি বাফার করছে। আমি একটি সাধারণ প্রোগ্রাম লিখেছিলাম যা রিডডিরকে কল করে এবং ফাইলের নামগুলি আউটপুট করে, এবং এটি তাত্ক্ষণিক প্রতিক্রিয়া জানায়। তবে ls -f আউটপুট সরবরাহ করে না। কি দেয়? আমি ভেবেছিলাম -f এর পুরো বিন্দুটি হ'ল এটি রিডডিয়ার ছাড়া আর কিছু না করার কারণ ঘটায়। কোনও ডিরেক্টরিতে বিষয়বস্তু তালিকাভুক্ত করার জন্য কি কোনও বহনযোগ্য, নির্ভরযোগ্য উপায় আছে? (দ্রষ্টব্য, এটি লিনাক্সে gnu এর কোর্টিলগুলি থেকে এলএস))

-EDIT-

জায়গাটিতে একটি নাম ছিল, তবে "/ bin / ls -1f> / dev / null" থেকে 8 থেকে 15 সেকেন্ড সময় লাগে, "/ bin / ls -1fx> / dev / null" লাগে 4 থেকে 11 সেকেন্ড, তবে একটি সাধারণ প্রোগ্রাম এটি কেবল রিডডিরের লাগে না .011 সেকেন্ড। Gnu ls চুষতে না পারাতে আমাকে কী করতে হবে?

উত্তর:


7

মূল বিষয় -fহ'ল প্রতিটি ফাইল এন্ট্রি স্থির করার চেষ্টা করা এবং এড়ানো এবং কোনও প্রদর্শিত হওয়ার আগে সেগুলি পড়ার প্রয়োজনীয়তা এড়ানো। এটি একটি "মেটা" বিকল্প যা কেবলমাত্র অন্যান্য বিকল্পকে অক্ষম করে।

সুতরাং, হ্যাঁ, এটি আপনার প্রত্যাশা অনুযায়ী করা উচিত। এটি কেন হয় না আমি তার উত্তর দিতে পারি না তবে আমি অনুমান করব যে আপনার কাছে শেল ওরফে বা অন্য কোনও কিছু থাকতে পারে যা কমান্ডের অতিরিক্ত বিকল্পগুলি সন্নিবেশ করিয়েছে। এটি অক্ষমগুলির চেয়ে কোনও বৈশিষ্ট্য পুনরায় সক্ষম -fকরতে পারে এবং "আরও সুনির্দিষ্ট" বলে বিবেচিত হয়, তাই প্রাধান্য দিন।


2
Argghh। ls () {/ বিন / ls -FB $ @; } বোকা প্রারম্ভিক স্ক্রিপ্ট।
উইলিয়াম পার্সেল

1
হুম। আমি ফাংশনটি আনসেট করেছি এবং আমি এখনও চালা / বিন / এলএস চালানোর পরেও একই আচরণটি দেখতে পাই see
উইলিয়াম পার্সেল

/ বিন / ls -f -1 করুন (এটি বিয়োগ-এক, বিয়োগ-এল নয়)। / বিন / এলএসএইচএইচএল বক্সে আমি কোনও কারণে ফর্ম্যাট ফাইলের নামগুলি কলামগুলিতে ব্যবহার করছি।
ব্রুস এডিগার

0

কোর্টিলস 7.0 এ একটি অপ্টিমাইজেশন যুক্ত করা হয়েছিল (8d974b00fbbc2025de63e1e6d54827648fefa1c4 প্রতিশ্রুতি দিন):

2008-08-01  Kamil Dudka  <kdudka@redhat.com>
    ls -U1 now uses constant memory
    When printing one name per line and not sorting, ls now uses
    constant memory per directory, no matter how many files are in
    the directory.
    * ls.c (print_dir): Print each file name immediately, when possible.
    * NEWS: Mention the improvement.

প্রথম ব্যাখ্যাটি যা মনে আসে তা হ'ল আপনি কোর্টিলের একটি পুরানো সংস্করণ চালাচ্ছেন। আপনাকে আপগ্রেড করতে হবে।

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