আমি কীভাবে উবুন্টু 16.10 তে স্টার্টআপে (rc.local বিকল্প) কমান্ড চালাতে পারি


49

আমি আমার লিনোড সার্ভারে উবুন্টু 16.10 চলমান কোটা সেট আপ করছি এবং আমি নিম্নলিখিত ত্রুটি পেয়েছি

() মাউন্ট করা ডিভাইস / ডেভ / রুট স্ট্যাট করা যাবে না: এ জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই

সুতরাং এটি সংশোধন করার জন্য, আমি যুক্ত করে যা করা হয় এটির জন্য এই থ্রেডে পৌঁছেছি

ln -s /dev/xvda /dev/root
/etc/init.d/quota restart

যাও /etc/rc.local। তবে উবুন্টু 16.10 এর rc.localপরিবর্তে systemd ব্যবহার করে না । এর বিকল্প কী rc.local, আমি কীভাবে উপরের আদেশগুলি প্রারম্ভকালে চালাতে পারি?

এছাড়াও আমি পরিষেবাটি ব্যবহার করে সক্ষম করেছি systemctl enable rc-local.serviceকিন্তু এটি আমার পক্ষে কার্যকর হয়নি। কোন সীসা প্রশংসা করা হবে।


আপনি কি এটিকে মূল হিসাবে চালিত করেছেন, এবং আপনি কি আপনার সিস্টেমটি পুনরায় চালু করেছেন?
জর্জ উদোসেন

@ জর্জি হ্যাঁ, আমি দুটোই করেছি
সৌরভ শর্মা

চেষ্টা এই
জর্জ Udosen

@ জর্জি এটি তেমন কাজ করছে না
সৌরভ শর্মা

এই হ্যাকটি
সবেমাত্র

উত্তর:


65

ইন্ট্রো

আমি মনে করি জর্জের লিঙ্কে পরামর্শ অনুযায়ী আপনার কোনও নতুন পরিষেবা তৈরি করা উচিত নয়। rc-local.serviceইতিমধ্যে systemd হল বিদ্যমান এবং সেবা ফাইল দাড়ায় যে rc.local, যদি বিদ্যমান এবং এক্সিকিউটেবল হয়, স্বয়ংক্রিয়ভাবে মধ্যে টানা পরারmulti-user.target । সুতরাং এমন কিছু যা পুনরায় তৈরি বা জোর করে চাপানোর দরকার নেই যা কেবলমাত্র অন্যভাবে করা হয়েছিল systemd-rc-local-generator

একটি সমাধান

একটি দ্রুত কাজ (আমি জানি না যে এটি সাধারণ উপায় কিনা):

একটি টার্মিনালে কর:

printf '%s\n' '#!/bin/bash' 'exit 0' | sudo tee -a /etc/rc.local
sudo chmod +x /etc/rc.local
sudo reboot

এর পরে rc.localসিস্টেমটি শুরু করার আহ্বান জানানো হবে। আপনি যা চান তা sertোকান।

পটভূমি

আপনি যদি একটি টার্মিনালে করেন:

sudo systemctl edit --full rc-local

আপনি দেখতে পাচ্ছেন যে হেড কমেন্টে লাইন রয়েছে যেমন:

# This unit gets pulled automatically into multi-user.target by
# systemd-rc-local-generator if /etc/rc.local is executable.

এটি ইঙ্গিত করে যে এই সিস্টেমে যদি কোনও ফাইল বলা হয় /etc/rc.localযা কার্যকর হয়। সুতরাং আপনি কেবল সেই অনুযায়ী ফাইলটি তৈরি করুন ( sudo touch...) এবং এটি সম্পাদনযোগ্য ( sudo chmod +x ...) করতে পারেন ।


4
#!/bin/bashযদিও #!/bin/shআপনার স্ক্রিপ্টে সত্যিই বাশ দরকার নেই ততক্ষণ ব্যবহার করবেন না । পারফরম্যান্সের কারণে অন্যান্য সমস্ত সিস্টেম স্ক্রিপ্টগুলি ড্যাশ ব্যবহার করে, ব্যাশ নয়।
spikyjt

"সিস্টেমড-আরসি-লোকাল জেনারেটর দ্বারা অন্যভাবে করা এমন কোনও কিছু পুনরায় তৈরি বা জোর করার দরকার নেই" অন্য rc-localকোনও ইউনিটের পরে এটি অর্ডার করার অনুমতি দেয় না, তাই না?
এক্স-ইউরি

