systemd /etc/rc.local চালায় না?


11

আমি আর্চলিনাক্স ব্যবহার করছি এবং আজকাল সিস্টেমেড চেষ্টা শুরু করেছি।

তবে, আমি দেখতে পেয়েছি যে systemd আমার /etc/rc.local স্ক্রিপ্টটি লোড করে না।

উইকি পৃষ্ঠায় উল্লিখিত হিসাবে, আমি দৌড়াতে পেরেছি systemctl enable rc-local.service, তবে এটি কোনও লাভ হয়নি।

আমার /etc/rc.local ফাইলের সামগ্রী:

echo -n 120 > /sys/devices/platform/i8042/serio1/speed
echo -n 250 > /sys/devices/platform/i8042/serio1/sensitivity
iptables --table nat -A POSTROUTING -s 192.168.0.0/16 -j MASQUERADE

কোন পরামর্শ?

উত্তর:


16

আর্ক চালাতে প্রয়োজনীয় পরিষেবা ইউনিট ফাইলটি অন্তর্ভুক্ত না করতে পারে rc.local

কেবলমাত্র /etc/systemd/system/rc-local.serviceনিম্নলিখিত বিষয়বস্তুগুলি দিয়ে একটি ফাইল তৈরি করুন (আমার ফেডোরা সিস্টেমেড সিস্টেম থেকে অনুলিপি শব্দটি):

# এই ফাইলটি সিস্টেমযুক্ত অংশ।
#
# সিস্টেমড হ'ল ফ্রি সফটওয়্যার; আপনি এটিকে পুনরায় বিতরণ করতে এবং / বা এটি সংশোধন করতে পারেন
# জিএনইউ জেনারেল পাবলিক লাইসেন্সের শর্তাবলীতে প্রকাশিত published
# ফ্রি সফটওয়্যার ফাউন্ডেশন; লাইসেন্সের সংস্করণ 2, বা
# (আপনার বিকল্পে) পরবর্তী কোনও সংস্করণ।

[ইউনিট]
বর্ণনা = / ইত্যাদি / rc.local সামঞ্জস্য
ConditionPathExists = জন্য / etc / rc.local,

[পরিষেবা]
টাইপ করুন = forking
এক্সিকিস্টার্ট = / ইত্যাদি / আরসি.লোকাল শুরু
TimeoutSec = 0
StandardOutput = TTY
RemainAfterExit = হ্যাঁ
SysVStartPriority = 99

তারপরে, এটি systemctl enable rc-local.serviceসক্ষম করতে কেবল রুট হিসাবে চালান । আপনি এটি চালিয়ে / চালিয়ে এখন চালাতে পারেন systemctl start rc-local.service


এই দুটি ফাইল ইতিমধ্যে বিদ্যমান: /etc/systemd/system/multi-user.target.wants/rc-local.serviceএবং /lib/systemd/system/rc-local.service
ফেলিক্স ইয়ান

2
সম্ভবত এটি তখন অক্ষম। চালানোর চেষ্টা করুন systemctl enable rc-local.service। আপনার যদি সমস্যা অব্যাহত থাকে তবে দয়া করে এর ফলাফল পোস্ট করুন systemctl status rc-local.service
প্যাচগুলি

5
আপনি ইনস্টল বিভাগ নেই এমন ইউনিটে "সক্ষম" ইস্যু করতে পারবেন না, এই উদাহরণটি সম্ভবত কাজ করবে না।
lzap

1
অন্যদিকে, ফাইলটি (আশায় একটি লিঙ্ক) multi-user.target.wantsঠিক এটিই সক্ষম করে।
পাভেল rdিমেরদা

28

সিস্টেমেড 188-2 এর সাথে, সিস্টেমড কোনও [Install]বিভাগ না থাকার এবং rc.local পরিষেবা সক্ষম করতে অক্ষম হওয়ার বিষয়ে অভিযোগ করে । পূর্ববর্তী সংস্করণগুলির ক্ষেত্রে এটি হতে পারে তবে আর্চ ডেভস যেহেতু সম্প্রতি ঘোষিত সিস্টেমড ডিফল্ট হয়ে উঠবে আমি আমার সিস্টেমটি ঠিক করছি।

এটি ঠিক করতে, মাল্টিউজার টার্গেটের জন্য কেবল এখানে একটি বিভাগ যুক্ত করুন /etc/systemd/system/rc-local.service:

