আপস্টার্ট স্ক্রিপ্ট এবং স্টার্ট-স্টপ-ডেমন


8

আমার একটি সমস্যা ছিল যেখানে একটি আপস্টার্ট স্ক্রিপ্ট তৈরি করা স্ক্রিপ্টটিকে একাধিকবার কল করতে পারে, যার ফলে আমার আইআরসিডি প্রায় 8 বার বা আরও প্রায় স্পোন করতে পারে। এটি সংশোধন করার জন্য, আমি স্টার্ট-স্টপ-ডেমন ব্যবহার করেছি:

description "IRC Daemon Upstart Script"

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

respawn

nice -5

exec start-stop-daemon --start --chuid ircuser --chdir /home/ircuser/inspircd/run --exec /home/ircuser/inspircd/run/bin/inspircd -- --config=/home/ircuser/inspircd/run/conf/inspircd.conf

আমি ঠিক যেমন এটি চাই ঠিক তেমন কাজ করে:

stop ircd

বলে যে এটি এটিকে থামায়, তবে অনুপ্রেরণাটি পরে চলছে।

স্টার্ট-স্টপ-ডিমন ব্যবহারের চেয়ে আরও ভাল কোনও উপায় আছে যা স্ক্রিপ্টটি 8 টি ইনস্ট্যান্স খোলার থেকে থামিয়ে দেবে, বা কোনও উপায় আছে যে আমি এটি স্টার্ট-স্টপ-ডিমনটির সাথে সামঞ্জস্য করতে পারি?

উত্তর:


6

আমি পুরোপুরি নিশ্চিত হতে পারি না তবে অনুপ্রেরণাটি যখন চালিত হয় তখন উপায়টি বেরিয়ে আসতে পারে তাই আপস্টার্ট জানেন না এর পিআইডি আসলে কোথায় really যদি এটি হয় তবে এটি ঠিক করা যেতে পারে কারণ আপস্টার্টের কাঁটাচামচ প্রক্রিয়াগুলি পরিচালনা করার জন্য দুটি স্টাঞ্জ রয়েছে:

  • expect fork এমন প্রক্রিয়াগুলি ক্যাচ করে যা একবার কাঁটাচামচ করে (ইমো, সম্ভবত এখানে মামলা)।
  • expect daemonদু'বার কাঁটাচামচ করে এমন জিনিসগুলি ধরা ... যা এটি করতে পারে।

সুতরাং এটি চেষ্টা করুন:

description "IRC Daemon Upstart Script"

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

respawn
expect fork

nice -5

exec su bash -c "cd /home/ircuser/inspircd/run; /home/ircuser/inspircd/run/bin/inspircd -- --config=./conf/inspircd.conf" ircuser

এবং যদি এটি কাজ করে না, suকমান্ড লাইন থেকে এটি কাজ করে তা নিশ্চিত করার জন্য আমার- স্টেটমেন্টটি পরীক্ষা করে দেখুন এবং তারপরে পরিবর্তন expect forkকরে expect daemonএটিকে আরও ঘূর্ণি দেয়।


bashমোড়ক সম্পাদনা করা ভাল এর চেয়ে আরও বেশি ক্ষতি করছে। এটি একটি ভাল নির্বাহক হতে পারে:

exec sudo -u ircuser /home/ircuser/inspircd/run/bin/inspircd -- --config=/home/ircuser/inspircd/run/conf/inspircd.conf

ধন্যবাদ! এটি আরও ঝরঝরে কাজ করে এবং হ্যাঁ expect forkসমস্যাটি ঠিক করেছে। তবে, আমি এখনও 'স্টপ আইর্ডিড' কল করতে পারি না এবং স্ক্রিপ্টটি বন্ধ করে দিতে পারি। যাইহোক, আমি এটি ছাড়াই পরিচালনা করব (পিএস অক্স, কিল), তবে আপনি যদি নিজের উত্তরটি সংশোধন করতে পারেন তবে এটি করার একটি উপায় অন্তর্ভুক্ত করার জন্য আমি উবুন্টু ব্যবহারকারী হব;)
লিয়াম ডসন

হুম - আপনি যখন sudo start ircdএটি চালান তখন একটি পিআইডি আউটপুট করা উচিত। যদি আপনি ps(যেমন ps u -p <PID>:) এর শেষে এটি আটকে থাকেন তবে এটি কি কোনও প্রক্রিয়াটি বোঝায় যা বোঝায়? যদি এটি এখনও পিআইডিটির ট্র্যাক হারাতে না পারে তবে আপনি চেষ্টা করতে পারেনexpect daemon
অলি

আসলে এটি কোনও পিআইডি আউটপুট দেয় না, কিছু কনসোল আউটপুট। ওহ ভাল, ps aux, kill <pid>, কাজ করে জরিমানা আমি আরো বুট স্ক্রিপ্ট শুরু উপার্জন, যা এটা আছে সম্পর্কে উদ্বিগ্ন ছিল। ধন্যবাদ!
লিয়াম ডসন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.