লিনাক্স সন্ধান করুন - অগ্রগতি প্রদর্শন করুন


24

আমি ভাবছিলাম যে লিনাক্সে ফাইলগুলি সন্ধান করার সময় কোনও ধরণের অগ্রগতি তথ্য প্রদর্শন করার কোনও উপায় আছে কিনা find। আমি প্রায়ই নিজেকে একটি বড় ডিস্কের ফাইলের জন্য অনুসন্ধান করা ও অগ্রগতি নির্দেশক কিছু একটি বার মত খুব helpfull হবে, বা অন্তত বর্তমান ডিরেক্টরী অনুসন্ধান "খুঁজুন" খুঁজে। সেখানে আছেন কোনো স্ক্রিপ্ট যে, অথবা নেই findকিছু আঙ্গুলসমূহ সমর্থন ?


উত্তরের জন্য ধন্যবাদ, আমি সমস্ত সমাধান যাচাই করব এবং কোনটি ভাল তা সিদ্ধান্ত নেব। যদি এটি আমার উপর নির্ভর করে তবে আমি সমস্ত উত্তর গ্রহণযোগ্য হিসাবে চিহ্নিত করব।
ভ্লাদ বাল্মোস

আপনি অনুসন্ধানের জন্য যে মানদণ্ডটি ব্যবহার করছেন তা নির্ভর করে সন্ধানের চেয়ে আরও দ্রুত
বি

উত্তর:


28

এই কৌশলটি দিয়ে আপনি বর্তমান ফোল্ডারটি দেখতে পারেন - তবে কোনও অগ্রগতি বার নয় - দুঃখিত sorry

 watch readlink -f /proc/$(pidof find)/cwd

চমৎকার. আপনার লক্ষ করা উচিত যে সিডব্লিউডিতে অ্যাক্সেস করার জন্য আপনাকে অতিরিক্ত ব্যবহারকারীর সুবিধাগুলি প্রয়োজন। ধন্যবাদ!
ভ্লাদ বাল্মোস

পুরোপুরি কাজ করে।
জেসি গ্লিক

8

পিভি (পাইপ ভিউয়ার) নামে একটি সামান্য ইউটিলিটি সহায়তা করতে পারে। পিটারিস ক্রুমিনসের দুর্দান্ত সংক্ষিপ্তসার থেকে :

পাইপ ভিউয়ার একটি পাইপলাইনের মাধ্যমে ডেটার অগ্রগতি পর্যবেক্ষণ করার জন্য একটি টার্মিনাল ভিত্তিক সরঞ্জাম।

আপনি বিভিন্ন উপায়ে পিভি ব্যবহার করতে পারেন। এদিক-ওদিক খেলতে গিয়ে, এটি খুঁজে পাওয়ার সাথে উত্পন্ন আউটপুটটির অগ্রগতি পর্যবেক্ষণ করার জন্য পাইপের সাথে সাথেই রেখেছিলাম (স্টিডিনকে স্টাটআউটে চালিয়ে যাওয়া উচিত)

find / -mtime -1h | pv > /dev/null

যা আউটপুটটি কিছুটা এভাবে দেখায়:

6.42MB 0:01:25 [31.7kB/s] [         <=>      ]

(আমি স্টাডাউটকে / dev / নালটিতে পুনঃনির্দেশিত করেছি যাতে আমি আউটপুটটি উড়াল না করেই অগ্রগতি বারটি দেখতে পেলাম This এটি সম্ভবত আপনার সন্ধানের অভিপ্রায় নয়, সুতরাং সেই অনুসারে দরজী)

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

যে কোনও হারে, চারপাশে খেলুন এবং দেখুন যে এটি আপনার প্রয়োজনের জন্য আদৌ কার্যকর হয় কিনা। চিন্তার জন্য খাদ্য, অন্তত।


সেই অগ্রগতি বার কী দেখায়? না find, বা pvঅনুসন্ধানে কতক্ষণ সময় লাগবে তা জানে না, সুতরাং তারা শতাংশটি গণনা করতে পারে না। আমরা pvআউটপুটে যা দেখতে পাচ্ছি তা হ'ল অনুসন্ধান শুরু হওয়ার পরে।
minaev

এটা সঠিক। আমি ভেবেছিলাম যে কোনও ম্যাজিক চলছে, কোথাও, যা পিভিকে ডিরেক্টরি ট্র্যাভারসাল (যা ভুল) এর অগ্রগতি পরীক্ষা করার অনুমতি দিয়েছে। একটি ধ্রুবক হারে স্ট্যান্ডার্ড ইনপুট দেওয়া হয়, পিভি কেবল একটি ধ্রুবক ফ্রিকোয়েন্সিতে অগ্রগতি বারটি সরায়। yes | pv > /dev/nullপর্যবেক্ষণ করার চেষ্টা করুন
tcdyl

1
একটি দুর্দান্ত ইউটিলিটির জন্য +1
ভ্লাদ বাল্মোস

