প্রদত্ত প্রক্রিয়াটির জন্য .pid ফাইলটি কীভাবে সন্ধান করবেন


15

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

আমি আমার নিজস্ব কার্যকর এক্সিকিউটেবল তৈরি করার চেষ্টা করেছি এবং এটি চালানোর চেষ্টা করেছি - এখানেও .pid ফাইলটি কোথায় তৈরি হয়েছে তা আমি বুঝতে পারি না।

এবং সমস্ত প্রক্রিয়া একটি .pid ফাইল আছে?


5
সমস্ত প্রক্রিয়া একটি .pidফাইল নেই। অ্যাপ্লিকেশনটির (বা এর স্টার্ট আপ স্ক্রিপ্ট) স্পষ্টভাবে একটি তৈরি করা দরকার।
বাহামাত

উত্তর:


14

আপনি সাধারণত রেডহাট /var/run// সেন্টোস -স্টাইল সিস্টেমগুলিতে ডিমনাইজড প্রক্রিয়াগুলির জন্য পিআইডি ফাইলগুলি খুঁজে পাবেন ।

এর সংক্ষেপে, আপনি সর্বদা প্রক্রিয়া আরআর স্ক্রিপ্টটিতে দেখতে পারেন। উদাহরণস্বরূপ, এসএসএইচ ডেমনটি স্ক্রিপ্ট দিয়ে শুরু করা হয়েছিল /etc/init.d/sshd। কখনও কখনও পিআইডি সেখানে সংজ্ঞায়িত করা হয় (পিড, পিআইডি, পিআইডিএফআইএল, পিআইডি_ফায়াল ইত্যাদি অনুসন্ধান করুন)।

তবে, আরএইচইএল-স্টাইল সিস্টেমের বেশিরভাগ ডিমন /etc/init.d/functionsকিছু সাধারণ বৈশিষ্ট্যের জন্য স্ক্রিপ্ট উত্স করে ।

# Set $pid to pids from /var/run* for {program}.  $pid should be declared
# local in the caller.
# Returns LSB exit code for the 'status' action.
__pids_var_run() {
        local base=${1##*/}
        local pid_file=${2:-/var/run/$base.pid}

যে কোনও সূত্রের জন্য /etc/init.d/functions, পিআইডি বাস করবে /var/run/*.pid

কাস্টম অ্যাপ্লিকেশনগুলির জন্য, পিআইডি একটি মোড়ক স্ক্রিপ্টে সংজ্ঞায়িত করা হবে (আশা করি)। যদিও আমি জানি বেশিরভাগ বিকাশকারীরা উপরের ডেমোনগুলির মতো একই সম্মেলনটি অনুসরণ করেন follow

আপনি যদি না একটি PID ফাইল ছাড়া এনকাউন্টার কিছু, মনে রাখবেন যে Monit একটি প্রক্রিয়া স্ট্রিং patern পাশাপাশি নজর রাখতে পারেন


1
ew white- অনেক ধন্যবাদ- তবে আমি যখন পেয়েছি কমান্ডলাইনে চেষ্টা monit procmatch anythingকরি monit: invalid argument -- procmatch। কোন ধারনা?
ইয়ারিন

আপনি মনিটের কোন সংস্করণ ব্যবহার করছেন? (প্রকার monit -V) কোন ওএস / বিতরণ?
ew white

5.1.1 সেন্টোস 6
ইয়ারিনে

এছাড়াও, একাধিক নন-ডেমন প্রক্রিয়াগুলির জন্য আমার বিকল্পগুলি কী হবে? আপনি এই উত্তর
ইয়ারিন

দেখে মনে হচ্ছে @yarin মত আপনার কাছ থেকে Monit আছে EPEL সংগ্রহস্থলের । আরপিএমফোর্স থেকে EL6 এর সংস্করণ 5.4।
ew white

1

আর একটি পদ্ধতি আমি গ্রহণ করেছি:

আমার এম্বেড মোডে একটি ডাটাবেস সার্ভার চলছে এবং ডেটা রয়েছে এমন অ্যাপ্লিকেশনটির ডিরেক্টরিতে থাকা।

ডাটাবেসটিতে একটি .pid ফাইলের মতো কিছু রয়েছে তবে এটি এটিকে লক ফাইল বলে। এই লক ফাইলটি সনাক্ত করতে, আমি অ্যাপ্লিকেশনটির দ্বারা উন্মুক্ত সমস্ত ফাইল তালিকাভুক্ত করেছি:

$ ls -l /proc/18264/fd | cut -d'>' -f2

এটি আমাকে সকেট, পাইপস, সার্ভার ফাইলগুলি সহ একটি দীর্ঘ তালিকা দিয়েছে Fe কয়েকটি ফিল্টার এবং আমার যা দরকার তা পেয়েছি:

$ ls -l /proc/18264/fd | cut -d'>' -f2 | grep /home/ | cut -b40- | sort | uniq | grep titan

/windup/reports/group_report.LJfZVIavURqg.report/graph/titangraph/00000000.jdb
/windup/reports/group_report.LJfZVIavURqg.report/graph/titangraph/je.info.0
/windup/reports/group_report.LJfZVIavURqg.report/graph/titangraph/je.info.0.lck
/windup/reports/group_report.LJfZVIavURqg.report/graph/titangraph/je.lck
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.