আমার কাছে একটি স্ক্রিপ্ট ছিল যা নেটওয়াল ম্যানেজার ব্যবহার না করে স্বয়ংক্রিয়ভাবে আমার ওয়াইফাই সক্ষম করে, তবে সিস্টেমটি বুট করার সময় আমি স্ক্রিপ্টটিকে মূল হিসাবে চালাতে জানি না। বুট করার সময় আমি কীভাবে স্ক্রিপ্টটি স্বয়ংক্রিয়ভাবে চালিত করব?
আমার কাছে একটি স্ক্রিপ্ট ছিল যা নেটওয়াল ম্যানেজার ব্যবহার না করে স্বয়ংক্রিয়ভাবে আমার ওয়াইফাই সক্ষম করে, তবে সিস্টেমটি বুট করার সময় আমি স্ক্রিপ্টটিকে মূল হিসাবে চালাতে জানি না। বুট করার সময় আমি কীভাবে স্ক্রিপ্টটি স্বয়ংক্রিয়ভাবে চালিত করব?
উত্তর:
আপনি যে স্ক্রিপ্টটি /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.servicesystemd পরিষেবা সক্ষম করতে চালান
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.dcrontab