বুটে স্বয়ংক্রিয়ভাবে কোনও অ্যাপ্লিকেশন কীভাবে শুরু করবেন


27

আমি লিনাক্সে নতুন এবং অ্যাপ্লিকেশন শুরু করার অপেক্ষায় রয়েছি (যা প্রতি 10 সেকেন্ডে শীর্ষে টোগল করে)। আমি অ্যাপ্লিকেশন প্রোগ্রাম লিখেছি এবং এটি ভাল কাজ করছে তবে এখন আমি এটি স্বয়ংক্রিয়ভাবে বুটে শুরু করতে চাই।

ডকুমেন্টেশন এখানে থেকে প্রারম্ভে স্ক্রিপ্ট কপি করতে বলেছেন /etc/init.dঅনুলিপি স্ক্রিপ্টে ডিরেক্টরি ও একটি সিম্বলিক লিঙ্ক করা rc.dডিরেক্টরি।

এই স্ক্রিপ্ট ফাইলগুলির প্রসার এবং নাম কী হওয়া উচিত? আমরা কীভাবে ম্যানুয়ালি প্রতীকী লিঙ্কটি যুক্ত করতে পারি rc.dবা এর জন্য কোনও নির্দিষ্ট পদ্ধতি রয়েছে?

কোনও পরামর্শ কীভাবে এটি অর্জন করবেন?


শুরুতে কোনও এনআর স্ক্রিপ্ট যুক্ত করার পছন্দের উপায়টি ডিগ্রো দ্বারা পরিবর্তিত হয়। কেউ কেউ এগুলি আপস্টার্ট এবং সিস্টেমেডের পক্ষে ফেজ করে দিচ্ছেন। আমি কেবল পটভূমিতে "&" ব্যবহার করার পরামর্শ দেব না, কারণ ডেবিয়ানের মতো start-stop-daemonএটি আরও ভালভাবে পরিচালনা করে (যদিও এটি প্রোগ্রামটি নিজেই ডিমনাইজড করতে পছন্দ করে)। আপনি কোন ডিস্ট্রো ব্যবহার করছেন? ডেস্কটপ এমআইএমআইএম টাইপের বাইরে ফাইল এক্সটেনশনগুলি * নিক্সে অর্থহীন এবং এর পছন্দসই যে এক্সিকিউটেবলের কাছে এটির একটি নেই।
jordanm

আপনি যদি পেটালগিক্স ব্যবহার করে থাকেন তবে কেবল সেই ডকুমেন্টেশনটি অনুসরণ করুন - কোনও বিশেষ নামের প্রয়োজন নেই, যেমন তারা বলেছেন ঠিক তেমন করুন। তুমি কি চেষ্টা করেছ? আপনার কি কি সমস্যা হচ্ছে? (যদি তা না হয় তবে দয়া করে আপনার ডিসট্রো নির্দিষ্ট করুন এবং আপনি যা চেষ্টা করেছেন তাতে কী কাজ করে না তা ব্যাখ্যা করুন))
ম্যাটের

আমি আরপিআই-এর জন্য ডেবিয়ান “হুইজি” ব্যবহার করছি।
নর্দমা

1
যদি আপনার এটি প্রতি 10 সেকেন্ডে প্রায় প্রয়োজন হয় (অর্থাত 10 সেকেন্ড তীক্ষ্ণ নয়) তবে আপনি cronপরিবর্তে এটি ব্যবহার করতে চাইতে পারেন ।
পিটার্ফ

@ পেটার্ফ: তবে শোনা যাচ্ছে যে প্রোগ্রামটি প্রতি 10 সেকেন্ডে এলইডি টগল করে, প্রতি 10 সেকেন্ডে কার্যকর হওয়া কোনও প্রোগ্রাম নয়।
জোড়োয়ার

উত্তর:


19

এখানে http://www.debian-administration.org/articles/28 এর সংক্ষিপ্তসার যা আপনার প্রশ্নের উত্তর বলে মনে হচ্ছে।

