শাটডাউন হুক বানানোর সেরা উপায়?


9

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

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

আমি মনে করি আমি এটি একটি আপস্টার্ট চাকরির মাধ্যমে সমাধান করতে পারি যা শাটডাউনে চালিত হবে, তবে আমি নিশ্চিত না যে আমার কোন অনুষ্ঠানটি কোন পদ্ধতিতে ব্যবহার করা উচিত। এখনও অবধি আমি নীচের (আংশিক বিপরীতে) বিবৃতি পড়েছি:

  • আপস্টার্টে কোনও সাধারণ শাটডাউন ইভেন্ট নেই
  • start on starting shutdownকাজের সংজ্ঞা মত একটি স্তবক ব্যবহার করুন
  • start on runlevel [06S]কাজের সংজ্ঞা মত একটি স্তবক ব্যবহার করুন
  • start on starting runlevel [06S]কাজের সংজ্ঞা মত একটি স্তবক ব্যবহার করুন
  • start on stopping runlevel [!06S]কাজের সংজ্ঞা মত একটি স্তবক ব্যবহার করুন

এই সুপারিশগুলি থেকে, নিম্নলিখিত প্রশ্নগুলি দেখা দেয়:

  • উবুন্টুর উজানে কোনও সাধারণ শাটডাউন ইভেন্ট নেই বা নেই?
  • "শাটডাউন হুক" প্রয়োগের প্রস্তাবিত উপায় কী?
  • ইভেন্টগুলি রানলেভেল [x] কখন ট্রিগার হয়; রানলেলে প্রবেশ করার সময় বা রানলেলে প্রবেশ করার সময় এটি কি?
  • আমরা ভালো কিছু ব্যবহার করতে পারি start on starting runlevel [x]বা start on stopping runlevel [x]?
  • আমার সমস্যার সর্বোত্তম সমাধান কী হবে?

আপনাকে অনেক ধন্যবাদ

উত্তর:


2

startingএবং runlevelপৃথক ঘটনা, তাই আপনি অর্থপূর্ণভাবে বলতে পারবেন না starting runlevel N

runlevel Nঘটনা রান-লেভেল লিখে শুরুতে নির্গত হয়। আপনি যদি start on runlevel Nতারপর আপনার কাজ এন্ট্রি চালানো। রানলেভলে প্রবেশ শেষ হলে দৌড়ানোর উপায়টি হল run on started rc RUNLEVEL=N

আমি এটি বুঝতে পেরেছি, আপনি যা start on runlevel [06S]চান তা করতে একটি দরকার ; এটি তত্ত্বগতভাবে অন্য কিছু বন্ধ হওয়ার আগে চালানো উচিত। সূক্ষ্ম নিয়ন্ত্রণের জন্য আপনি ব্যবহার করতে পারেন start on stopping apache or stopping mysql or ...যাতে তাদের কোনওটি বন্ধ করার অনুমতি দেওয়ার আগেই আপনার টাস্কটি চলে।


রানলেভেল 5 থেকে এস-তে পরিবর্তন করতে সম্পাদিত


1
এছাড়াও, বিশিষ্ট startupইভেন্টের একমাত্র কারণ হ'ল "পাম্পটিকে প্রাইম" করার জন্য কিছু দরকার। এর পরে একটি সুবিধাপ্রাপ্ত ইভেন্ট প্রেরণ করা হয়, অন্য যে কোনও কিছু হতে পারে এবং তা কাজ ও কার্য সম্পাদন দ্বারা সংজ্ঞায়িত হতে পারে startup। কোনও একক shutdownইভেন্ট না হওয়ার shutdownজন্য, এর অর্থপূর্ণ হওয়ার জন্য বিভিন্ন ধরণের অনেকগুলি রয়েছে । আপনার যে কাজগুলি চালানো দরকার তা সরাসরি নির্ভর করা ভাল।
গাইকোসর 21

