লিনাক্সে, আমি কীভাবে দেখতে পারি যে কোনও ফাইলের মাধ্যমে একটি প্রক্রিয়া কতটা দূরে থাকে?


13

আমার যদি পাইপড কমান্ড থাকে যেমন

   cat myfile | processor_application

প্রসেসর_অ্যাপ্লিকেশন হ'ল স্ট্যান্ডার্ড থেকে কিছু অংশে, প্রক্রিয়াগুলিতে, প্রক্রিয়া করার জন্য, ফাইল বিড়ালটি কতটা দূরে গেছে তা দেখা সম্ভব?

সম্ভবত lsof ব্যবহার করছেন?

ধন্যবাদ!


এখন পর্যন্ত উত্তরের জন্য আপনাকে ধন্যবাদ! তবে, আমার আরও পরিষ্কার হওয়া উচিত ছিল: কমান্ডটি ইতিমধ্যে চলছে।
wodow

হ্যাঁ হ্যাঁ, পিভি এতটা সহজ নয়। এটিকে আরও স্পষ্ট করতে আপনি আপনার মূল প্রশ্নটি সম্পাদনা করতে চাইতে পারেন।
ফিল হলেনব্যাক

প্রকৃতপক্ষে, এখন এই প্রশ্নে তিনটি দুর্দান্ত পৃথক উত্তর রয়েছে, তাই আমি এটি যেমনটি রেখে যাব।
wodow

1
সংক্ষিপ্তসার হিসাবে, তারা হলেন: ১. পিভি ব্যবহার করুন (আপনি শুরু করার আগে) ২. বিড়ালটির পরিচিত পিআইডি-র জন্য / প্রো / / পিপিআইডি / আইওতে উইচচারের মান দেখুন প্রক্রিয়া
ওয়াডো

উত্তর:


13

আপনি যেমন পিভি ব্যবহার করতে পারেন যেমন

pv file | processor_application

পিভি পাস করার সাথে সাথে এটি স্টেনটাকে সরাসরি স্টিন্ট করে দেয় আপনার বিড়াল ব্যবহার করার দরকার নেই।

সম্পাদনা করুন আপনার প্রোগ্রাম হিসাবে ইতিমধ্যে তারপর চলমান এর PID, এটি catপ্রক্রিয়া এবং তারপর বিষয়বস্তু তাকান

/proc/<PID>/io

যা আপনাকে জানাবে যে এটি কতটি বাইট লিখেছেন - wchar।


আমি কেবল আপনার সম্পাদনাটি দেখেছি! এই চেইনে (i) পিভি এর অনুপস্থিতিতে, (ii) lsof -o কাজ করে নিখুঁতভাবে কাজ করে। ধন্যবাদ!
wodow

9

কাফনের কাপড়! পাইপ প্রদর্শক নির্ভুলভাবে এটি করে। এটি কেবল আপনার পাইপলাইনে inোকান:

cat myfile | pv | processor_application

আপনি catউপরের উদাহরণটিতে অপ্টিমাইজ করতে পারেন :

pv myfile | processor_application

যার প্রকৃত অগ্রগতি সূচক দেওয়ার সুবিধা রয়েছে, যেহেতু পিভি সরাসরি ইনপুটটির আকার নির্ধারণ করতে পারে। আপনি যদি পাইপলাইনের মাঝখানে পিভি ব্যবহার করেন, সঠিক অগ্রগতি পেতে আপনাকে নিজের ফাইল আকারের সরবরাহ করতে হবে:

input_process | pv -s 100M -p | processor_application

পিভি কাস্টমাইজ করতে আরও বিকল্পের জন্য ওয়েবসাইটটি দেখুন।


pvযখন এটি পাওয়া যায় আমি পছন্দ করি :-)
voretaq7

pvপাইপলাইনটি ব্যবহার করে mkfifoএবং gdb(জিডিবি'র সাথে চারটি সিস্কেল p) sertোকানো বরং সহজ ।
ব্যবহারকারী1686

@ গ্র্যাটিউটি আপনি এরকম জ্বালাতন করতে পারবেন না। একটি সত্য উত্তর লিখুন এবং প্রদর্শিত - আমি এখন খুব কৌতূহলী।
ফিল হলেনব্যাক

2
একটি উত্তর হ্যাক খুব বেশি, কিন্তু এখানে।
ব্যবহারকারীর 6868

6

প্রক্রিয়াটি ইতিমধ্যে চলমান থাকলে lsof এর একটি size/offsetকলাম রয়েছে যা আপনার পক্ষে সহায়ক হতে পারে - আপনি যে বিড়াল প্রক্রিয়াটি পরিদর্শন করতে চান তার পিআইডি এবং তারপরে সন্ধান করুন lsof -o -p [PID]

যদি প্রক্রিয়াটি এখনও চলমান না থাকে, pvঅন্যরা যেমন পরামর্শ দেয় তবে এটি একটি ভাল বিকল্প (ধরে নিলে আপনার সিস্টেমে সেই ইউটিলিটি রয়েছে)।


এই আমি lsof বিকল্প যে আমি তাকিয়ে ছিল। তবে: যদি lsof -o সিস্টেমে অনুমোদিত না হয় বা অনুপলব্ধ থাকে?
ওয়াদো

যদি -oআপনার সিস্টেমে কাজ না করে তবে আমি মনে করি যে আপনি ব্যবহারের ক্ষেত্রে যথেষ্ট lsofcat
বিচলিত হয়ে গেছেন

হ্যাঁ, দু'জনেই চেষ্টা করে দেখেছি। আমি যে কারণে
एलএসফ

Gd.tuwien.ac.at/utils/admin-tools/lsof/FAQ এ মিরর করা lsof FAQ, বিন্দু / প্রশ্ন 3.43.2.3 এ বোঝায় যে লিনাক্সে lsof -o সম্ভব নয়! আমি ধরে নিলাম এটি অত্যধিক বিস্তৃত, অন্য ব্যবহারকারীরা
এলএসফ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.