에 pimd
의해 서비스를 설치했습니다 apt
. 이것은 업스트림 systemd
유닛 파일 ( /lib/systemd/system/pimd.service
) 과 함께 제공됩니다 .
어떤 이유로 서비스가 종료 될 때 서비스를 다시 시작하고 싶습니다. 따라서 Restart = always
단위 파일에 줄을 추가하고 싶습니다 .
그러나 업스트림 단위 파일을 수정하고 싶지 않습니다.
이에 대한 해결 방법이 있습니까?
에 pimd
의해 서비스를 설치했습니다 apt
. 이것은 업스트림 systemd
유닛 파일 ( /lib/systemd/system/pimd.service
) 과 함께 제공됩니다 .
어떤 이유로 서비스가 종료 될 때 서비스를 다시 시작하고 싶습니다. 따라서 Restart = always
단위 파일에 줄을 추가하고 싶습니다 .
그러나 업스트림 단위 파일을 수정하고 싶지 않습니다.
이에 대한 해결 방법이 있습니까?
답변:
두 가지 옵션이 있습니다.
단위 파일을에서 (으) /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
systemctl edit <service-name>
systemctl edit --full <service-name>
.
RHEL 설명서는 다음 두 가지 방법을 권장합니다.
/etc/systemd/system/[name-goes-here].service.d/config_name.conf
이 경우 파일에는 다음과 같은 내용이 포함되어야합니다.
[Service]
Restart=always
이것이하는 일이며 systemctl edit [name-goes-here]
, 그 디렉토리와 그 override.conf
안에 디렉토리를 만듭니다 .
원래 유닛 파일의 복사본 만들기
/usr/lib/systemd/system/
에을/etc/systemd/system/
하고 화장이 변경됩니다.
옵션 1을 시도하지만 둘 다 가능한 옵션입니다. 어느 쪽이든 systemctl daemon-reload
변경 한 후에 실행하는 것을 잊지 마십시오 .
스크립트를 사용하여 업스트림 구성을 읽고 수정 한 후 드롭 인 파일에 뱉어보십시오.
예를 들어 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