একটি প্রোগ্রাম চলমান 100 দৃষ্টান্ত বজায় রাখুন


12

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

তবে মনে হচ্ছে এটি বৃহত সংখ্যক (> 300 প্রসেস) বজায় রাখার জন্য লড়াই করছে এবং আমি প্রতিস্থাপনের সন্ধান করছি। মনিট যা করতে চাইবে তা মনে হচ্ছে না কারণ এটি পৃথক স্ক্রিপ্টগুলি পর্যবেক্ষণ করে এবং একই স্ক্রিপ্টের 100 টি উদাহরণ সহজেই দেখতে সক্ষম হবে বলে মনে হয় না।

আমি ব্যবহার করতে পারি একটি আলাদা সরঞ্জাম সম্পর্কে কোন পরামর্শ?


এই স্ক্রিপ্টগুলি কী করছে এবং আপনি কেন একাধিক উদাহরণ চান? এগুলি কি বিভিন্ন যুক্তি / পরিবেশ নিয়ে চালিত হচ্ছে বা কী?
psusi

1
একটি সহজ বাশ স্ক্রিপ্ট কাজ করবে? এর মতো কিছু ... স্ক্রিপ্ট প্রক্রিয়াগুলির সংখ্যা গণনা করুন, যদি 100 এরও কম হয়, তবে যে সংখ্যাটি অনুপস্থিত তা শুরু করবেন?
গ্যাবে

3
তুমি অর্জন করার জন্য কি চেষ্টা করতেছ? 300 টির কিছু প্রক্রিয়া কেন মারা যাচ্ছে? আপনার কাজটি সম্পাদন করার জন্য সম্ভবত আরও ভাল উপায় আছে, এর মধ্যে সবচেয়ে কম নয় তবে যদি কোনও স্ক্রিপ্ট চলার 299 টি উদাহরণ 300 এর চেয়ে কম ভাল হয় তবে আপনার অ্যাপ্লিকেশন আর্কিটেকচারের সাথে কিছু ত্রুটিযুক্ত রয়েছে। পুনরায় আরম্ভ করার প্রক্রিয়াগুলি যেগুলি কেন মারা গিয়েছিল তা না বুঝে তারা মারা যায় এবং প্রায়শই কেবল অন্য মৃত্যুর ফলস্বরূপ ঘটে এবং ফলস্বরূপ প্রচুর ওভারহেড ব্যয় করে।
এমএসডব্লু

আমি এখানে একটি উত্তরাধিকার ব্যবস্থা নিয়ে কাজ করছি যা ইউআরএলগুলির প্রক্রিয়াজাতকরণ করছে এবং প্রত্যেকের নিজস্ব থ্রেডের প্রয়োজন (পিএইচপিতে লিখিত হচ্ছে)। হ্যাঁ, স্থাপত্যটি ত্রুটিযুক্ত, তবে এখনও এটির সাথে কাজ করতে হবে ... এই মুহুর্তে একটি নতুন নিয়ে কাজ করা :)
জং

উত্তর:


1

তুমি ব্যবহার করতে পার:

ps h --ppid $$ | wc -l

বাশ স্ক্রিপ্ট থেকে শিশু প্রক্রিয়াগুলির সংখ্যা পেতে (মনে রাখবেন এতে পিএস অন্তর্ভুক্ত রয়েছে)। সুতরাং আপনি যদি 1000 টি প্রক্রিয়া রাখতে চান তবে এটি 1001 ফেরায় কিনা তা পরীক্ষা করে দেখুন not

cmd &

যাতে এগুলি বর্তমান স্ক্রিপ্টের শিশু হিসাবে চালিত হয় (এবং সেইজন্য গণনায় অন্তর্ভুক্ত হয়) একটি জিনিস মনে রাখতে হবে আপনি যদি অন্য প্রক্রিয়াগুলি তৈরি করে থাকেন তবে আপনার psযে প্রক্রিয়াগুলি চান তা ফিল্টার করার জন্য আপনাকে কমান্ডটি পরিবর্তন করতে হবে ।

প্রথম কমান্ডটি ধাঁধার মূল অংশ, আপনার স্ক্রিপ্ট না হওয়া পর্যন্ত এটি আরও কিছুটা হওয়া উচিত।


0

আমি pgrep|wc -lবা সাধারণ শেল স্ক্রিপ্টে এর মতো কিছু ব্যবহার করব । প্রতিটি চেকের মধ্যে এক সেকেন্ড (বা যদি আপনি চান লিনাক্সে কম) অপেক্ষা করুন sleep


0

যদি আপনার স্ক্রিপ্টটি মারা যায় এবং কেবল শেলের কাছে ফিরে যায় তবে আপনি প্রতিটি উদাহরণের জন্য একটি র‌্যাপার স্ক্রিপ্ট ব্যবহার করতে পারেন:

while [ 1 == 1 ] ; do /path/to/script ; done

অথবা আপনি এমন কিছু মোড়ক লিখুন যা স্ক্রিপ্টগুলিকে কাঁটাচামচ করে এবং wait/waitpidমৃত প্রক্রিয়াগুলি ধরতে ব্যবহার করে।


1
স্ক্রিপ্টটিতে কিছুটা টার্মিনাল-সর্বদা ব্যর্থ হওয়া অবস্থায় (স্লাইস পূর্ণ রয়েছে, কনফিগারেশন ফাইলটি পড়তে পারে না ইত্যাদি) কমপক্ষে আমি সেখানে অন্তত একটি নিক্ষেপ করব Otherwise নাহলে আপনার 100 টি প্রক্রিয়া বন্ধ হয়ে যেতে পারে সিপিইউয়ের টুকরো জন্য। অতিরিক্ত হিসাবে - 100 * (ব্যশ প্রক্রিয়া + ব্যর্থ অ্যাপ্লিকেশনটির প্রাথমিক প্রারম্ভিক পাদদেশের ছাপ) == সম্ভাব্যভাবে একটি অযৌক্তিক পরিমাণ মেষ)
সংশ্লেষণকারী
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.