বিচারের অগ্রগতি তুচ্ছ নয়। এমনকি ওয়েব ব্রাউজারগুলি পৃষ্ঠা লোড করতে সক্ষম হয় না। আমি অনুমান করি ফাইলের সামগ্রীগুলির জন্য আপনি ফাইলের আকার দ্বারা বিভাজন করতে পারেন, তবে ইউনিক্স স্ট্রিমগুলির জন্য আপনি জানেন না যে মোট পরিমাণের ডেটা সাধারণত হয় এবং এই সরঞ্জামটি কেবল ফাইলগুলি নয়, কোনও ধরণের স্ট্রিম ডেটার জন্য নমনীয় to
শ্রীধর সারনোবাত

7

আমি আজ এটি অনুসন্ধান করেছি এবং গুগলের মাধ্যমে এখানে পৌঁছেছি। ওএস এক্সে আমার দীর্ঘকালীন সন্ধান ছিল এবং দৃশ্যত, watchসেখানে নেই। সুতরাং এখানে অন্য একটি সমাধান:

lsof -Fn -a -c find -d cwd +r 10

  • lsof = খোলা ফাইলগুলির তালিকা
  • -Fn= কেবল ফাইল / ডিরেক্টরিটির নাম দেখান ('এন' অক্ষরের সাথে পূর্বনির্ধারিত, আপনি যদি পুরো lsofআউটপুট পছন্দ করেন তবে এড়িয়ে যান
  • -a= সমস্ত মানদণ্ডের সাথে lsofমিল রেখে কেবল লাইন দেখাতে বলুন (ডিফল্টরূপে এটি কোনও মানদণ্ডের সাথে মিলিত লাইনগুলি দেখায় )
  • -c find= নামকরণ প্রক্রিয়া দ্বারা ফাইল / ডিরেক্টরি খোলার দেখান find(আসলে, প্রক্রিয়া যার নাম দিয়ে শুরু হয় findতবে এটি কেস সংবেদনশীল তাই প্রদর্শিত Finderহবে না)
  • -d cwd = এফডি (ফাইলডেস্ক্রিপ্টর) সিডব্লুডির (বর্তমান ওয়ার্কিং ডিরেক্টরি) লাইনগুলি দেখান
  • +r 10 = কোনও খোলা ফাইল না পাওয়া পর্যন্ত প্রতি 10 সেকেন্ডে আউটপুট দেখান (সন্ধান শেষ হয়)

এটি দেখায় যে ডিরেক্টরিটি findপ্রতি 10 সেকেন্ডে প্রক্রিয়াজাত হচ্ছে, সুতরাং যদি findএখনও কাজ করা হয় এবং এটি কতদূর এগিয়ে চলেছে তবে একটি ধারণা দেওয়া উচিত ।


5

সেখানে পাশাপাশি অনুসন্ধানের একটি উদাহরণ findমধ্যে man find। এটি ব্যবহার করে, আপনি প্রতিটি আইটেমের জন্য একাধিক চেক সম্পাদন করতে পারবেন, কোন শর্তটি কাজ করে তার উপর নির্ভর করে একাধিক ক্রিয়া করে। প্রথম চেকটি উদাহরণস্বরূপ, সহজ হতে পারে, -printতাই সমস্ত নাম stdout এ মুদ্রিত হয়। দ্বিতীয় চেক আপনি যা চান তা করবে। কিছুটা এইরকম:

find /work \( -fprint /dev/stderr \) , \( -name 'core' -exec rm {} \; \)

যদি দ্বিতীয় চেকটি ফাইলের নামগুলিও প্রদর্শন করে তবে আপনি সেগুলির মধ্যে একটিকে স্টার্ডার ব্যবহার করে পুনর্নির্দেশ করতে পারেন -fprint /dev/stderr


আমি এটি পরীক্ষা করেছি না তবে আমি মনে করি সঠিক উপায়।
রলফ

2

আফাইক, এটি হয় না এবং এটি বাস্তবায়ন অযৌক্তিক হবে।

... হুঁ। সম্ভবত কোনও স্ক্রিপ্ট find <target dir> -type dপ্রথমে চলছে , তালিকাটি সংরক্ষণ করছে এবং তারপরে find <list item> -maxdepth 1 <rest of find parameters>একটি লুপ চালানোর আগে প্রতিটি দির প্রতিধ্বনিত হবে ।

মনে রাখবেন যে আপনি এটি কী করছে তা অস্পষ্টভাবে দেখতে সক্ষম হবার বিনিময়ে আপনি একটি / উল্লেখযোগ্য / পারফরম্যান্সের ক্ষতি নিয়ে বাণিজ্য করছেন।


1

এই দ্বারা খোলা বর্তমান ফাইল একটি তালিকা রয়েছে খোঁজ , তাই এটি কি একই খুঁজে খুঁজছেন হয় 'এখনই'।

দ্বারা ব্যবহৃত ফাইল descriptos মাত্র ক্যোয়ারী ঠিকানা হিসাবে তার লাইটওয়েট এটি প্রতি সেকেন্ডে এবং interfer মধ্যে না খুঁজে নিজেই। এছাড়াও আপনি এটি আপনার যে কোনও প্রোগ্রামের মাধ্যমে করতে পারেন।

# watch -n 1 'ls -l /proc/$(pidof find)/fd | cut -d ">" -f 2 | grep -v /dev/'

এটি grep -v /dev/হল STDOUT, STDIN এবং STDERR ফাইলগুলি আড়াল করা, এটি আপনার কনসোলের ডেটা গ্রহণ এবং মুদ্রণের জন্য ব্যবহৃত ফাইল।

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