আমার কাছে একটি স্ক্রিপ্ট ছিল যা নেটওয়াল ম্যানেজার ব্যবহার না করে স্বয়ংক্রিয়ভাবে আমার ওয়াইফাই সক্ষম করে, তবে সিস্টেমটি বুট করার সময় আমি স্ক্রিপ্টটিকে মূল হিসাবে চালাতে জানি না। বুট করার সময় আমি কীভাবে স্ক্রিপ্টটি স্বয়ংক্রিয়ভাবে চালিত করব?
আমার কাছে একটি স্ক্রিপ্ট ছিল যা নেটওয়াল ম্যানেজার ব্যবহার না করে স্বয়ংক্রিয়ভাবে আমার ওয়াইফাই সক্ষম করে, তবে সিস্টেমটি বুট করার সময় আমি স্ক্রিপ্টটিকে মূল হিসাবে চালাতে জানি না। বুট করার সময় আমি কীভাবে স্ক্রিপ্টটি স্বয়ংক্রিয়ভাবে চালিত করব?
উত্তর:
আপনি যে স্ক্রিপ্টটি /etc/init.d ডিরেক্টরিতে চালাতে চান তা স্থান দিন এবং স্ক্রিপ্টটি সম্পাদনযোগ্য করে তুলুন।
chmod 755 myscript
এটি সম্পন্ন হয়ে গেলে রান লেভেল ডিরেক্টরিতে আপনি একটি প্রতীকী লিঙ্ক তৈরি করতে চান আপনি উদাহরণস্বরূপ, যদি আপনি গ্রাফিকাল রানলেভেল 2-তে কোনও প্রোগ্রাম চালাতে চান, তবে উবুন্টুর জন্য ডিফল্ট রানলেভেল আপনাকে /etc/rc2.d
ডিরেক্টরিতে রেখে দেবেন। আপনি কেবল এটি ডিরেক্টরিটি রাখতে পারবেন না, আপনাকে অবশ্যই এটি কখন এস এর সাথে সূচনা সূচনা করে চালানো হবে এবং এক্সিকিউশন অর্ডারটি গুরুত্বপূর্ণ। ডিরেক্টরিতে থাকা সমস্ত কিছুর পরে এটি একটি উচ্চ নম্বর দিয়ে রাখুন।
যদি শেষ স্ক্রিপ্টটি চালানো হয় rc.local
এবং এটির নামকরণ করা হয় S99rc.local
তবে আপনাকে আপনার স্ক্রিপ্টটি যুক্ত করতে হবে S99myscript
।
ln -s /etc/init.d/myscript /etc/rc3.d/S99myscript
প্রতিটি পশ্চাদপটে সামঞ্জস্যপূর্ণ /etc/rc*.d
ডিরেক্টরিটির ডিরেক্টরিতে প্রতীকী লিঙ্ক রয়েছে /etc/init.d/
।
/etc/rc2.d
পরিবর্তে আমাকে ব্যবহার করা দরকার rc3.d
। মনে rc2.d
হচ্ছে এটি কেবল গ্রাফিকাল রান স্তর নয়।
cd /etc/rc`cat /etc/init/rc-sysinit.conf | grep "env DEFAULT_RUNLEVEL" | grep -oP "\d"`.d
/etc/rc?.d
আপনার ডিফল্ট রানলেভেলের সাথে সম্পর্কিত ডিরেক্টরিটি আপনাকে নিয়ে যাবে ।
rc.local
এবং এটির নামকরণ করা হয় S99rc.local
তবে আপনাকে আপনার স্ক্রিপ্টটি হিসাবে যুক্ত করতে হবে S99myscript
।" আপনি কী বোঝাতে চেয়েছিলেন: "যদি শেষ স্ক্রিপ্টটি চালানো হয় myscript
এবং এটির নামকরণ হয় S99myscript
তবে আপনাকে আপনার স্ক্রিপ্টটি যুক্ত করতে হবে S99myscript
" "???
কমান্ডটি অন্তর্ভুক্ত করুন /etc/rc.local
। এটি ব্যবহার করা হবে যখনই ব্যবহারকারীর রানলেভেল পরিবর্তন হয়।
দ্রষ্টব্য: আপনাকে /etc/rc.local এ সর্বশেষ লাইনের আগে কমান্ডটি লিখতে হবে: "প্রস্থান 0"
/etc/rc.local
যা এতে অন্তর্ভুক্ত রয়েছে: exit 0
/etc/rc.local
উবুন্টুতে 15.10 মন্তব্য করেছে যে "এই স্ক্রিপ্টটি প্রতিটি মাল্টিউজার রানলেভেলের শেষে কার্যকর করা হয়।" সুতরাং স্ক্রিপ্ট বুট চলাকালীন কয়েকবার চালানো যেতে পারে, তাই না?
crontab
আপনার স্ক্রিপ্টটি পুনরায় বুট করার পরে চালানোর জন্য একটি বিকল্প ব্যবহার করুন ,
আপনি ক্রোন@reboot
কোড যুক্ত করে এটি করতে পারেন
রুট ব্যবহারকারী দ্বারা ক্রন্টব্যাট খুলুন:
$ sudo crontab -e
নীচে পরবর্তী রেকর্ড যুক্ত করুন:
@reboot yourScriptPath
যা আপনি চান তা করবে।
crontab -e
, যার জন্য অতিরিক্ত ব্যবহারকারীর সুবিধার দরকার নেই? আমি ভাবছি, যদি এটি স্ক্রিপ্টগুলি চালাতে পারে যা রুট হিসাবে চালানো দরকার।
sudo crontab -e
প্রারম্ভকালীন সময়ে স্ক্রিপ্টটিকে রুট হিসাবে চালানোর জন্য আপনাকে কমান্ড চলাকালীন লাইনটি যুক্ত করতে হবে।
/var/run/crond.reboot
না, না হলে, টাস্কটি কার্যকর করবেন না
এটি আমার পক্ষে উবুন্টু 17.04-তে কাজ করেছে:
disable_cdrom
আপনার অবস্থানের জন্য সুবিধাজনক মতো ট্যুর স্ক্রিপ্ট ফাইল তৈরি করুন । আমার ক্ষেত্রে home/yterle/disable_cdrom
। আমার ক্ষেত্রে:
#!/bin/sh
eject /dev/sr0 -i 1
এটি কার্যকর করা chmod 775 disable_cdrom
/etc/systemd/system
এবং সেখানে একটি service
ফাইল তৈরি করুন। উদাহরণ স্বরূপsudo gedit /etc/systemd/system/disable_cdrom.service
আমার disable_cdrom.service
চেহারাটি এরকম:
[Unit]
Description=Disable cdrom
[Service]
Type=oneshot
ExecStart=/bin/sh /home/yterle/disable_cdrom
[Install]
WantedBy=multi-user.target
যেখানে ExecStart
আপনার স্ক্রিপ্টটি চালানোর জন্য পয়েন্ট/bin/sh
তারপরে systemctl enable disable_cdrom.service
systemd পরিষেবা সক্ষম করতে চালান
systemctl enable disable_cdrom.service
/etc/init.d/
এক্সিকিউটেবল অনুমতি সহ আপনার স্ক্রিপ্ট ফাইল অন্তর্ভুক্ত করুন তারপরে বিভিন্ন রান স্তর নির্ধারণ করুন
$ update-rc.d script-name default
এটি আপনার স্ক্রিপ্ট বুট প্রারম্ভকালে রাখবে।
update-rc.d script-name enable
?
স্ক্রিপ্টটি যুক্ত করার ক্ষেত্রে যত্নশীল rc.local
- এর কারণে আমি স্প্ল্যাশ স্ক্রিনে আটকে গিয়েছিলাম। টিপলে Alt+ + F1প্রকাশ কি স্প্ল্যাশ পর্দা পিছনে (ইন স্ক্রিপ্ট চালু ছিল rc.local
চলমান ছিল)।
আমি এর থেকে বের হতে পারিনি।
কিছুই কাজ করে না।
আমাকে একটি ইউএসবি উবুন্টু চিত্র থেকে বুট করতে হয়েছিল, এটি rc.local
ফাইল করতে এবং মুছতে আমাকে নিজের অনুমতি দিতে হয়েছিল। আমি অনুমান করি আপনি কী করছেন তা যদি আপনি না জানেন তবে আপনার স্টাফ করা উচিত নয়।
autostart
বা*.service
ফাইলগুলিতে কনফিগার করা থাকে । এটি দেখুন: unix.stackexchange.com/a/525845/43233init.d
crontab