আমি লিনাক্সে ফাইল নাম পড়ে ফাইল সিস্টেমটি কীভাবে পড়ি / লিখতে পারি?


17

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

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

আমার কিছু অনুসন্ধান:

powertop : লেখার অ্যাক্সেস লগিং জন্য শ্রেষ্ঠ, কিন্তু সিপিইউ কার্যকলাপ নিবদ্ধ
iotop : শো রিয়েল টাইমে ডিস্ক প্রক্রিয়া দ্বারা এক্সেস, কিন্তু না ফাইলের নাম
lsof : শো প্রক্রিয়া প্রতি ফাইল খুলুন, কিন্তু না বাস্তব সময়ে ফাইল অ্যাক্সেস
iostat : শো রিয়েল টাইমে আমি / ডিস্ক / অ্যারেগুলির কার্যকারিতা কিন্তু ফাইল বা প্রক্রিয়াটি নির্দেশ করে না

উত্তর:


17

এখন পর্যন্ত iotopসেরা সামগ্রিক সমাধান। নিম্নলিখিত কমান্ডটি আপনাকে ডিস্ক ব্যবহার করে সমস্ত প্রক্রিয়াটির একটি রিয়েল-টাইম আউটপুট দেয়।

iotop -bktoqqq -d .5

where: -b     is batch mode
       -k     is kilobytes/s
       -t     adds timestamp
       -o     only show processes or threads actually doing I/O
       -qqq   removes output headers
       -d .5  updates every .5 seconds

ইভেন্টলিটি আপনি লক্ষ্য করবেন যে প্রক্রিয়াটি ডিস্ক অ্যাক্সেস করবে। তদন্তের সহজ উপায় হ'ল প্রক্রিয়াটি বন্ধ করা এবং স্ট্রেস দিয়ে এটি শুরু করা। উদাহরণ স্বরূপ:

sudo strace -f nmbd -D

এটি আপনাকে ফাইল সিস্টেমের অ্যাক্সেসের স্কাইলগুলি প্রদর্শন করবে।

অন্য বিকল্পটি ইনোটিফাই (7) , যেখানে অনেকগুলি ডিস্ট্রিবিউশনগুলি "ইনোটাইফাই-সরঞ্জামগুলি" সরবরাহ করে যাতে আপনি কোনও পথ দেখতে পারেন

inotifywait -r -mpath_you_want_to_watch


1
fanotifyলিনাক্স কার্নেলের একটি নতুন ফাইল সিস্টেম নোটিফিকেশন ফ্রেমওয়ার্ক (সম্প্রতি ২০১২-এর দিকে যুক্ত)। আপনি এটি পরীক্ষা করে দেখতে চাইতে পারেন। যে সরঞ্জামগুলি এবং ইউটিলিটিগুলি এটি ব্যবহার করে সেগুলি এখনও লিখিত রয়েছে, সুতরাং আপনাকে নিজের একটি লিখতে হতে পারে, তবে এটি অনাবৃত, দুর্ভিক্ষ বা এ পর্যন্ত আপনি যা কিছু দেখেছেন তার চেয়ে অনেক বেশি শক্তিশালী।
allquixotic

3
ফ্যানোটাইফাইয়ের জন্য একটি দ্রুত গুগল অনুসন্ধান এখানfatrace থেকে ডাকা একটি সরঞ্জাম দেখায় ।
থানাহ ডি কে

কি nmbdদেওয়া মধ্যে straceকমান্ড?
ড্রাগগ্রেসপ্রাকুল

9

অন্য বিকল্পটি হ'ল http://linux.die.net/man/7/inotify যেখানে অনেকগুলি ডিস্ট্রিবিউশন "ইনোটাইফাই-টুলস" সরবরাহ করে যাতে আপনি কোনও পথ দেখতে পারেন

inotifywait -r -m /<path you want to watch>

+1 টি। Ot ইনোটাইফয়েট দক্ষতার সাথে লিনাক্সের ইনোটিফাই (7) ইন্টারফেস ব্যবহার করে ফাইলগুলিতে পরিবর্তনের জন্য অপেক্ষা করে। Mon পর্যবেক্ষণকৃত পথে কোনও অ্যাক্সেস এবং মোডেফাই <ফাইল> প্রদর্শন করে সূক্ষ্ম-শস্য অডিটিংয়ে দুর্দান্ত সহায়তা করে।
tuk0z

3

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


2

জন্য লগিং (বরং পর্যবেক্ষণ বেশি) আপনি ব্যবহার বিবেচনা করা উচিত লিনাক্স নিরীক্ষা ডেমন কার্নেল 2.6 চালু।


আমি পিআইডি পর্যবেক্ষককে কাজ করতে পারি না, তাই আপনি যদি কোন ফাইলটি দেখতে চান তা না জানলে খুব বেশি কার্যকর হয় না
cmcginty

-3
#!/usr/bin/perl
use Cwd;
use File::Touch;
use File::Temp qw/tempfile/;
use Time::HiRes qw/sleep time alarm/;
use Term::ReadKey;
my ($wchar, $hchar, $wpixels, $hpixels) = GetTerminalSize();
if($hchar < 10) {print "please increase window size"; exit; }
my $mydir = getcwd;
my  ($fh, $tmpfile) = tempfile(UNLINK => 1);

while(1)
   {
   my $starttime = time;
   eval {
        local $SIG{ALRM} = sub { die "alarm\n" };
        alarm 0.4;
        $query = `find -neweraa $tmpfile 2>&1`; #change to mm for writes only
        touch($tmpfile);
        @files = split(/\n/,$query);
        alarm 0;
        };
   system('clear');
   foreach $file(@files) { $filecount{$file}++; }
   @sorted = sort {$filecount{$b} <=> $filecount{$a}} (keys %filecount);
   for ($x = 0;$x < $hchar-2; $x++) {print $filecount{$sorted[$x]}."\t".$sorted[$x]."\n";}
   my $endtime = time;
   my $length = ($endtime-$starttime);
   if ($length > 0.3) {print "program not designed for large trees, please use smaller tree.\n"; exit;}
   print "\n$length"."s\n"
   }

5
আপনি কীভাবে এই কোডটি ব্যবহার করবেন এবং পার্শ্ব-প্রতিক্রিয়া এবং সীমাবদ্ধতার পাশাপাশি এটি কী সম্পাদন করবে সে সম্পর্কে কিছু বিশদ সহ আপনার উত্তরটি আপডেট করতে পারেন?
জেরেমি ডব্লিউ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.