[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target

/etc/rc.localস্ক্রিপ্টটি তৈরি করুন এবং এটি দিয়ে সম্পাদনযোগ্য করুনchmod +x /etc/rc.local


1
এটি কারণ rc-local.serviceএমন কোনও পরিষেবা ছিল না যা এর মাধ্যমে সক্ষম হয়েছিল systemctl enableতবে ২০১১ সাল থেকে কোনও পরিষেবাটি একটি জেনারেটর দ্বারা স্বয়ংক্রিয়-সক্ষম হয়েছে । তবে আর্কিট লিনাক্স, যেমন unix.stackexchange.com/a/471871/5132 তে ব্যাখ্যা করা হয়েছে , সিস্টেমডে পিছনে সামঞ্জস্যের বিকল্পগুলি চালু করে না যা জেনারেটরকে প্রথম স্থানে সরবরাহ করে।
জেডিবিপি

4

পিকেজিফাইল (আমার সিস্টেমে) বলেছেন:

$ pkgfile --search rc-local.service
community/initscripts-systemd

এই প্যাকেজটি অন্য জিনিসগুলি ইনস্টল করে যা আপনি নাও চান তবে আপনি এটি অক্ষম করতে পারেন। আরও দেখুন: https://wiki.archlinux.org/index.php/Systemd#The_initscriptts-sstmd_package


2

Rc.local এক্সিকিউটেবল করতে ভুলবেন না - বা সামঞ্জস্যতা স্তর এটি চালাবে না! উপরোক্ত উদাহরণগুলিতে যা তালিকাভুক্ত রয়েছে - আপনি rc.local ফাইলকে এক্সিকিউটেবল করার জন্য chmod a + x চালিয়ে যাবেন। নিম্নরূপ:

$ chmod a+X /etc/systemd/system/rc-local.service 

আমি মনে করব অন্য সম্ভাব্য সমস্যাটি হ'ল আপনার আরসি.লোকাল স্ক্রিপ্টের অবস্থান! আপনি যদি ইতিমধ্যে সিস্টেমডের সাথে সামঞ্জস্যতা যোগ না করে থাকেন (যা এতে অন্তর্নির্মিত হওয়া উচিত - এবং এটি ইতিমধ্যে বিদ্যমান বিদ্যমান উল্লেখ করে বলে মনে হয়) আপনার ফাইলগুলির অবস্থান ডাবল চেক করার প্রয়োজন হতে পারে ... আমার ওএসে আমার আরসি-লোকাল রয়েছে /etc/rc.d/rc.local এ আমি নিম্নলিখিতগুলি চালিয়েছি:

$ sudo chmod a+x /etc/rc.d/rc.local
$ sudo systemctl restart rc-local.service
$ sudo systemctl status rc-local.service
rc-local.service - /etc/rc.d/rc.local Compatibility
      Loaded: loaded (/lib/systemd/system/rc-local.service; static)
      Active: active (exited) since Fri, 13 Apr 2012 14:42:39 -0600; 3s ago
     Process: 2285 ExecStart=/etc/rc.d/rc.local start (code=exited, status=0/SUCCESS)
      CGroup: name=systemd:/system/rc-local.service

4
systemdআপনার প্রথম কোড স্নিপেটে যেমন দেখানো হয়েছে তেমন সার্ভিস ফাইলকে এক্সিকিউটেবল করা অর্থহীন । এছাড়াও, আর্ক লিনাক্সে, ফাইলের পথটি হল /etc/rc.local- সম্ভবত systemdপরিষেবা ফাইলের বিষয়বস্তুগুলি ভুল।
রাভুআলহেমিও

1

দুটি সাধারণ গ্যাটাচা:

  1. /etc/rc.d/rc.localএক্সিকিউটেবল করতে ভুলবেন না । তুমি ব্যবহার করতে পার

    # chmod a+rx /etc/rc.d/rc.local
    

    এটি কার্যকর করার জন্য।

  2. #!/bin/shপ্রথম লাইনে একটি লাইন স্থাপন করতে ভুলবেন না /etc/rc.d/rc.local। বিষয়গুলি কীভাবে দেখতে হবে তা এখানে:

    #  head -1 /etc/rc.d/rc.local 
    #!/bin/sh
    # file /etc/rc.d/rc.local 
    /etc/rc.d/rc.local: POSIX shell script, ASCII text executable
    

    আপনি যদি অনুরূপ আউটপুট না পান /etc/rc.d/rc.localতবে জাস্ট যুক্ত খুব উপরে একটি লাইন যুক্ত করতে সম্পাদনা করুন #!/bin/sh


1

যদি আপনার /etc/rc.localএক্সিকিউটেবল ফাইল হিসাবে থাকে তবে এটি systemd-rc-local-generator/ দ্বারা বুট প্রক্রিয়াতে টানবে rc-local.service

কমপক্ষে /etc/rc.localএটি ডিফল্ট পাথটি ব্যবহার করে তবে এটি বিতরণ দ্বারা সেট করা হয়। কারণ এটি মূলত পিছনের সামঞ্জস্যের জন্য, এবং বিভিন্ন বিতরণ বিভিন্ন পথ ব্যবহার করে। যেমন ফেডোরায়, পথটি /etc/rc.d/rc.local। আপনি নিম্নলিখিত হিসাবে পাথ চেক করতে পারেন:

$ systemctl cat rc-local.service
# /usr/lib/systemd/system/rc-local.service
# ...

# This unit gets pulled automatically into multi-user.target by
# systemd-rc-local-generator if /etc/rc.d/rc.local is executable.
[Unit]
Description=/etc/rc.d/rc.local Compatibility
ConditionFileIsExecutable=/etc/rc.d/rc.local
After=network.target

[Service]
Type=forking
ExecStart=/etc/rc.d/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no

দেখে মনে হচ্ছে এটি খুব বেশি পরিচিত নয়। এখানে বেশ কয়েকটি পোস্ট রয়েছে যা ফাইলটির পূর্ববর্তী সংস্করণ দেখায়, যার কোনও মন্তব্য নেই।


1
এটি বাস্তবে সত্য নয়। যেমন unix.stackexchange.com/a/471871/5132 তে ব্যাখ্যা করা হয়েছে , আর্ক পিছনের দিকের সামঞ্জস্যতা পদ্ধতি ব্যবহার করে না এবং এই জেনারেটরটি নেই।
JdeBP
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.