/Etc/rc.local এ কমান্ডটি প্রারম্ভকালে কার্যকর করা হয় না কেন?


39

আমার /etc/rc.localস্ক্রিপ্টে আমার একটি একক কমান্ড রয়েছে যা শুরুর সময় টিনি টিনি আরএসএসের আপডেট ডেমনটি শুরু করার কথা , তবে স্ক্রিপ্টটি প্রারম্ভকালে কার্যকর হয় না। কেন?

সম্পূর্ণ /etc/rc.local ফাইল:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

/sbin/start-stop-daemon -b -c www-data:www-data -S -x /usr/bin/php /var/www/ttrss/update_daemon2.php -- -quiet

exit 0

/etc/rc.local কার্যকর করা যায়:

# ls -l /etc/rc.local
-rwxr-xr-x 1 root root 342 May 25 16:14 /etc/rc.local

/etc/init.d/rc.local বিদ্যমান এবং কার্যকর করা যায়:

# ls -l /etc/init.d/rc.local
-rwxr-xr-x 1 root root 801 Jul 27  2012 /etc/init.d/rc.local

/etc/init.d/rc.local এই রানলেভেলের জন্য শুরুতে মৃত্যুদন্ড কার্যকর করার কথা:

# runlevel 
N 2
# ls -l /etc/rc2.d/S99rc.local 
lrwxrwxrwx 1 root root 18 Sep 22  2012 /etc/rc2.d/S99rc.local -> ../init.d/rc.local

আমি যদি কমান্ড লাইন থেকে ম্যানুয়ালি /etc/rc.local কল করি তবে আপডেট_ডেমোন লোড হয় ...

# /etc/rc.local
# ps ax | grep update_daemon2.php
2233 ?        S      0:00 /usr/bin/php /media/sda5/www/news/update_daemon2.php -quiet
2234 ?        S      0:00 /usr/bin/php /media/sda5/www/news/update_daemon2.php -quiet

... যা এই সমস্যাটি স্থির না হওয়া অবধি আমার সার্ভারটি পুনরায় চালু হওয়ার সময়ে আমাকে করতে হবে।

অনুরূপ প্রশ্ন ইতিমধ্যে বিদ্যমান, তবে এখনও পর্যন্ত আমি আমার নির্দিষ্ট সমস্যার মধ্যে তথ্য প্রয়োগ করতে অক্ষম হয়েছি।

আরসি.লোকাল-এ কমান্ডটি প্রারম্ভকালে কার্যকর করা হয় না কেন?


requirettyসেটিংসের কারণে হতে পারে । আপনি লগ-ইন থাকা অবস্থায় আপনি স্ক্রিপ্টটি টিটিওয়াইতে চালাচ্ছেন তবে সিস্টেম বুটের সময় এটি টিটিওয়াইতে নেই। এই লিঙ্কটি আপনাকে শেল-টিপস.কম / ২০১৪ / ০৯ / ২০১৮ / তে সহায়তা করতে পারে ধন্যবাদ।
KICT

উত্তর:


23