20

আমি এই সমাধানটি systemd এখানে ব্যবহারের সাথে জড়িত বলে প্রস্তাবিত দেখেছি :

  1. একটি পরিষেবা তৈরি করুন:

    sudo vi /etc/systemd/system/rc-local.service
    
  2. সেখানে আপনার কোড যুক্ত করুন:

    [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
    
  3. তৈরি করুন এবং /etc/rc.localনির্বাহযোগ্য কিনা তা নিশ্চিত করুন এবং এর মধ্যে এই কোডটি যুক্ত করুন:

    sudo chmod +x /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.
    
    exit 0
    
  4. পরিষেবাটি সক্ষম করুন:

    sudo systemctl enable rc-local
    
  5. পরিষেবা শুরু করুন এবং স্থিতি পরীক্ষা করুন:

    sudo systemctl start rc-local.service
    sudo systemctl status rc-local.service
    
  6. যদি সবকিছু ঠিকঠাক codeহয় তবে আপনি /etc/rc.localফাইলটিতে নিজের যোগ করতে পারেন তবে এটি পুনরায় চালু করুন।

দ্রষ্টব্য: লুবন্তু 16.10 তে পরীক্ষা করা হয়েছে।

উৎস:

https://www.linuxbabe.com/linux-server/how-to-enable-etcrc-local-with-systemd


আমি সব ধাপে করেছি। আমার সাথে rc.local আছে: এর touch "hello"আগে exit 0। পরিষেবাটি সক্রিয় বলে মনে হচ্ছে তবে এটি উবুন্টুতে চালানো / ইত্যাদি / দির কোনও ফাইল তৈরি করে না 16.04 আরবীয় 5.31
ড্যানি 182

@ জ্যানের উত্তর হিসাবে উল্লেখ করা হয়েছে যে, সিস্টেমড ইতিমধ্যে rc.local সমর্থন করে বলে একটি সম্পূর্ণ নতুন পরিষেবা তৈরি করা প্রয়োজনীয় নয়।
টমিপীনাটস

আপনাকে ইউউউউউউউউউউউউউউউউউউউউউ ধন্যবাদ জানায়, এটি স্রেফ কাজ করে
জিপিথ্যাথ

2

জানের জবাব যোগ করতে যে, সাধারণ rc.localফাইলের বিপরীতে , rc-local serviceসমস্ত পরিষেবা শুরু করার পরে নয়, তবে নেটওয়ার্কটি অনলাইনে যাওয়ার পরে কার্যকর করা হয়।

কিছু ক্ষেত্রে আপনি rc.localপরে থেকে কমান্ড চালাতে চাইতে পারেন । উদাহরণস্বরূপ, আমি চেয়েছিলাম এটি lxdশুরু হওয়ার পরে কার্যকর করা হোক ।

rc-local serviceএক্ষেত্রে আপনি একটি ড্রপ-ইন সিফ ফাইল তৈরি করে সূচনা নির্ভরতা সম্পাদনা করতে পারেন : /etc/systemd/system/rc-local.service.d/override.conf সামগ্রী সহ:

[Unit]
After=network.target lxd.service

যেখানে আপনি প্রয়োজনীয় ইউনিটের নাম যুক্ত করতে পারেন (যেমন আমি যুক্ত করেছি lxd.service)

তারপরেও ভুলে যাবেন না systemctl daemon-reload


উবুন্টুকে জিজ্ঞাসা করুন স্বাগতম! আপনি যদি অন্য উত্তরটি উন্নত করতে চান তবে দয়া করে এটিতে একটি সম্পাদনার পরামর্শ দিন। আপনি যদি কোনও আংশিক বিকল্প উপস্থাপন করতে চান তবে দয়া করে একই অংশগুলিকে পুনরাবৃত্তি করুন বা উদ্ধৃতি দিন (মূল উত্তর পরিবর্তনের ক্ষেত্রে) এবং পার্থক্যগুলি হাইলাইট করুন। যে কোনও ক্ষেত্রে একটি নতুন অসম্পূর্ণ উত্তর তৈরি করবেন না ! ধন্যবাদ.
ডেভিড ফোরস্টার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.