init.d স্ক্রিপ্ট স্টার্টআপে চলছে না


15

আমি আমার ডেডিকেটেড সার্ভারে স্ক্রিন ব্যবহার করে কিছু কাউন্টার-স্ট্রাইক গেম সার্ভার হোস্ট করছি। সার্ভারগুলি শুরু / বন্ধ করতে চাইলে আমার এই স্ক্রিপ্টটি রয়েছে:

#! /bin/sh
# /etc/init.d/css-server
#

case "$1" in
  start)
    echo "Starting Nullus Imprimis war server..."
    screen -A -m -d -S css-war-server /home/css-servers/war-server/css/srcds_run -game cstrike +map de_dust2 +maxplayers 16 -autoupdate -port 2555 -tick 100 
    echo "Nullus Imprimis war server started"
    echo "Starting Nullus Imprimis pub server #1..."
    screen -A -m -d -S css-pub-server-1 /home/css-servers/pub-server-1/css/srcds_run -game cstrike +map de_dust2 +maxplayers 32 -autoupdate -port 2666 -tickrate 100
    echo "Nullus Imprimis pub server #1 started"
    ;;
  stop)
    echo "Stopping Nullus Imprimis war server..."
    screen -S css-war-server -X quit
    echo "Nullus Imprimis war server stopped"
    echo "Stopping Nullus Imprimis pub server #1..."
    screen -S css-pub-server-1 -X quit
    echo "Nullus Imprimis pub server #1 stopped"
    ;;
  *)
    echo "Usage: /etc/init.d/css-servers {start|stop}"
    exit 1
    ;;
esac

exit 0

আমি এই স্ক্রিপ্টটিকে (ডাকা css-servers) /etc/init.d/রেখেছি এবং আমার জ্ঞানের অর্থ এই যে সিস্টেমটি বুট হয়ে গেলে এটি চালিত হয়। তবে যখন আমি ব্যবহার করে সক্রিয় স্ক্রিনগুলি পরীক্ষা করি তখন কোনওটিই screen -lsচলমান না।

উবুন্টু সার্ভারের অধীনে আমি কীভাবে এইগুলি চালিয়ে যেতে পারি?

উত্তর:


33

স্ক্রিপ্টটি উপস্থিত /etc/init.dথাকা এটির শুরুতে চালানোর জন্য পর্যাপ্ত নয়।

এটি আপনার স্টার্টআপে যুক্ত করতে আপনাকে উবুন্টুকে এটি সম্পর্কে বলতে হবে:

sudo update-rc.d css-servers defaults

এটা তোলে তারপর, এক্সিকিউটেবল বিট সেট ইত্যাদি প্যাকেজগুলি যে আপনার থেকে ইনস্টল পরবর্তী বুট শুরু করা উচিত যদি স্ক্রিপ্ট সঠিকভাবে, ফর্ম্যাট করা হয়েছে apt-get/ সফ্টওয়্যার সেন্টার স্বয়ংক্রিয়ভাবে এই আদেশ বা তোমার জন্য তার সমতুল্য চালানোর জন্য, যে কারণে আপনি সাধারণত চিন্তা করতে হবে না এটি সম্পর্কে।

আপনি যদি তাৎক্ষণিকভাবে এটি শুরু করতে চান তবে আপনি সরাসরি কল করতে পারেন:

sudo service css-servers start

এটি অত্যন্ত বিস্ময়কর। এই বিন্দু অবধি আমার স্ক্রিপ্টটি এই update-rc.dআদেশ না দিয়ে স্টার্টআপে চলবে । আমি আমার স্ক্রিপ্ট আপডেট করেছি তখন আমি এই কমান্ডটি চালনা না করে এটি আর চলবে না। ধন্যবাদ। যাইহোক, আমরা কীভাবে এটি স্টার্টআপে চালানো থেকে "নিবন্ধন" করতে পারি (যেমন আপডেট-আরসি.ডি দিয়েছিলাম)?
নিকস