rc.localএর যে কোনও কমান্ড কার্যকর করার সময় কোনও ত্রুটি ঘটলে স্ক্রিপ্টটি প্রস্থান করে (এতে -eপতাকাটির উল্লেখ করুন #!/bin/sh -e)।

এটি কার্যকর হয় যে আপনি যখন কমান্ড rc.localসঞ্চালনের সময় কমান্ডগুলি চালনার চেষ্টা করেন তখন কিছু পূর্বশর্ত পূরণ হয় না , সুতরাং আপনার কমান্ডের প্রয়োগ কার্যকর হয় না।

সিপিইউ গভর্নরকে ম্যানুয়ালি সেট করতে এবং এটি করতে ব্যর্থ হওয়ার সময় আমি একই জিনিসটির মুখোমুখি হয়েছি rc.local। এখানে আমার কাস্টম কর্মক্ষেত্র, যা update-rc.dআপনার আদেশগুলি প্রারম্ভকালে চালানোর জন্য ব্যবহার করে:

  1. শিরোনাম সহ myscript.shডিরেক্টরিতে একটি ফাইল তৈরি করুন /etc/init.d:#!/bin/sh
  2. সামগ্রী হিসাবে আপনার কাস্টম কমান্ড রাখুন
  3. এটি সম্পাদনযোগ্য করুন: sudo chmod +x /etc/init.d/myscript.sh
  4. বিভিন্ন স্ক্রিপ্টের জন্য বিভিন্ন রানলেভেলের জন্য সিলেমিকগুলি তৈরি করুন: sudo update-rc.d myscript.sh defaults

এছাড়াও, আপনি /etc/network/if-up.dস্ক্রিপ্টগুলি পরীক্ষা করে দেখতে পারেন এবং নেটওয়ার্কিং শুরু হওয়ার সাথে সাথে আপনি আপনার কমান্ডগুলি ট্রিগার করতে পারেন কিনা।


উত্তরের জন্য ধন্যবাদ. আমি প্রশ্ন পোস্ট করার পরে আমার সেটআপ পরিবর্তন হয়েছে, সুতরাং আপনার উত্তরটি সমস্যার সমাধান করতে পারত কিনা আমি পরীক্ষা করতে অক্ষম।
xx

দয়া করে বলুন ধাপ -4 কী করে? আমি এতে নতুনupdate-rc.d
মোহিত 7548

7

আরসি.লোকাল প্রারম্ভকালে চালনা না করায় আমার একই রকম সমস্যা ছিল

শ্যাশেডগুলি আমাকে নিম্নলিখিত উত্তরগুলি সরবরাহ করেছিল:

উবুন্টু এখন সিস্টেমেড ব্যবহার করছে এবং আরসি.লোকাল এখন একটি পরিষেবা হিসাবে বিবেচিত যা ডিফল্টরূপে "অফ" করা আছে। আপনি নিম্নলিখিত কমান্ডটি প্রবেশ করে এবং রিবুট করে rc.local "চালু" করতে পারেন:

sudo systemctl enable rc-local.service

https://askubuntu.com/a/770033/395498

যদিও আমি তার সমাধানটি পরীক্ষা করে নিই না বলে আমি মনে করি এটি যৌক্তিক বলে মনে হচ্ছে এবং এটি কার্যকর হবে। যাহোক :

আমি একটি সমাধানও খুঁজে পেয়েছি যা ./.config/autostart-scriptts/ এ একটি স্ক্রিপ্ট যুক্ত করা কৌশলটি করবে


7
এই ত্রুটি পাওয়া। ইউনিট ফাইলগুলির কোনও ইনস্টলেশন কনফিগারেশন নেই (ওয়ান্টডবাই, আবশ্যকবি, এছাড়াও, [ইনস্টল] বিভাগে আলিয়াস সেটিংস এবং টেম্পলেট ইউনিটগুলির জন্য ডিফল্টইনস্ট্যান্স)। এর অর্থ তারা সিস্টেমে সিটিসিএল ব্যবহার করে সক্ষম হওয়া নয়। এই জাতীয় ইউনিট থাকার সম্ভাব্য কারণগুলি হ'ল: 1) অন্য ইউনিটের .ওয়ান্টস / অথবা। প্রয়োজনীয় / ডিরেক্টরি থেকে সিমলিংক করে একটি ইউনিট স্থিতিশীলভাবে সক্ষম করা যেতে পারে। ২) একটি ইউনিটের উদ্দেশ্য হতে পারে যে অন্য কোনও ইউনিটের সাহায্যকারী হিসাবে কাজ করা যার এটির উপর প্রয়োজনীয়তা নির্ভরতা রয়েছে।
রাফাত এরদেডম সাহিন

আমিও এই ত্রুটি পাচ্ছি। যদি rc.localবন্ধ থাকে তবে বিকল্প কী?
বেন

5

সক্ষম sudo sysv-rc-confহয়ে আছে কিনা rc.localতা চেষ্টা করে দেখুন

rc.local         [ ]   [x]   [x]   [x]   [x]   [ ]   [ ]   [ ]

হ্যাঁ, এটি সক্ষম।
এক্সএক্স

এই আদেশটি ইনস্টল করা প্রয়োজন?
jcollum

1
@ জ্যাকলুম হ্যাঁ, এটি একই নামের প্যাকেজটির একটি প্রোগ্রাম। ইনস্টল করতে, টাইপ করুনsudo apt install sysv-rc-conf
banan3'14

rc.localআমার পরিষেবা তালিকায়ও নেই!
বেন

5

নিশ্চিত হয়ে নিন যে rc.local স্ক্রিপ্ট কার্যকর হয়:

sudo chmod +x /etc/rc.local

তারপরে, এটি সক্ষম করুন:

sudo systemctl enable rc-local.service

সিস্টেমটি পুনরায় বুট করুন বা স্ক্রিপ্টটি ম্যানুয়ালি চালিয়ে শুরু করুন:

sudo systemctl start  rc-local.service

পরিষেবা স্থিতি চালিয়ে প্রদর্শিত হতে পারে:

$ sudo systemctl status rc-local.service
 rc-local.service - /etc/rc.local Compatibility
   Loaded: loaded (/lib/systemd/system/rc-local.service; static; vendor preset: enabled) 
Drop-In: /lib/systemd/system/rc-local.service.d
           └─debian.conf
   Active: active (running) since Mon 2018-04-02 10:39:44 -03; 1s ago
  Process: 2044 ExecStart=/etc/rc.local start (code=exited, status=0/SUCCESS)
 Main PID: 2049 (svscanboot)
Tasks: 3
 Memory: 556.0K
CPU: 10ms
CGroup: /system.slice/rc-local.service

আপনাকে ম্যানুয়ালি পরিষেবাটি সক্ষম করার দরকার নেই। যদি ফাইলটি বিদ্যমান থাকে এবং কার্যকর হয়, systemd স্বয়ংক্রিয়ভাবে rc-localপরিষেবাটি সক্ষম করবে ।
মুড়ু

4

এফডাব্লু নিয়ম লোড করা কিছু হোস্ট করা সার্ভারে আমাদের এই সমস্যা ছিল।

এই বাক্সগুলিতে তারা খুব দ্রুত রিবুট করে এবং লোড স্টেটমেন্টগুলি সমস্যাটি ঠিক করার আগে আমরা আরসি.লোকালে একটি "স্লিপ 1" রেখেছি। আমার ধারণা, এফডাব্লু বিধিগুলি লোড করার আগে ইন্টারফেসগুলি মীমাংসার জন্য এটি একটু সময় দিয়েছে।


1
ধন্যবাদ. sleep 1আমার সমস্যা সমাধান আকর্ষণীয় আমার কাছে প্রচুর সার্ভার রয়েছে তবে কেবলমাত্র একটিতে এই সমস্যা রয়েছে।
কিয়ান চেন

1

আমি একবার rc.localউইন্ডোজে নোটপ্যাড দিয়ে সম্পাদনা করেছি এবং এটিতে এই সমস্যাটি শুরু হয়েছিল।

এই ক্ষেত্রে, টেক্সট সম্পাদক ব্যবহার করে ইওএল রূপান্তর সমর্থন করে যেমন নোটপ্যাড ++, ইওএল স্টাইলকে 'ইউনিক্স' এ রূপান্তর করতে পারে, এটি সমাধান করতে পারে।

আপনি এটি :set ff=unixভিমেও করতে পারেন ।


1

আমি উবুন্টু এলএক্সসি পাত্রে পেয়েছি যে আরসি.লোকাল যদি সঠিকভাবে সঠিক শেবাং থাকে

#!/bin/sh

এটি ব্যর্থ হয়, তবে আপনি শেবাং সরিয়ে ফেললে এটি কার্যকর হয়।

কেন বা কী শেল এটি ব্যবহার করে তার নীচের অংশে পৌঁছে না আমি মনে করি এটি প্রথম অ-শূন্যেও বোমা ফাটিয়েছে। (অন্যান্য উবুন্টুতে সঠিক শেবাং ইনস্টল করা কোনও সমস্যা নয়)


0

আপনাকে নিশ্চিত করতে হবে যে /etc/rc.localকমান্ডটি দিয়ে সার্ভার শুরুর সময় এটি কার্যকর করা হয়েছে:

sudo systemctl enable rc-local.service

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