কোন প্রক্রিয়া দ্বারা কোন ফাইলটি বর্তমানে রচিত তা কীভাবে সন্ধান করবেন


9

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

আমি জানি যে lsofপ্রক্রিয়াটি বর্তমানে কোন ফাইলগুলি খোলে তা অনুসন্ধান করতে আমি ব্যবহার করতে পারি , তবে অবশ্যই থান্ডারবার্ডের অনেকগুলি খোলা আছে, সুতরাং এটি তেমন সহায়ক নয়। iostatকেবলমাত্র ডিভাইস প্রতি পরিসংখ্যান দেখায়।

সমস্যাটি কেবল এলোমেলোভাবে ঘটে এবং এটি প্রদর্শিত হতে বেশ কিছুটা সময় লাগতে পারে, তাই আমি আশা করি যে কোন ফাইলটি সবচেয়ে বেশি লিখেছেন তা সন্ধান করার জন্য আমাকে থান্ডারবার্ড স্ট্রেস করতে হবে না এবং দীর্ঘ লগগুলি ব্যবহার করতে হবে।


উত্তর:


6

আপনি যখন প্রক্রিয়াটির সাথে কেবল স্তব্ধ হয়ে যান তখনই (আপনি পিডটি পেতে এবং একটি অতিরিক্ত টার্মিনালে কমান্ডটি আগে থেকেই সারি করতে পারেন), এটি ব্লকিং রাইটের ফাইল বিবরণী প্রদর্শন করবে।

তুচ্ছ উদাহরণ:

$ mkfifo tmp
$ cat /dev/urandom > tmp &
[1] 636226
  # this will block on open until someone opens for reading

$ exec 4<tmp
  # now it should be blocked trying to write

$ strace -p 636226
Process 636226 attached - interrupt to quit
write(1, "L!\f\335\330\27\374\360\212\244c\326\0\356j\374`\310C\30Z\362W\307\365Rv\244?o\225N"..., 4096 <unfinished ...>
^C
Process 636226 detached

ধন্যবাদ, আমি জানতাম না যে প্রক্রিয়া চলাকালীন আমি স্ট্র্যাস সংযুক্ত করতে পারি। আমি এটি চেষ্টা করব।
ফিলিপ উইন্ডার

1
lsof -p $PIDফাইল বর্ণনাকারী কোথায় পয়েন্ট করে তা জানতে আপনি এই তথ্যটি
পেরিয়ে যেতে পারেন

1
বা ls -l /proc/pid/fdলিনাক্সে
অকেজো

স্ট্রেস ব্যবহার করে আমি আসলে যা জানতে চেয়েছিলাম ঠিক তা জানতে পারি, তাই আবারও ধন্যবাদ!
ফিলিপ উইন্ডার

2

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

auditctl -a exit,always -F pid=1234 -F dir=/home/philipp

/var/log/audit/audit.logপিড 1234 সহ প্রক্রিয়াটি কোথাও কোথাও লিখতে হবে এটি লগগুলিতে লিখবে /home/philipp। ওভারহেড মোটামুটি ছোট, এর চেয়ে অনেক ছোট strace


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

নিবন্ধন করুন হুম। যুক্ত করার চেষ্টা করুন -S read -S write(অদৃশিত)।
গিলস 'অশুভ হওয়া বন্ধ করুন'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.