업스트림 단위 파일을 변경하지 않고 시스템 단위 파일 수정


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>
muru

7
를 사용하여 첫 번째 systemctl edit --full <service-name>.
grawity

22

RHEL 설명서는 다음 두 가지 방법을 권장합니다.

  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/하고 화장이 변경됩니다.

옵션 1을 시도하지만 둘 다 가능한 옵션입니다. 어느 쪽이든 systemctl daemon-reload변경 한 후에 실행하는 것을 잊지 마십시오 .

시스템 단위 파일 작성 및 수정에 대한 RHEL 설명서


0

스크립트를 사용하여 업스트림 구성을 읽고 수정 한 후 드롭 인 파일에 뱉어보십시오.

예를 들어 Chef를 사용하고 여기에 마라톤 시스템 단위 파일을 구문 분석하여 원본 ExecStart를 가져 오는 루비 (라이브러리)가 있습니다.

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

그런 다음 레시피에서 드롭 인 파일을 작성하여 ExecStart에 옵션을 추가합니다.

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.