দ্রষ্টব্য: নীচের উদাহরণের স্ক্রিপ্টে start)আপনার প্রোগ্রামটি চালু করতে কেবল " " বিভাগে একটি কল যুক্ত করুন । সিস্টেমটি রিবুট না করে আপনি স্ক্রিপ্টের কার্যকারিতা পরীক্ষা করতে পারেন: পুরো পথ দিয়ে কল করুন এবং এটিকে " start" বা " stop" এর পরামিতি না দিয়ে দিন

এখানে যায়:

সিস্টেম রানলেভেল পরিবর্তিত হয় যখন উদাহরণস্বরূপ বুটআপ এবং শাটডাউন সময় ডেবিয়ান কমান্ড সম্পাদন করার জন্য সিস্ট-ভি এর মতো ইআইডি সিস্টেম ব্যবহার করে।

আপনি যদি মেশিন বুট করার সময় কোনও নতুন পরিষেবা যুক্ত করতে চান তবে আপনাকে ডিরেক্টরিতে প্রয়োজনীয় স্ক্রিপ্ট যুক্ত করা উচিত /etc/init.d/। সেই ডিরেক্টরিতে ইতিমধ্যে উপস্থিত অনেকগুলি স্ক্রিপ্ট আপনাকে কী ধরণের কাজ করতে পারে তার উদাহরণ দেয়।

এখানে একটি খুব সাধারণ স্ক্রিপ্ট যা দুটি অংশে বিভক্ত, সর্বদা চলমান কোড এবং "স্টার্ট" বা "স্টপ" দিয়ে ডাকলে যা কোড চলে runs

#! /bin/sh
# /etc/init.d/blah
#

# Some things that run always
touch /var/lock/blah

# Carry out specific functions when asked to by the system
case "$1" in
  start)
    echo "Starting script blah "
    echo "Could do more here"
    ;;
  stop)
    echo "Stopping script blah"
    echo "Could do more here"
    ;;
  *)
    echo "Usage: /etc/init.d/blah {start|stop}"
    exit 1
    ;;
esac

exit 0

একবার আপনি আপনার ফাইলটিকে সঠিক স্থানে সংরক্ষণ করলে নিশ্চিত হয়ে নিন যে এটি চালিয়ে " chmod 755 /etc/init.d/blah" নির্বাহযোগ্য ।

তারপরে সিস্টেমটি ডাউন হয়ে যাওয়ার সময় বা উপরে এসে স্ক্রিপ্টটি কার্যকর করার জন্য আপনাকে উপযুক্ত প্রতীকী লিঙ্কগুলি যুক্ত করতে হবে।

এটি করার সহজতম উপায় হ'ল ডেবিয়ান-নির্দিষ্ট কমান্ডটি ব্যবহার করা update-rc.d:

root@skx:~# update-rc.d blah defaults
 Adding system startup for /etc/init.d/blah ...
   /etc/rc0.d/K20blah -> ../init.d/blah
   /etc/rc1.d/K20blah -> ../init.d/blah
   /etc/rc6.d/K20blah -> ../init.d/blah
   /etc/rc2.d/S20blah -> ../init.d/blah
   /etc/rc3.d/S20blah -> ../init.d/blah
   /etc/rc4.d/S20blah -> ../init.d/blah
   /etc/rc5.d/S20blah -> ../init.d/blah

আমাকে কি আসলে এই স্ক্রিপ্টটি etc / init.d / এ স্থাপন করতে হবে বা উপরের লাইনটি # /etc/init.d/bla, শেলের কোনও অবস্থান নির্দেশ করে?
ব্যবহারকারী 137717

আমি পেয়ে যাচ্ছি "-শ: আপডেট-আরসি.ডি: কমান্ড পাওয়া যায় নি"
m4l490n

2
নতুন সিস্টেমগুলি systemdবুটআপ কনফিগারেশন সহ অনেক কিছুর জন্য নিযুক্ত করে । systemctlনিয়ন্ত্রণ এবং কনফিগার করতে ব্যবহার করুন systemd
আলেকজান্ডার শ্যাচব্লিকিন

4

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


