আপস্ট্রিম ইউনিট ফাইলটি পরিবর্তন না করে সিস্টেমড ইউনিট ফাইল সংশোধন করুন


24

আমি এর মাধ্যমে pimdপরিষেবাটি ইনস্টল করেছি apt। এটি একটি আপস্ট্রিম systemdইউনিট ফাইল ( /lib/systemd/system/pimd.service) এর সাথে আসে ।

আমি চাই যে কোনও কারণে এটি মারা যাওয়ার পরে পরিষেবাটি আবার চালু করা হোক, তাই আমি Restart = alwaysইউনিট ফাইলে লাইনটি যুক্ত করতে চাই ।

তবে আমি প্রবাহের ইউনিট ফাইলটি পরিবর্তন করতে চাই না।

এটির জন্য কি কোনও কার্যকারিতা রয়েছে?



তুমি কি চেষ্টা করেছ?
030

উত্তর:


35

আপনার দুটি বিকল্প রয়েছে:

  • থেকে ইউনিট ফাইলটি কপি করুন /lib/systemd/system/থেকে /etc/systemd/system/
    এবং তারপরে /etc/systemd/system/pimd.serviceপ্যাকেজ রক্ষণাবেক্ষণকারী দ্বারা সরবরাহ করা ইউনিট ফাইল (গুলি) সম্পূর্ণরূপে ওভাররাইড করতে আপনার পরিবর্তনগুলি করুন ।

    কমান্ডটি systemctl edit --full <service-name>আপনার জন্য এটি স্বয়ংক্রিয়ভাবে চলে।

  • আপনি একটি ইউনিটের জন্য নির্দিষ্ট কনফিগারেশন সেটিংস পরিবর্তন বা যুক্ত করতে পারবেন, .confড্রপ-ইন ডিরেক্টরিতে ফাইল তৈরি করে ইউনিট ফাইলগুলি পরিবর্তন না করে /etc/systemd/system/<unit-name>.<unit-type>.d/
    অর্থাৎ একটি তৈরি করুন/etc/systemd/system/pimd.service.d/restart.conf

    কমান্ডটি systemctl edit <service-name>আপনার জন্য এই পদক্ষেপগুলি সম্পাদন করে।

দেখ man systemd.unit


10
দ্বিতীয় বিকল্পটি ব্যবহার করে আরও সহজ করা যায়systemctl edit <service-name>
মারু

7
এবং প্রথমটি ব্যবহার করে systemctl edit --full <service-name>
মাধ্যাকর্ষণ

22

আরএইচইএল ডকুমেন্টেশন দুটি উপায়ে সুপারিশ করে:

  1. একটি কনফিগারেশন ডিরেক্টরি এবং এর অধীনে ফাইল তৈরি করে ডিফল্ট ইউনিট ফাইলটি প্রসারিত করুন /etc/systemd/system/[name-goes-here].service.d/config_name.conf

এক্ষেত্রে ফাইলটিতে এমন কিছু থাকা দরকার:

[Service]
Restart=always

এটি যা systemctl edit [name-goes-here]করে তা এটি ডিরেক্টরিটি তৈরি করে এবং এর override.confমধ্যে।

  1. মূল ইউনিট ফাইলের একটি অনুলিপি তৈরি করুন /usr/lib/systemd/system/মধ্যে /etc/systemd/system/করুন এবং সেখানে পরিবর্তন।

আমি বিকল্পটি এক চেষ্টা করব তবে সেগুলি উভয়ই কার্যকর বিকল্প options যে কোনও উপায়ে systemctl daemon-reloadপরিবর্তনগুলি পরে চালানো মনে রাখবেন ।

সিস্টেমড ইউনিট ফাইলগুলি তৈরি এবং সংশোধন সম্পর্কিত RHEL ডকুমেন্টেশন


0

প্রবাহের কনফিগারেশনটি পড়তে, এটিকে সংশোধন করতে এবং ফাইলটিকে ড্রপ-ইন-এ ফেলার জন্য একটি স্ক্রিপ্ট ব্যবহার করার বিষয়টি বিবেচনা করুন।

উদাহরণস্বরূপ, আমি শেফ ব্যবহার করি এবং এখানে রুবি (লাইব্রেরি) এর একটি টুকরা রয়েছে যা ম্যারাথন সিস্টেমড ইউনিট ফাইলটিকে মূল অ্যাক্সেস স্টার্টটি পেতে পার্স করে

require 'inifile'

module Dcos
  def get_execstart_from_unit_file
    marathon_systemd_unit_file = 
IniFile.load('/etc/systemd/system/dcos-marathon.service')
    return marathon_systemd_unit_file['Service']['ExecStart']
  end
end

তারপরে রেসিপিটিতে, আমি এক্সকস্টার্টে একটি বিকল্প যুক্ত করতে ড্রপ-ইন ফাইল তৈরি করি

chef_gem 'inifile'

exec_start_orig = get_execstart_from_unit_file

systemd_service_drop_in 'dcos-marathon' do
  override 'dcos-marathon.service'
  precursor 'Service' => { 'ExecStart' => nil }
  service do
    exec_start exec_start_orig + ' --env_vars_prefix "DCOS_MARATHON_"'
  end
end
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.