আমার এসএসডিতে কোন প্রক্রিয়াটি লিখেছে তা অনুসন্ধান করতে ডিস্ক তদন্ত আরও লিখুন


11

আমি আমার নতুন এসএসডি সিস্টেম ড্রাইভে ডিস্ক লেখার ক্ষুদ্রতর করার চেষ্টা করি। আমি আইওস্যাট আউটপুট নিয়ে আটকে আছি:

~ > iostat -d 10 /dev/sdb
Linux 2.6.32-44-generic (Pluto)     13.11.2012  _i686_  (2 CPU)

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sdb               8,60       212,67       119,45   21010156   11800488

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sdb               3,00         0,00        40,00          0        400

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sdb               1,70         0,00        18,40          0        184

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sdb               1,20         0,00        28,80          0        288

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sdb               2,20         0,00        32,80          0        328

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sdb               1,20         0,00        23,20          0        232

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sdb               3,40        19,20        42,40        192        424

আমি দেখতে এসডিবিতে লেখার আছে। আমি কোন প্রক্রিয়াটি লিখব তা কীভাবে সমাধান করব ?

আমি আইওটপ সম্পর্কে জানি , তবে কোন ফাইল সিস্টেমের অ্যাক্সেস হচ্ছে তা তা দেখায় না।

উত্তর:


7

নিম্নলিখিতটি কার্নেলের ভার্চুয়াল মেমরি ব্লক ডাম্প প্রক্রিয়া ব্যবহার করে। প্রথমে পার্ল স্ক্রিপ্টটি পান:

wget https://raw.githubusercontent.com/true/aspersa-mirror/master/iodump

তারপরে ব্লক ডাম্পটি চালু করুন:

echo 1 | sudo tee /proc/sys/vm/block_dump

এবং নিম্নলিখিত চালান:

while true; do sleep 1; sudo dmesg -c; done  | perl iodump

.. Controlcএবং শেষ করতে টিপুন , আপনি নীচের মত কিছু দেখতে পাবেন:

^C# Caught SIGINT.
TASK                   PID      TOTAL       READ      WRITE      DIRTY DEVICES
jbd2/sda3-8            620         40          0         40          0 sda3
jbd2/sda1-8            323         21          0         21          0 sda1
#1                    4746         11          0         11          0 sda3
flush-8:0             2759          7          0          7          0 sda1, sda3
command-not-fou       9703          4          4          0          0 sda1
mpegaudioparse8       8167          2          2          0          0 sda3
bash                  9704          1          1          0          0 sda1
bash                  9489          1          0          1          0 sda3
mount.ecryptfs_       9698          1          1          0          0 sda1

এবং আপনার কাজ শেষ হয়ে গেলে ব্লক ডাম্পটি বন্ধ করুন:

echo 0 | sudo tee /proc/sys/vm/block_dump

এই সহায়ক তথ্যের জন্য http://www.xaprb.com/blog/2009/08/23/how-to-find-per-process-io-statistics-on-linux/ ধন্যবাদ


10

আপনি কমপক্ষে iotop দিয়ে শুরু করতে পারেন। এটি আপনাকে কোন ফাইল সিস্টেমটি লেখা হচ্ছে তা বলবে না তবে এটি আপনাকে তদন্তের জন্য কিছু প্রক্রিয়া দেবে।

sudo apt-get install iotop
sudo iotop

এটি তাত্ক্ষণিক ডিস্ক পড়া এবং লেখার এবং কমান্ডের নাম পড়ার বা লেখার নাম দেখায়।

আপনি যদি এমন প্রক্রিয়াটি খুব কম সময়ে লেখার চেষ্টা করছেন তবে আপনি --accumulateবিকল্পটি ব্যবহার করতে পারেন বা একটি ফাইলটিতে আউটপুট লগ করতে পারেন :

sudo -i
iotop --batch > iotop_log_file

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

এই মুহুর্তে আপনি কিছু প্রার্থী সন্দেহজনক প্রক্রিয়া সন্ধান করতে সক্ষম হওয়া উচিত। আইওটপের বাম কলামটি পিডটি দেখায়। পরবর্তী, প্রক্রিয়াটি কোন ফাইল বর্ণনাকারী লিখেছেন তা সন্ধান করুন:

sudo -i
strace -p <pid> 2>&1 | grep write

প্রক্রিয়াটি লিখলে আপনার এইরকম আউটপুট দেখতে হবে:

