এখানে প্রশ্ন থেকে , ওপি 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
সমাধানটি সেরা বিকল্প হিসাবে গ্রহণ করব।
dbus
) খুব গভীরভাবে খনন করতে পারে ।
fork
, তারপরেexec
পরিবারের কোনও সদস্যকে ব্যবহার করে নতুন প্রোগ্রাম শুরু করা হয় । সুতরাং আপনি সম্ভবত লগ ইন করতে চানexec*
, নাfork
।