1
@ নিক-লিজ এই প্রশ্নোত্তরটি উবুন্টুর পুরানো এবং অপ্রচলিত সংস্করণগুলিকে বোঝায় যা আপস্টার্ট ব্যবহার করে। এটি আর ব্যবহার করা উচিত নয়, পরিবর্তে বর্তমান সিস্টেমড (যা সম্পূর্ণ ভিন্ন পরিষেবা সিস্টেম ব্যবহার করে) ব্যবহার করা উচিত।
মাইকেল হ্যাম্পটন

7

আপনি প্রথম অংশ সম্পন্ন করেছেন। /etc/init.dসূচনা স্ক্রিপ্টগুলি এখান থেকে চালিত হয়। তবে এগুলি স্বয়ংক্রিয়ভাবে চালানো হয় না।

প্রতীকী লিঙ্ক /etc/rc*.dডিরেক্টরিগুলি দ্বারা নির্দিষ্ট হিসাবে সেগুলি চালিত হয় । প্রতিটি রান স্তরের নিজস্ব ডিরেক্টরি রয়েছে। শুরু হওয়া লিঙ্কের নামগুলির সাথে স্ক্রিপ্টগুলি Kস্টপ Sপ্যারামিটার দিয়ে চালানো হয় এবং নামগুলির সাথে শুরু হওয়া সূচনা প্যারামিটার দিয়ে চালানো হয়। কনভেনশন দ্বারা ফাইলের নামগুলি শুরু হয় Kবা Sতারপরে সিকোয়েন্সিংয়ের জন্য ব্যবহৃত দুটি সংখ্যার নম্বর এবং এর মধ্যে স্ক্রিপ্টের নামের সাথে শেষ হয় /etc/init.d

লিঙ্কগুলি ম্যানুয়ালি তৈরি করা যেতে পারে তবে সাধারণত স্ক্রিপ্ট দিয়ে তৈরি করা হয়। জেনেরিক স্ক্রিপ্ট update-rc.dউবুন্টুতে উপলব্ধ। কমান্ডটি man update-rc.dআপনাকে এটি ব্যবহার করার জন্য ডকুমেন্টেশন দেবে। আপনার ক্ষেত্রে চেষ্টা করুন:

sudo update-rc.d css-servers defaults

এটিকে স্ক্রিপ্ট ব্যবহার করে শুরু করতে চেষ্টা করুন:

sudo /etc/init.d/css-servers start

স্ক্রিপ্টটি পছন্দসইভাবে কাজ করছে তা নিশ্চিত করার জন্য আমি সাধারণত সার্ভারটি শুরু করে থামি। তারপরে আমি update-rc.dএটিকে /etc/rc.dরানলেভাল ডিরেক্টরিতে যুক্ত করতে দৌড়েছি ।


1

আপনি যদি কোনও পরিষেবা না পান তবে কেন আপনার পরিষেবা বুটে চালু হচ্ছে না। যাইহোক, এটা সঠিকভাবে কাজ করে যখন আপনি নিজে পরিষেবা শুরু করার চেষ্টা service <your service> start। সেক্ষেত্রে কিছু ফাইলে স্ট্যান্ডার্ড আউটপুট এবং ত্রুটি আউটপুট পুনর্নির্দেশের চেষ্টা করুন। সিস্টেম বুট করার সময় এটি কেন শুরু হচ্ছে না তা আপনাকে কিছুটা ক্লু দিতে পারে।

যেমন আপনার স্ক্রিপ্ট ভিতরে

case "$1" in
  start)
    echo "Starting Service "
    <your command to start the service > /tmp/bootservice.log 2>&1
    ;;
  stop)
    echo "Stopping Service "
    <your command to start the service > /tmp/bootservice.log 2>&1
    ;;
  *)
    echo "Usage: /etc/init.d/test {start|stop}"
    exit 1
    ;;
esac

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