write(1, "\n", 1)                       = 1
write(4, "test\n", 5)                   = 5
write(1, ">>> ", 4)                     = 4

লেখার প্রথম যুক্তি হ'ল ফাইল বর্ণনাকারী। আমরা সম্ভবত 2 এর চেয়ে বেশি মানের সন্ধান করছি কারণ 0, 1 এবং 2 কেবল স্টিডিন, স্টাডআউট এবং স্ট্ডার। ফাইল বর্ণনাকারী 4 আকর্ষণীয় দেখায়।

ফাইল বিবরণকারী কোন ফাইলটির সাথে ইঙ্গিত করেছে তা এখন আপনি খুঁজে পেতে পারেন:

lsof -p <pid>

যার ফলাফল যেমন:

...
python  23908  rob  mem    REG    8,1    26258 8392656 /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache
python  23908  rob    0u   CHR  136,5      0t0       8 /dev/pts/5
python  23908  rob    1u   CHR  136,5      0t0       8 /dev/pts/5
python  23908  rob    2u   CHR  136,5      0t0       8 /dev/pts/5
python  23908  rob    3w   REG   0,25      909 9049082 /home/rob/testfile
python  23908  rob    4w   REG   0,25       20 9049087 /home/rob/another_test_file

চতুর্থ কলামটি দেখুন। 4wমানে ফাইল বর্ণনাকারী 4 লেখার জন্য উন্মুক্ত এবং ফাইলটি another_test_file

প্রক্রিয়াটি কোনও ফাইল খোলার, লেখার এবং তারপরে বন্ধ করার পক্ষে সম্ভব হয়, সেক্ষেত্রে lsof এটি প্রদর্শন না করে। আপনি এটি এর সাথে ঘটতে পারে:

strace -p <pid> 2>&1 | grep open

আমি --accumulte সম্পর্কে জানতাম না এটি সত্যিই দুর্দান্ত বৈশিষ্ট্য! তার জন্য আপনাকে অনেক ধন্যবাদ !!! আইওটপ - ব্যাচের আউটপুট পুনর্নির্দেশ ইউনিকোডএকোডেরর সাথে ব্যর্থ হয়: 'এসকিআই' কোডেক 92-99 পজিশনে অক্ষরগুলি এনকোড করতে পারে না: ফাইল / / এসআর / লিবি / অ্যাপোমডিউলস / স্পিথন 2.6/iotop/ui তে সীমানা (128) নয়। পিআই ", 405 লাইন, রিফ্রেশ_ডিসপ্লে
zuba

আমি খুশি যে আমার উত্তরটি কিছুটা হলেও কার্যকর ছিল। পুনঃনির্দেশটি আমার পক্ষে কাজ করে; নিশ্চিত যে আমি এটি ব্যাখ্যা করতে পারি।
রব ফিশার

ঠিক আছে, আমি কিছুটা খেলেছি এবং খুঁজে পেয়েছি যে আমি এসএসডি-তে লেখার প্রক্রিয়াগুলি ধরতে কমপক্ষে পর্যাপ্ত ডিটেকটিভ কাজ করতে লসফ এবং স্ট্রেস ব্যবহার করতে পারি। আশা করি এটি শেষ পর্যন্ত জিজ্ঞাসিত প্রশ্নের উত্তর দিয়েছে, যদিও দেখে মনে হচ্ছে কলিন ইয়ান কিং এর উত্তরটি সহজ!
রব ফিশার

1
দেরিতে প্রতিক্রিয়ার জন্য দুঃখিত, আমি স্ট্রেস না খেলে আমার কিছু বলার ছিল না। আরেকটি চালাক পদ্ধতির জন্য আপনাকে ধন্যবাদ, আমি ভোট দিয়েছি। শেল স্ক্রিপ্টগুলি লেখার সামান্য অভিজ্ঞতার কারণে এটি প্রয়োগ করতে স্ক্রিপ্ট লিখতে আমার বেশ অসুবিধা হয়েছে। এজন্যই আমি আরেকটি সমাধান বেছে নিয়েছি। আপনার জ্ঞান ভাগাভাগি করার জন্য ধন্যবাদ!
জুবা

হওয়া উচিত --accumulated, তবে স্ট্যাক এক্সচেঞ্জের পোস্টটির সম্পাদনা স্বীকার করতে 6 টি অক্ষর প্রয়োজন।
এইচ__
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.