এর পিআইডি ব্যবহার করে কোনও প্রক্রিয়া থেকে আউটপুট পড়া কি সম্ভব?


32

fgচাকরীর জন্য কমান্ডটি ব্যবহার করার জন্য একইভাবে তার পিআইডি ব্যবহার করে টার্মিনালটি ইতিমধ্যে চলমান প্রক্রিয়ার সাথে সংযুক্ত করা সম্ভব ?


কিসের মত?! আপনি কোন প্রক্রিয়াটি সংযুক্ত করতে চান ?!

আমি অন্য কোনও টার্মিনালে শুরু হওয়া একটি প্রোগ্রামের আউটপুটটি দেখতে সক্ষম হতে চাই
টমি

উত্তর:


43

আপনি এই প্রক্রিয়াটির স্ট্যান্ডার্ড ফাইল বর্ণনাকারী পেতে পারেন, যেমন stdout:

tail -f /proc/<pid>/fd/1

8
আমি এই সমাধানটি শীর্ষে দিয়ে চেষ্টা করেছি এবং দেখে মনে হচ্ছে এটি কার্যকর হয় না। একটি টার্মিনালে আমি শীর্ষটি চালু করেছিলাম এবং অন্যটিতে আমি আপনার আদেশটি কোরড পিডের সাথে ব্যবহার করেছি তবে কোনও আউটপুট পাইনি।
টমি

1
আপনি কীভাবে ম্যাকটিতে এটি করেন?
অ্যাভনার বার

স্ট্যাডার সম্পর্কে কি? আমি ধরে নিই / proc / <pid> / fd / 2, তবে তারপরে আপনি উভয় স্টাডআউট / স্টাডার পাবেন কীভাবে?
আলেকজান্ডার মিলস

1
যদি এই বর্ণনাকারী কোনও সকেটের দিকে নির্দেশ করে? লেজ এটি পড়তে পারে না। # ls -la /proc/24510/fd/1 lrwx------ 1 root root 64 Oct 31 08:34 /proc/24510/fd/1 -> socket:[444026]
ইমাসকার

8

এখানে কয়েকটি বিকল্প রয়েছে। একটি হ'ল কমান্ডের আউটপুট কোনও ফাইলে পুনর্নির্দেশ করা এবং তারপরে tailরিয়েল টাইমে সেই ফাইলটিতে যুক্ত হওয়া নতুন লাইনগুলি দেখতে ব্যবহার করা।

আরেকটি বিকল্প হ'ল আপনার প্রোগ্রামটির ভিতরে চালু করা screen, যা পাঠ্য-ভিত্তিক টার্মিনাল অ্যাপ্লিকেশন। স্ক্রিন সেশনগুলি সংযুক্ত এবং বিচ্ছিন্ন হতে পারে তবে নামমাত্র কেবল একই ব্যবহারকারীর দ্বারা ব্যবহৃত হয়, তাই যদি আপনি সেগুলি ব্যবহারকারীদের মধ্যে ভাগ করতে চান তবে want

অন্য আপনি যদি চান তবে আপনি প্রক্রিয়াটি সন্ধান করতে এবং এটি কী করছে তা দেখতে পারেন strace:

strace -e trace=open -p 22254 -s 80 -o output.txt
  • -p PID: প্রক্রিয়া আইডি পিআইডি দিয়ে প্রক্রিয়াটি সংযুক্ত করুন এবং ট্রেসিং শুরু করুন।
  • -s SIZE: মুদ্রণের জন্য সর্বোচ্চ স্ট্রিং আকার নির্দিষ্ট করুন (ডিফল্টটি 32) 32
  • -o filename: স্ক্রিন (স্ট্যাডার) এর পরিবর্তে ফাইলের ফাইলসামে ট্রেস আউটপুট লিখুন।

শেষ পর্যন্ত এটি কাজ করে না বলে মনে হচ্ছে। আমি শীর্ষে চালু করেছি এবং অন্যটিতে আমি আপনার আদেশটি Corred পিডের সাথে ব্যবহার করেছি তবে প্রত্যাশিত আউটপুটটি পাইনি। আমি পরে যখন লেজ ব্যবহার করি।
টমি

sudoকোনও প্রসেসের সাথে সংযুক্ত করতে আপনার স্ট্রেস ব্যবহার করতে হবে , এবং -o ~/output.txtআপনার বাড়ির ফোল্ডারে ফাইলটি রেখে দেওয়া উচিত।

আউটপুট ফাইলটি ব্যবহার করুন, স্ক্রিনে প্রেরণ করবেন না! আমার মতো বোকা হয়ে উঠবেন না এবং স্ট্রেস থেকে বেরিয়ে আসতে Ctrl-C টিপুন এবং তারপরে আমার পিআইডি বিচ্ছিন্ন করুন। একটি গুরুত্বপূর্ণ স্ক্রিপ্টে আমার কাছ থেকে বিষ্ঠা ভয় পেয়েছে।
ওয়েস্টন গাঙ্গার

3

আপনি অন্য টার্মিনালে একটি চলমান প্রক্রিয়া সংযুক্ত করতে নীচে প্রদত্ত এই আদেশগুলি ব্যবহার করতে পারেন:

  • retty(ম্যান পেজ: রেটি )
  • reptyr
  • screen

উদাহরণ:

screen -S PID
retty $(pgrep PID)
reptyr PID

আমি রেটি বা পুনরায় প্রতিস্থাপন করতে সক্ষম হইনি। এছাড়াও, পর্দা ব্যবহার করতে সক্ষম হতে আমি অবশ্যই এটির সাথে মূল প্রক্রিয়াটি চালু করব যাতে এটি আমার সমস্যার সমাধান না করে solve
টমি

আপনি কমান্ড ব্যবহার করে এটি ইনস্টল করতে পারেন sudo apt-get install rettyতবে রেটির সাথে কিছু সীমাবদ্ধতা রয়েছে। উত্তরে উল্লিখিত ম্যান পৃষ্ঠাটি দেখুন।
devav2
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.