আমি কীভাবে পটভূমিতে পাইথন স্ক্রিপ্টটি চালাব এবং ক্রাশের পরে এটি পুনরায় চালু করব?


10

আমার কাছে খুব সাধারণ পাইথন স্ক্রিপ্ট রয়েছে যা আমি আমার উবুন্টু 12.04 সার্ভারে সর্বদা চলতে চাই। আমি আপস্টার্ট + মনিট ব্যবহার করার কথা ভেবেছিলাম। সমস্যাটি হ'ল tools সরঞ্জামগুলি আমার মতো সাধারণ নশ্বরর জন্য বরং জটিল বলে মনে হয় এবং আমি ওয়েবে কোনও সাধারণ উদাহরণ খুঁজে পাই না।

আপস্টার্ট + মনিট ওভারকিল? কেউ কি আরও সহজ বিকল্প, বা আপস্টার্ট + মনিটের জন্য একটি ভাল টিউটোরিয়াল জানেন? আমি যদি নিশ্চিত হতে চাই যে স্ক্রিপ্টটি সর্বদা চলমান থাকে তবে কি মনিট আদৌ প্রয়োজন?


রেফারেন্সের জন্য, ঠিক একই প্রশ্নটি এখানে জিজ্ঞাসা করা হয়েছিল: superuser.com/q/461546/786969
পিএইচপিরেট

উত্তর:


16

এটি করার সহজ উপায় হ'ল এটি /etc/init/something.conf:

start on runlevel [2345]
stop on runlevel [016]

respawn
exec python /path/to/your/script.py

রেসপাউন এটি মেরে ফেলা হলে বা অ-শূন্য থেকে বেরিয়ে আসার পরে এটি ব্যাক আপ শুরু করবে (অপ্রকাশিত ব্যতিক্রমের মতো)। এটি উবুন্টু 10.04 এ ফিরে কাজ করবে।

আপনার যদি 12.04 থাকে তবে আপনি আরও অভিনবতা পেতে পারেন। উপরেরটি আপনার স্ক্রিপ্টটি রুট হিসাবে চালাবে। 12.04 এ আপনি সেটুইড / সেটজিড যুক্ত করতে পারেন:

start on runlevel [2345]
stop on runlevel [016]

respawn
setuid nobody
setgid nogroup
exec python /path/to/your/python.py

যদি কোনও নেটওয়ার্ক উপলব্ধ না থাকে এবং আপনার অস্থির নেটওয়ার্ক সংযোগে এটি চালানোর পরিকল্পনা করার সময় যদি আপনার স্ক্রিপ্টটি প্রস্থান হয় তবে ভাল, আপনার এটি ঠিক করা উচিত এবং কেবল এটিকে জীবন্ত / পুনরায় চেষ্টা করা উচিত। তবে আপনি যদি এটি না করতে পারেন, যখনই কোনও নেটওয়ার্ক ডিভাইস আসে তখন আপনাকে এটিকে ম্যানুয়ালি শুরু করার দরকার হতে পারে। সুতরাং আপনি এটি স্থাপন করতে পারেন /etc/network/if-up.d/yourscript(chmod + x দিয়ে এটি নির্বাহযোগ্য করুন)

#!/bin/sh
exec start wait-for-state WAITER=$IFACE-yourscript WAIT_FOR=something

আপনার স্ক্রিপ্টটি যেখানে এই নির্দিষ্ট স্ক্রিপ্টের জন্য কেবল স্বেচ্ছাসেবী এবং অনন্য কিছু, এবং "কিছু" কাজের কাজের নামের মতো (যেমন /etc/init/something.confআগে প্রস্তাবিত হিসাবে )।


হ্যাঁ! সুতরাং এই upstartসঠিক ব্যবহার করা হয় ? এর অর্থ কি স্ক্রিপ্টটি বুটে শুরু হবে (যা দুর্দান্ত হবে!)? এবং respawnযথেষ্ট যাতে আপনার সেটআপ করার দরকার নেই monit?
সেপ্টিক

হ্যাঁ, 'স্টার্ট অন রানলেভেল [2345]' এর অর্থ সিস্টেমটি "মাল্টি ইউজার মোড" প্রবেশ করে time দীর্ঘমেয়াদে 'নেটওয়ার্ক-পরিষেবাদি শুরু করা' এবং 'নেটওয়ার্ক-পরিষেবাগুলি থামিয়ে দেওয়া বন্ধ করুন' এর মতো জিনিসগুলির সাথে খুব পুরানো ইউনিক্সি "রানলেভেল" প্রতিস্থাপন করার পরিকল্পনা রয়েছে যাতে এটি আরও যুক্তিযুক্তভাবে পড়তে পারে।
স্প্যাম্যাপস

অসাধারণ ! অনেক অনেক ধন্যবাদ যে আমার প্রয়োজন ঠিক তাই।
সেপ্টপিক

2

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

এছাড়াও আপনি while [ 1 ]; do phyton-script.ph; doneস্ক্রিপ্টটি ফিরে আসার পরে পুনরায় চালু করতে পারে এমন একটি সাধারণ উইচ করতে পারেন।

আরও সম্ভাবনার জন্য দয়া করে আপনার স্ক্রিপ্টে আরও তথ্য সরবরাহ করুন। বিশেষত আপনি কেন এটি থেকে প্রস্থান বা অপ্রত্যাশিতভাবে ক্র্যাশ হওয়ার প্রত্যাশা করছেন।


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

আপনার অনুরূপ উত্তর (যা আমি মেনে নিয়েছি): superuser.com/questions/461546/…
sebpiq

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