Sistem birimi birim dosyasını, giriş birimi birim dosyasını değiştirmeden değiştirme


24

pimdHizmeti aracılığıyla yükledim apt. Bu bir yukarı akış systemdbirim dosyası ( /lib/systemd/system/pimd.service) ile birlikte gelir .

Bir nedenden dolayı öldürüldüğünde hizmetin yeniden başlatılmasını istiyorum, bu yüzden Restart = alwaysbirimi birim dosyasına eklemek istiyorum .

Ancak, yukarı akış birim dosyasını değiştirmek istemiyorum.

Bunun için herhangi bir geçici çözüm var mı?



Ne denedin
030

Yanıtlar:


35

İki seçeneğiniz var:

  • Dan birim dosya kopyalama /lib/systemd/system/için /etc/systemd/system/.
    Ardından /etc/systemd/system/pimd.service, paket bakımcısı tarafından sağlanan birim dosyalarını tamamen geçersiz kılmak için değişikliklerinizi yapın .

    Komut systemctl edit --full <service-name>bunu sizin için otomatik hale getirir.

  • .confBir açılır dizinde dosya oluşturarak birim dosyalarını değiştirmek zorunda kalmadan, birimin belirli yapılandırma ayarlarını değiştirebilir veya ekleyebilirsiniz./etc/systemd/system/<unit-name>.<unit-type>.d/
    bir yaratmak yani/etc/systemd/system/pimd.service.d/restart.conf

    Komut systemctl edit <service-name>bu adımları sizin için gerçekleştirir.

Görmek man systemd.unit


10
İkinci seçenek kullanılarak daha kolay hale getirilebilirsystemctl edit <service-name>
muru

7
Ve birincisini kullanarak systemctl edit --full <service-name>.
Gra

22

RHEL belgeleri iki yol önermektedir:

  1. Altında bir yapılandırma dizini ve dosya oluşturarak varsayılan birim dosyasını genişletin /etc/systemd/system/[name-goes-here].service.d/config_name.conf

Bu durumda, dosyanın şöyle bir şey içermesi gerekir:

[Service]
Restart=always

Bu ne systemctl edit [name-goes-here]yapar, o dizini ve override.confiçinde yaratır .

  1. Orijinal birim dosyasının bir kopyasını oluşturun /usr/lib/systemd/system/içinde /etc/systemd/system/ve makyaj orada değiştirir.

Birinci seçeneği deneyebilirim ama ikisi de uygun seçenek. Her iki durumda systemctl daemon-reloadda değişiklikleri yaptıktan sonra kaçmayı unutmayın .

Sistem Birimi Dosyalarının Oluşturulması ve Değiştirilmesi Konusunda RHEL Belgeleri


0

Yukarı akış yapılandırmasını okumak için bir komut dosyası kullanmayı düşünün, değiştirin ve açılan dosyaya tükürün.

Örneğin, Chef kullanıyorum ve işte orijinal ExecStart'ı almak için maraton sistemd birim dosyasını ayrıştıran bir parça yakut (kütüphane).

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

Sonra tarifte, ExecStart'a bir seçenek eklemek için açılan dosyayı oluşturuyorum

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.