2
দুর্দান্ত পরামর্শ! সত্যই জ্ঞানী এবং প্রাসঙ্গিক, এবং সমস্ত ডিস্টোগুলিতে সুরযুক্ত ed (এবং ঘটনাক্রমে "লিনাক্সে নতুন" এবং "আমি এটি কীভাবে করব" প্রশ্নের প্রশ্নের উত্তর দিয়েছি my আমি আমার উত্তরটি আমার স্টপ স্ক্রিপ্টগুলি উন্নত করতে ব্যবহার করব
ব্রুস0

3

সুপারভাইজার ব্যবহার করুন, একটি কার্যকর প্রোগ্রাম যা আর্গুমেন্ট সহ স্টার্টআপ অ্যাপ্লিকেশন পরিচালনা করে এবং লগ করে। Http://supervisord.org/running.html এবং (ইনস্টলেশন নির্দেশাবলী অনুসরণ করুন) থেকে আরও জানুন ।

একটি কনফিড ফাইল তৈরি করুন /etc/supervisor/conf.d/{PROGRAM_NAME}.confএবং এখানে কোডটি রয়েছে,

[program:{PROGRAM_NAME}]
command=/usr/bin/{PROGRAM_NAME} -arg1 -arg2
autostart=true  
autorestart=true  
stderr_logfile=/var/log/supervisor/{PROGRAM_NAME}.err.log  
stdout_logfile=/var/log/supervisor/{PROGRAM_NAME}.out.log  

তারপরে সেন্টিমিডি লাইন থেকে নির্বাহ করুন:

supervisorctl reload


যদিও আপনার উত্তরটি ঠিক আছে, আমি মনে করি আপনার এটি পরিবর্তন করা উচিত এটি দেখানোর জন্য যে "সুপারভাইসর্টল রিলোড"
সিআইএল

3

ব্যবহার crontabকরা অনেক সহজ।

crontab -eব্যবহারকারীর ক্রন্টব সম্পাদনা করতে ব্যবহার করুন ।
শেষে নিম্নলিখিত লাইন যুক্ত করুন:

@reboot <command>

উদাহরণ:

  • @reboot my_script.sh
  • @reboot python my_script.py arg1 arg2

crontab -lআপনার স্ক্রিপ্টটি তালিকায় যুক্ত হয়েছে তা নিশ্চিত করতে অবশেষে ব্যবহার করুন ।


আমি অবাক হয়েছি কেন এই উত্তরটি নিম্নমানগুলি পেয়েছে? দেখতে খুব সহজ সমাধান এবং ক্রন্টব ব্যবহার করে এমন একটি - যা সম্ভবত প্রত্যেকে ইতিমধ্যে জানে এবং বুঝতে পেরেছে।
কলিঙ্কো

1

লিনাক্স সমর্থনের আরও নতুন সংস্করণ systemd(যেমন @ অ্যালেক্সান্ডারশ্যাচব্লিকিন বলেছেন)। এটিতে আরও বৈশিষ্ট্য রয়েছে এবং এটি ডেবিয়ান-নির্দিষ্ট সমাধানের চেয়ে বেশি পোর্টেবল।

এই সত্যিই দুর্দান্ত গাইড পড়ুন দয়া করে

এখানে প্রয়োজনীয় সর্বনিম্ন প্রয়োজনীয়তার একটি দ্রুত রেফারেন্স দেওয়া হল :

  1. myscript.shএক্সিকিউটেবল অনুমতি সহ একটি স্ক্রিপ্ট (যেমন )।
  2. স্ক্রিপ্টটি কার্যকর করার জন্য কমান্ড থাকা 644 অনুমতি myservice.serviceসহ ".সেবারিস" এক্সটেনশন সহ একটি ইউনিট ফাইল (যেমন ) /etc/systemd/system। উদাহরণ স্বরূপ,

:

[Unit]
Description=Example systemd service.

[Service]
Type=simple
ExecStart=/bin/bash /path/to/myscript.sh

[Install]
WantedBy=multi-user.target
  1. sudo systemctl enable myserviceবুট শুরু করার জন্য এটি সক্ষম করতে কমান্ডটি চালান ।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.