চলমান প্রক্রিয়াটির পুনঃনির্দেশ STDOUT দেখুন


17

যদি আমি এই আদেশটি দিয়ে একটি অ্যাপ্লিকেশন শুরু করি:

/path/to/my/command >> /var/log/command.log

এবং কমান্ডটি ফিরে আসবে না, অন্য প্রম্পট থেকে কোনও উপায় আছে, এটি দেখার জন্য যে STDOUT পুনর্নির্দেশটি সেট করা আছে?

আমি উভয়ের মত কিছু খুঁজছি

cat /proc/PID/redirects

অথবা

ps -??? | grep PID

তবে যে কোনও পদ্ধতিই করবে।

উত্তর:


22

ফাইল বিবরণী # 1 (STDOUT) দেখুন /proc/$PID/fd/। কার্নেলটি এই ফাইলটিকে প্রতীকী লিঙ্ক হিসাবে উপস্থাপন করে যে কোনও ফাইলটিতে ডেস্ক্রিপ্টর পুনঃনির্দেশিত হয়েছে।

$ readlink -f /proc/20361/fd/1
/tmp/file

পারফেক্ট! ধন্যবাদ! আপনি কীভাবে অন্য কোনও পুনঃনির্দেশগুলি যেমন এসটিডিআরআর সম্পর্কিত কোনও লিঙ্ক বা বিশদ সরবরাহ করতে পারেন, তারা কোন সংখ্যা?
ধনী

কমপক্ষে লিনাক্সে (এবং আমি অন্যান্য প্রতিটি ইউনিক্স-এর মতো ওএসের উপরে বিশ্বাস করি) তারা 0: স্টিডিন, 1: স্টাডআউট, 2: স্টার্ডার (স্ট্যান্ডার্ড ত্রুটি)। নোট করুন এখানে <স্টডিও.এস>> সিডি ম্যাক্রোগুলিও সংজ্ঞায়িত করা হয়েছে: এসটিডি ILE ইন, আউট, ইআরআর F _ফিলনো। বিশদ জন্য 'ম্যান stdout' দেখুন।
পেটর উজেল

0, 1, 2 স্ট্যান্ডিনের জন্য, স্টাডআউট এবং স্টার্ডার যথাক্রমে সমস্ত ইউনিক্স / ইউনিক্স-মতো সিস্টেমে গ্যারান্টিযুক্ত এবং উইন্ডোতেও সত্য।
পল স্টেলিয়ান

MacOS এ কোনও উপায় আছে? / proc / <pid> / fd / 1 এর অস্তিত্ব নেই, আমি এমকিফাইফো ব্যবহার করতে পারি?
আলেকজান্ডার মিলস

4

কোন প্রক্রিয়াগুলি দ্বারা ফাইলগুলি কীভাবে খোলা হয় তা দেখার একটি দরকারী সরঞ্জাম lsof। আপনি এটি দিয়ে একটি নির্দিষ্ট প্রক্রিয়াতে নির্দেশ করতে পারেন lsof -p1234এবং আপনি ls -l /proc/1234/fdলিনাক্সের আওতায় যেমন পেতে পারেন ঠিক তেমন তথ্য দেখতে পাবেন , কোন ফাইলগুলি খোলা আছে।

এর সাথে সবচেয়ে দরকারী জিনিসটি lsofঅন্য পথে চলছে: lsof /path/to/fileআপনাকে কী ফাইলগুলি ব্যবহার করে তা জানায়।


1

প্রচুর উত্তরে এটি এইভাবে করা উল্লেখ করা হয়েছে:

tail -f /proc/{PID}/fd/1

তবে, আমি খুঁজে পেয়েছি যে এটি সর্বদা কার্যকর হয় না। বিকল্পভাবে, catকখনও কখনও ফলাফল দেয়।

cat /proc/{PID}/fd/1

যেখানে {PID ps auxকমান্ডটি ব্যবহার করে সন্ধান করা যেতে পারে ।

আরও উল্লেখ করা ভাল, কমান্ডের শেষে নম্বর (এই ক্ষেত্রে fd / 1) অন্যান্য আউটপুটগুলির জন্য পরিবর্তন করা যেতে পারে।

 /proc/{PID}/fd/0 # STDIN
 /proc/{PID}/fd/1 # STDOUT
 /proc/{PID}/fd/2 # STDERR
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.