পিড এবং প্রসেসের নামগুলি তৈরি হওয়ার সাথে সাথে মুদ্রণ করুন


10

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

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

সুতরাং উপরের প্রশ্নের জন্য, একটি সমাধান হতে পারে এমন কিছু প্রোগ্রাম থাকতে হবে যা তৈরি হওয়ার সাথে সাথে প্রক্রিয়াগুলির নাম এবং পিডগুলি আউটপুট করে। তাহলে আপনি এর মতো কিছু করতে পারেন:

pids-names |
  grep some_program |
  cut -f 2 |
  while read pid; do
    process-pid "$pid"
  done

এর সাথে সমস্যাটি এটি আরও মৌলিক প্রশ্ন উত্থাপন করে, পিড এবং প্রক্রিয়া নামগুলি তৈরি করার সাথে সাথে কীভাবে মুদ্রণ করা যায়?

আমি একটি প্রোগ্রাম বলেছি ps-watcher, যদিও এটির সাথে সমস্যাটি হ'ল এটি কেবল একটি perlস্ক্রিপ্ট যা বারবার চলতে থাকে psতাই এটি সমস্যাটি সত্যিই সমাধান করে না। আরেকটি বিকল্প ব্যবহার করা auditdসম্ভবত কাজ করতে পারে যদি লগ মাধ্যমে সরাসরি প্রক্রিয়া হয়েছে tail -f। একটি আদর্শ সমাধান এর চেয়ে সহজ এবং আরও বহনযোগ্য হবে, যদিও আমি একটি auditdসমাধানটি সেরা বিকল্প হিসাবে গ্রহণ করব।


1
একটি আকর্ষণীয় পার্শ্ব নোটটি হ'ল পিডটি প্রথমে তৈরি প্রক্রিয়া ( বা বৈকল্পিক) এর অনুলিপি হিসাবে তৈরি করা হয় fork, তারপরে execপরিবারের কোনও সদস্যকে ব্যবহার করে নতুন প্রোগ্রাম শুরু করা হয় । সুতরাং আপনি সম্ভবত লগ ইন করতে চান exec*, না fork
ডারোবার্ট

2
একমাত্র পোর্টেবল দক্ষ উপায় সম্পর্কে আমি সচেতন হলাম সাধারণ ইউনিক্স প্রসেস অ্যাকাউন্টিং ব্যবহার করা, যা প্রক্রিয়াটি বের হওয়ার পরে রেকর্ড লিখবে । প্রক্রিয়াগুলি যেমন তৈরি বা অব্যাহতিপ্রাপ্ত হিসাবে আপনি তা ধরতে চান তবে আপনার সম্ভবত সিস্টেম-নির্দিষ্ট জিনিস যেমন লিনাক্স অডিট, সিস্টেমট্যাপ বা ডিট্রেস প্রয়োজন।
মার্ক প্লটনিক

সুতরাং উপরের প্রশ্নের জন্য, একটি সমাধান হতে পারে এমন কিছু প্রোগ্রাম থাকতে হবে যা তৈরি হওয়ার সাথে সাথে প্রক্রিয়াগুলির নাম এবং পিডগুলি আউটপুট করে। - তারা যেমন তৈরি হয়েছে? আপনি যা ভাবছেন তা পর্যবেক্ষক হিসাবে মনে হচ্ছে (এটি তারা তাদের ওয়েব ব্রাউজার বিশ্বে কল করে)। আমি ভাবছি পাইথনটি কি "ডোর গার্ড" চরিত্রে অভিনয় করার উপযুক্ত? সত্য ঘটনাটি হ'ল পাইথন সিস্টেমের অভ্যন্তরীণ কাজগুলি (উদাহরণস্বরূপ dbus) খুব গভীরভাবে খনন করতে পারে ।
সিন্ট্যাক্সেরর

1
@ সাইন্ট্যাক্সারার ডিবিস এই ক্ষেত্রে সিস্টেমের অভ্যন্তরীণ কাজ থেকে অনেক দূরে - এটি আসলে এখানে যা আলোচনা করা হচ্ছে তার চেয়ে প্রায় দুই স্তরের উপরে।
পিটার্ফ

ঠিক আছে, ওএসআই লিঙ্গোতে এখানে আলোচিত স্তরটি ডিবিবাসের চেয়ে এখনও কম হতে পারে। আমি স্বীকার করি যে দুজনই একই স্তরে রয়েছে কিনা সে সম্পর্কে আমি গভীরভাবে চিন্তাও করি নি।
সিন্ট্যাক্সেরর

উত্তর:


6

লিনাক্স-নির্দিষ্ট উত্তর:

পারফ-সরঞ্জামগুলিতে একটি এক্সিকিউনুপ থাকে যা ঠিক এটি করে। এটি বিভিন্ন লিনাক্স-নির্দিষ্ট বৈশিষ্ট্য যেমন ftrace ব্যবহার করে। ডেবিয়ান-এ, এটি পারফ-টুলস-অস্থির প্যাকেজটিতে রয়েছে।

man catঅন্য টার্মিনালে আমার দৌড়ানোর উদাহরণ :

root@Zia:~# execsnoop 
TIME        PID   PPID ARGS
17:24:26  14189  12878 man cat 
17:24:26  14196  14189 tbl 
17:24:26  14195  14189 preconv -e UTF-8 
17:24:26  14199  14189 /bin/sh /usr/bin/nroff -mandoc -Tutf8 
17:24:26  14200  14189 less 
17:24:26  14201  14199 locale charmap 
17:24:26  14202  14199 groff -mtty-char -Tutf8 -mandoc 
17:24:26  14203  14202 troff -mtty-char -mandoc -Tutf8 
17:24:26  14204  14202 grotty 

আমি সন্দেহ করি এটি করার একটি বহনযোগ্য উপায় আছে।


2

এটি করার সঠিক উপায় টিএম আপনি যে সিস্টেম এবং কার্নেলটি চালাচ্ছেন তার উপর নির্ভর করে। ডিট্রেসের সোলারিস, ফ্রি / নেটবিএসডি এবং লিনাক্সে কাজ করা উচিত।

লিনাক্সের জন্য, আপনি ftrace (যা সংকলনের সময়ে সক্ষম করতে হবে - এটি সাধারণত হয়) বা নেটলিঙ্কের মাধ্যমে ইভেন্টগুলি ব্যবহার করতে পারেন - আরও তথ্যের জন্য সমস্যার SO উত্তর দেখুন (এবং এটিকে ভোট দেওয়ার কথা মনে রাখবেন, স্কোর ~ 30 বনাম 0 গৃহীত উত্তরের জন্য মজাদার দেখাচ্ছে)। দরিদ্র মানুষের ট্রেসার সম্ভবত ব্যবহার করে প্রয়োগ করা যেতে পারে strace -eexec,fork(যদিও অযৌক্তিক ওভারহেড সহ)।

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