আপনাকে অনেক ধন্যবাদ. আমি কৃতজ্ঞতার সাথে আপনার উত্তরটি গ্রহণ করছি কারণ এটি আমার প্রশ্নের উত্তর দেয় এবং সমস্যা সমাধান করে। তবুও, আমার একটি অতিরিক্ত প্রশ্ন / মন্তব্য আছে (যা কোনও সমস্যার সাথে সম্পর্কিত নয়, যদিও): আফাইক, রানলেভেল ধারণাটি সম্পূর্ণরূপে প্রতিস্থাপন করা আপস্টার্টের লক্ষ্য। বিশ্বব্যাপী শাটডাউন হুক পেতে আমাদের রানলেভের উপর নির্ভর করা দরকার এই লক্ষ্যটি এই লক্ষ্যের সাথে বৈপরীত্য। আমি মনে করি আপস্টার্টকে এই জাতীয় একটি ইভেন্ট চালু করতে হবে। আমি পরিষ্কারভাবে বুঝতে am এটি কাজ আমরা সত্যিই প্রয়োজন উপর নির্ভর করে ভালো হতে পারে, কিন্তু অন্য দিকে, আমার ক্ষেত্রে, এটা কাজ আভা ... চলছে ... হয়
Binarus

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

আপস্টার্ট হার্ডকডযুক্ত রানলেভেলগুলি প্রতিস্থাপন করেছে ; আমি যতদূর নির্ধারণ করতে পারি, রানলেভেল ধারণাটি চলে যাচ্ছে না, এটি এখন ইউজারস্পেসে সংজ্ঞায়িত হয়েছে। আপনি যদি এত দীর্ঘ মেয়াদে উদ্বিগ্ন হন তবে আপনার যে on stopping servicea or stoping serviceb or ...কোনও পরিষেবায় চালনার দরকার রয়েছে তা চালানোর জন্য আপনি আমার শেষ পরামর্শটি ব্যবহার করতে চান ।
গাইকোসৌর

বেশ কয়েকটি অপ্রাপ্তির জন্য -1। ফ্ল্যাট আউট, এটি আসলে কাজ করবে না। স্টার্ট অন আরসি রুনলেভেল = [016] এর চেয়ে আলাদা নয় 'রানলেভেল স্টপ [016]'। এটি কারণ যে কোনও ঘটনাই শাটডাউনটি এগিয়ে যাওয়া থেকে বিরত রাখবে না। অবৈধ সিনট্যাক্সও রয়েছে, কারণ 'রান অন' বৈধ নয়। এই সমস্ত কিছুই কেবল সমস্যাটিকে বিভ্রান্ত করে, এটি আসলে সহায়তা করে না। দুঃখিত যে এই এত দেরী! শুধু পুরানো উত্তর পর্যালোচনা।
স্প্যাম্যাপস

2

আপনার কাজ বন্ধ হয়ে যাওয়ার পরে শাটডাউনটি অগ্রসর হতে বাধা দেওয়ার জন্য, আপনি এটি ব্যবহার করতে চাইবেন:

stop on starting rc RUNLEVEL=[016]

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

আপনি নিশ্চিত করতে চাইবেন যে আপনার প্রক্রিয়াটি সাইনটারমে দ্রুত সাড়া দেয়। যদি এটি 5 সেকেন্ডের মধ্যে সাড়া না দেয় তবে আপস্টার্ট এটি সিক্কিল প্রেরণ করবে। আপনি 'কিল টাইমআউট এক্স' দিয়ে এটি বাড়াতে পারেন।

সেখানে থাকা 1, বিটিডাব্লুটি কিছুটা জটিল, আপনাকে নিশ্চিত করতে হবে যে আপনার শুরুতে এমন কিছু রয়েছে যা রানলেভেল [2345] থেকে শুরু হয় সেই সময়ে, যাতে একক ব্যবহারকারী মোড রক্ষণাবেক্ষণের জন্য নেমে আসা কোনও ব্যবহারকারী আবার তাদের কাজ শুরু করে। ভাগ্যক্রমে প্রচুর কাজ এটিকে প্রস্তাবিত যথারীতি শুরু করতে চলেছে

start on runlevel [2345]

এছাড়াও কিছু ক্ষেত্রে আপনার নেটওয়ার্কের অবতরণ না হওয়া অবধি চালিয়ে যাওয়ার জন্য কিছু দরকার (যেমন ডিবিএস / নেটওয়ার্ক-ম্যানেজার)। তার জন্য আপনি চান

stop on deconfiguring-networking

