ঠিক আছে, অ্যালেক্স, মোদ্দা কথাটি হ'ল লিনাক্সের সমস্ত ইউজারস্পেস প্রসেস init
প্রক্রিয়া দিয়ে শুরু হয়েছে , যার পিড ১. উদাহরণস্বরূপ, pstree
আপনার প্রসেসের গাছটি দেখতে চালান , যার মূলটি ইআরআই .. init
আজকাল প্রক্রিয়া প্রয়োগের বিভিন্ন সংস্করণ রয়েছে , সবচেয়ে উল্লেখযোগ্য
- sysVinit (ক্লাসিকাল আরম্ভ, এখনও পুরানো দেবিয়ান সহ কিছু বিতরণ ব্যবহার করে)
- পুরানো উবুন্টু এবং কিছু আরএইচইল (রেড হ্যাট) এবং পুরানো ফেডোরার সংস্করণ দ্বারা ব্যবহৃত স্টার্ট আপস স্টার্ট
- সিস্টেমড ডিআইডি, আধুনিক ফেডোরা, উবুন্টু, দেবিয়ান, আরএইচইল, সুস সংস্করণ দ্বারা ব্যবহৃত
Ditionতিহ্যগতভাবে, ইউনিক্স'স টিআইবি প্রয়োগকারী টিআইএম নামে sysVinit
পরিচিত যা ইউনিক্সের https://ru.wikedia.org/wiki/UNIX_S systemm_V সংস্করণ নামে ডাকা হয় । এটি খুব প্রভাবশালী এবং অন্যান্য ইনটগুলি এর সাথে পিছনে সামঞ্জস্যপূর্ণ।
মূলত, sysVinit প্রথমে /etc/inittab
ফাইল পড়ে , সিদ্ধান্ত নেয়, কোন রানলেভেল চালাতে হয় এবং /etc/init.d/rc
স্ক্রিপ্টকে তথাকথিত init স্ক্রিপ্টগুলি চালিত করতে বলে । উদাহরণস্বরূপ, যখন এটি কোনও মাল্টি-ইউজার রেনলেভলে সাধারণত বুট হয়, যা সাধারণত উবুন্টুতে রানলেভেল 2 হয় , /etc/init.d/rc
স্ক্রিপ্টগুলি সম্পাদন শুরু করে /etc/rc2.d
। ফাইলগুলি সেখানে স্ক্রিপ্টগুলির জন্য কেবল প্রতীকী লিঙ্কগুলি রয়েছে, যখন স্ক্রিপ্টগুলি সেগুলি /etc/init.d
ডিরেক্টরিতে সংরক্ষণ করা হয় । /etc/rc*.d
ডিরেক্টরিগুলিতে সেই চিহ্নগুলির নামকরণ নিম্নরূপ। বলুন, আমরা এতে নিম্নলিখিত স্ক্রিপ্ট পেয়েছি /etc/rc2.d
:
$ls /etc/rc2.d
S16rsyslog
S17apache2
K02network-manager
এর অর্থ হ'ল, রানলেভেল 2 ইআর প্রক্রিয়াটিতে স্যুইচ করার পরে প্রথমে network-manager
প্রসেসগুলি মেরে ফেলা হয়, কারণ এর স্ক্রিপ্টের নামটি শুরু হয় K
- K02network-manager
এবং তারপরে প্রক্রিয়া শুরু হয়, যার নাম দিয়ে শুরু হয় S
। দুটি সংখ্যা পর S
বা K
00 থেকে 99 নম্বর, যা অর্ডার নির্ধারণ করে, প্রক্রিয়া শুরু করা হয়। যেমন rsyslog
আগে শুরু হয় apache2
, কারণ 16 17 কম (যে অর্থে তোলে হয়, কারণ আপনি Apache নিম্নলিখিত rsyslog এর লগিং ক্ষমতা উপর নির্ভর করতে চান , এইভাবে প্রথমে rsyslog শুরু করা উচিত)। স্ক্রিপ্টগুলি হ'ল ক্যাজুয়াল শেল স্ক্রিপ্ট, এর দ্বারা নির্বাহ করা হয় #!/bin/sh
।
সুতরাং, মূলত sysVinit শৈলী প্রারম্ভকালে উপর একটি প্রোগ্রাম শুরু করার জন্য, আপনার নিজের স্ক্রিপ্ট লিখতে (এটা কোন উদাহরণ থেকে কপি-পেস্ট, আপনি পেয়েছেন /etc/init.d
), এর লাগাতে /etc/init.d
এবং একটি যুক্তিসঙ্গত নাম, যেমন অধীনে এটি একটি সিমবলিক লিঙ্ক তৈরি
S99mytrojan
মধ্যে /etc/rc2.d
। /Etc/init.d http://docs.oracle.com/cd/E19683-01/806-4073/6jd67r96g/index.html এ টিপিক্যাল সিসভিট স্ক্রিপ্টগুলির ব্যাখ্যা এখানে রয়েছে
এখন, উবুন্টু ছেলেরা সিদ্ধান্ত নিয়েছে যে তারা init থেকে অতিরিক্ত কার্যকারিতা চায়। তারা একটি দ্রুত বুটিং ওএস চেয়েছিল, তাই তারা চেয়েছিল যে তাদের স্ক্রিপ্টগুলি সমান্তরালভাবে কার্যকর করা হোক; তারা চেয়েছিল মৃত প্রক্রিয়াগুলি স্বয়ংক্রিয়ভাবে পুনরায় চালু করা হোক; তারা প্রক্রিয়াগুলি একে অপরের সাথে ঘটনাবলী দ্বারা স্পষ্টভাবে আহবান করতে চেয়েছিল (যাতে অ্যাপাচি "সিসলগ শুরু" ইভেন্ট দ্বারা চালিত হয়, এবং সিসলগ "ফাইল সিস্টেম মাউন্ট করা" ইভেন্ট ইত্যাদি দ্বারা চালিত হয়, তাই আমাদের কয়েকটি সংখ্যার পরিবর্তে ইভেন্টগুলি 00 রয়েছে) -99)। সুতরাং, তারা আপস্টার্ট তৈরি করেছে এবং এটি এটি কীভাবে কাজ করে তা এখানে । আপস্টার্ট ইনসাইটস স্ক্রিপ্টগুলি /etc/init
ডিরেক্টরিতে রাখা হয় (এর সাথে বিভ্রান্ত করবেন না /etc/init.d
)। আপস্টার্ট সাধারণত চালিত /etc/init.d/rc
হয়, তাই এটি আপনার সিজনভিট স্ক্রিপ্টগুলি স্বাভাবিকভাবে কার্যকর করতে চলেছে। তবে যদি আপনি প্রস্থান করার সময় আপনার স্ক্রিপ্টটি পুনরায় গ্রহণ করতে চান - আপস্টার্ট ইভেন্টগুলি আপনার জন্য।
যদিও আমার স্ক্রিপ্টটি কাজ করছে কিনা তা আমি পরীক্ষা করতে পারছি না, আমি মনে করি, আপনার লক্ষ্যগুলির জন্য আপনার নিম্নলিখিত /etc/init/mytrojan.conf
স্ক্রিপ্টটি লেখা উচিত :
start on runlevel [02]
respawn
exec mytrojan --argument X
তবে আপনার যদি নির্ভরতা, কমপক্ষে ফাইল সিস্টেম এবং নেটওয়ার্কের প্রয়োজন হয় তবে এর start on runlevel [02]
মতো কিছু দিয়ে প্রতিস্থাপন করা বোধগম্য হতে পারে :
start on (local-filesystems and net-device-up IFACE!=lo)
সতর্কতা: আমি এর সঠিকতা যাচাই করিনি, কারণ আমি পারছি না। বিশেষত, আপনার নেটওয়ার্ক সংযোগটি শেষ হয়ে যাওয়ার পরে কীভাবে স্ক্রিপ্ট শুরু করবেন সে সম্পর্কে আমি নিশ্চিত নই (আমি এই সংস্করণটি ব্যবহার করেছি )। "নেটওয়ার্ক আপ আপস্টার্ট" এর জন্য গুগল করার চেষ্টা করুন।