ইন্টারপ্রোসেস পাইপ ট্র্যাফিক নিরীক্ষণ


13

নামহীন পাইপের মাধ্যমে যোগাযোগ করার জন্য আমার কাছে দুটি লিনাক্স প্রক্রিয়া রয়েছে। পাইপের ট্র্যাফিক কীভাবে পর্যবেক্ষণ করা যায়? আমি কীভাবে পাইপে ডেটা ইনজেক্ট করতে পারি? আমি রুট অ্যাক্সেস এবং পাইপ ইনোড জানি।

উত্তর:


7

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

আপনি যা করছেন তার পরে কম-বেশি করার একটি অ-তাত্ত্বিক উপায় রয়েছে যদিও: পিটিআরসি সিস্টেম কলের মাধ্যমে । আপনি পাই প্রতি পাইপ উপর প্রতি সেচ করা হবে না, কিন্তু প্রক্রিয়া এক। পর্যবেক্ষণের জন্য, স্ট্রেস ব্যবহার করুন , যেমন

strace -p1234 -s99999 -e write

1234পাইপে লেখার প্রক্রিয়াটির প্রক্রিয়া আইডি কোথায় । ডেটা সংশোধন করা শক্ত, তবে করা যেতে পারে। আমি মনে করি সবচেয়ে সহজ উপায় হ'ল প্রথমে একটি মধ্যবর্তী প্রক্রিয়া সেট আপ করা যা এর স্ট্যান্ডার্ড ইনপুটটিকে তার স্ট্যান্ডার্ড আউটপুটে অনুলিপি করে, সেই সাথে আপনি যে ডেটা ইনজেক্ট করতে চান (এবং আপনি যে কোনও ডেটা দমন করতে চান সেটিকে বিয়োগ করবে)। দুটি নামযুক্ত পাইপ তৈরি করুন এবং সেই স্টিডিন দিয়ে একটি পাইপ এবং অন্যটিতে স্টডআউট দিয়ে মধ্যবর্তী প্রক্রিয়া শুরু করুন। তারপরে যথাযথ নামযুক্ত পাইপে দুটি টার্গেট প্রক্রিয়া সম্পাদন করতে , তারপরে যথাযথ ফাইল বর্ণনাকারীর উপর পাইপ স্থাপন করতে একটি ডিবাগার (যেমন জিডিবি ) ব্যবহার করুন। মনে রাখবেন যে প্রক্রিয়াটির একটি প্রক্রিয়া ক্র্যাশ হওয়ার সম্ভাবনা রয়েছে।opendup

(যদি আপনি শেষ অনুচ্ছেদটি বুঝতে না পারেন তবে আমি দুঃখিত, তবে এর জন্য একটি নির্দিষ্ট স্তরের প্রযুক্তিবিজ্ঞানের দরকার পড়ে I এর থেকে সহজ উপায় আছে বলে আমি মনে করি না))


ধন্যবাদ, আমি বুঝতে পেরেছি। আমি যা চেষ্টা করেছি সেটি / প্রোক / $ পিআইডি / এফডি যাচ্ছি, যেখানে আমি প্রক্রিয়াগুলির একটির নামবিহীন পাইপের ফাইল ফাইলগুলি পেয়েছি এবং আমি শেলটিতে সহজ বিড়াল এবং প্রতিধ্বনি ব্যবহার করে ডেটা পড়তে এবং পরিচালনা করতে সক্ষম হয়েছি, তবে আচরণটি কিছুটা অসঙ্গত। আমার আরও তদন্ত করা দরকার।
জ্যাকহাব

1
@ জ্যাকহাব: ওহ, আমি ভেবেছিলাম এটি পাইপের জন্য কাজ করে না। তবে যেমনটি আপনি খুঁজে পেয়েছেন তা ট্র্যাফিক নিরীক্ষণের জন্য আপনাকে এতটা সাহায্য করবে না, কারণ নির্মাতার কাছ থেকে প্রতিটি বাইট হুবহু একজন গ্রাহকের কাছে যাবে এবং আপনার মনিটর বা প্রকৃত গ্রাহক তা পাবেন কিনা তা আপনি নিয়ন্ত্রণ করতে পারবেন না। আপনার সেই সময়ে ডেটা ইনজেক্ট করতে সক্ষম হওয়া উচিত।
গিলস 'অসন্তুষ্ট হওয়া বন্ধ করুন'

2

একটি পাইপ নিরীক্ষণের জন্য দরকারী কিছু সরঞ্জাম:

পাইপ ভিউ
টি

ইতিমধ্যে চলমান প্রোগ্রামের জন্য, যেখানে কেউ পাইপিং নিয়ন্ত্রণ করে না, জিডিবি পদ্ধতিটি দেখুন:
একটি চলমান প্রক্রিয়া থেকে আউটপুট পুনর্নির্দেশ

অথবা কেউ স্ট্রেস ব্যবহার করতে পারে :

strace -ewrite -p $PID 2>&1 | grep "write(1"

কেবল বর্ণনাকারী 1 টি কল দেখায়। "2> & 1" স্ট্যাডারকে স্টডআউটে পুনর্নির্দেশ করা হয়, যেমন স্ট্রেস ডিফল্টরূপে স্ট্ডারকে লেখেন।


1
আমি যা বোঝাতে চাইছি তা হল ইতিমধ্যে চলমান প্রক্রিয়াটির পাইপের ওয়্যারটাইপিং। প্রক্রিয়া একটি প্রসেস বি প্রবর্তন করে এবং পাইপের মাধ্যমে এটির সাথে কথা বলে যাতে আমার কাছে টি বা পিভির মতো প্রক্সি ইউটিলিটিগুলি ব্যবহার করার উপায় নেই।
জ্যাকহাব

আরও কিছু পদ্ধতি যুক্ত করা হয়েছে।
harrymc

গ্রেপ ব্যবহার না করে আপনি "-e write = 1" নির্দিষ্ট করতে পারেন আউটপুটটি এফডি 1 তে লেখা ডেটাতে সীমাবদ্ধ করতে
উইলিয়াম পার্সেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.