এটি শাটডাউন পরবর্তী সময়ে নির্গত একটি ইভেন্ট যা এটি ব্যবহার করে এমন কোনও চাকরি রাষ্ট্রের মধ্যে পুরোপুরি তাদের ট্রানজিশন সম্পূর্ণ না হওয়া পর্যন্ত অবরুদ্ধ থাকবে।


আপনি কি বলতে চাইছেন start on starting ... যে আমার শাটডাউন হুক কোনও কিছু বন্ধ করে দেওয়া খুব বেশি অর্থবোধ করে না। start on starting rc RUNLEVEL=[016]আরো অনেক কিছু জানাতে হবে। এবং taskঅন্যান্য জিনিস চালানোর আগে এটি সম্পূর্ণ হতে পারে তা নিশ্চিত করার জন্য সেখানে ছুঁড়ে ফেলে দেওয়া হতে পারে।
তেজয় কার্ডন

0

গীকোসর, আপনার সহায়তার জন্য আপনাকে অনেক ধন্যবাদ।

ইতিমধ্যে, আমি start on runlevel [016]পদ্ধতিটি চেষ্টা করেছি , তবে এটি কার্যকর হয়নি এবং আমি মনে করি কেন আমি বুঝতে পেরেছি:

কাজটি সত্যিই শুরু করা হয়েছে, তবে কাজের কাজ শেষ না হওয়া পর্যন্ত শাটডাউন প্রক্রিয়া অবরুদ্ধ করা হয়নি। আমি এখন পুরোপুরি নিশ্চিত যে ইভেন্টগুলি startingএবং stoppingএকমাত্র ইভেন্ট যা অন্য কাজগুলিকে ব্লক করার জন্য কোনও কাজের সংজ্ঞা হিসাবে ব্যবহার করা যেতে পারে এবং আমি মনে করি যে এটি আপস্টার্টের ম্যানুয়াল আমাদের বলার চেষ্টা করেছে। সুতরাং, রানলেভেল ইভেন্টটি ব্যবহার করা কখনই অন্য কাজ বা শাটডাউন প্রক্রিয়াটিকে ব্লক করতে পারে না; সুতরাং, এটি আমার উদ্দেশ্য জন্য অকেজো।

পরিবর্তে, আমার কাছে দুটি সম্ভাবনা রয়েছে বলে মনে হচ্ছে:

  1. আপনার প্রস্তাবগুলির মধ্যে একটি অনুসরণ করে, প্রতিক্রিয়াশীল অ্যাপ্লিকেশনগুলির প্রয়োজনীয় সমস্ত চাকরি সন্ধান করুন এবং স্ক্রিপ্টের জন্য প্রারম্ভ ইভেন্টে তাদের সকলকে অন্তর্ভুক্ত করুন:

    start on stopping job1 or stopping job2 or ...
    

    এটি এত বেশি কাজ যে আমি চাকরির তালিকাটি ছুঁড়ে মারার এবং সিডের মাধ্যমে এটি চালানোর কথা ভাবছি যা স্বয়ংক্রিয়ভাবে আমার কাজের জন্য একটি প্রারম্ভিক স্তরের কাজ তৈরি করে যার মধ্যে রয়েছে সমস্ত কাজ যা সাধারণত সিস্টেমে চলছে includes

    সুবিধাটি হ'ল যে কেউ যদি পূর্বশর্তগুলির একটি নিজে থেকে বন্ধ করে দেয় (রানলেভেল পরিবর্তন / শাটডাউন / রিবুট দ্বারা এগুলি থামানোর বিরোধিতা করে) তখনও সংশ্লিষ্ট অ্যাপ্লিকেশনগুলি বন্ধ হয়ে যাবে।

  2. সিস্টেমটি পুনরায় চালু / বন্ধ করার সময় প্রথমটি বন্ধ করা হবে এমন একটি সন্ধান করুন (আসুন আমরা এই কাজটিকে "ফার্স্টজব" বলি) এবং সেই চাকরিটি একটি স্তরে ব্যবহার করুন যেমন:

    start on stopping FirstJob
    

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

আমি নিশ্চিত নই যে দুটি সম্ভাবনার মধ্যে কোনটি আরও ভাল ...


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