systemd.path 또는 systemd.timer 유닛에 여러 Unit= 인스턴스가 존재할 수 있습니까? 아니면 각각 Unit= 인스턴스가 있는 타이머 장치의 경로나 여러 인스턴스를 지정해야 합니까? 다른 곳에서는 지침을 찾거나 얻을 수 없습니다.
전자가 확실히 더 쉽습니다.
특정 응용 프로그램은 하나의 경로 장치가 두 개의 설치 장치를 활성화하도록 하는 것입니다.
특히, 경로 유닛은 가상머신이 실행되기 전 조용해지는 가상머신의 로그 파일을 모니터링한다. 마운트는 가상 머신의 공유이며 호스트의 fstab 항목에 정의됩니다. 각 항목은 x-systemd.requires= 마운트 옵션을 사용하여 가상 머신이 시작될 때까지 마운트가 발생하지 않도록 경로 단위를 지정합니다. 달리기. 이는 단일 공유에 적합합니다.
따라서 보다 구체적인 질문은 (a) 경로 유닛이 지시에 따라 마운트 유닛을 단순히 전파하여 마운트 유닛이 공유를 마운트하도록 하는지, 아니면 혼란스러워서 경로 유닛이 단일 마운트 유닛만 전파할 수 있는지 여부입니다. fstab에서 동일한 경로 유닛을 두 번 호출하면 충돌이나 오류가 발생합니까, 아니면 많은 Unit= 지시문을 사용할 때(즉, 지정된 모든 마운트 지점을 다시 생성하여) 종속성의 표현일 뿐입니다.
매우 감사합니다.
답변1
man systemd.timer
설명하다:
단위 =
타이머가 만료되면 활성화되는 장치입니다. 매개변수는 접미사가 ".timer"가 아닌 유닛 이름입니다. 지정하지 않으면 이 값은 타이머 단위와 동일한 이름(접미사 제외)을 가진 서비스로 기본 설정됩니다. (위 참조) 활성화된 유닛의 이름은 접미사를 제외하고 타이머 유닛의 유닛 이름과 동일하게 지정하는 것이 좋습니다.
man systemd.path
마찬가지로 이렇게 말했습니다.
단위 =
구성된 경로가 변경되면 활성화되는 장치입니다. 매개변수는 접미사가 ".path"가 아닌 유닛 이름입니다. 지정하지 않으면 이 값은 기본적으로 경로 단위(접미사 제외)와 동일한 이름을 가진 서비스로 설정됩니다. (위 참조) 활성 유닛 이름은 접미사를 제외하고 경로 유닛의 유닛 이름과 동일하게 지정하는 것이 좋습니다.
Unit=
이 중 어느 것도 여러 행 또는 행당 여러 매개변수를 가질 수 있다는 것을 암시하지 않습니다 Unit=
. 시도해 보고 작동한다고 하더라도 문서화되지 않은 동작이므로 향후 버전의 systemd에서도 작동할 것이라는 보장은 없습니다.
따라서 *.path
동일한 또는 유닛을 의미하더라도 트리거되어야 하는 각 유닛에 대해 /를 생성하는 것이 가장 안전합니다. 시스템에 이미 여러 장치가 있을 수 있습니다.*.timer
*.path
*.timer
*.timer
OnCalendar=daily
솔직히 말해서 경로에 도달하여 두 개의 별도 서비스를 실행하면 조금 무서울 것입니다. 경쟁 조건이 발생합니다. 여러 작업을 사용하거나 작업 순서를 지정하여 항상 정해진 순서대로 발생하도록 서비스를 변경하는 것을 고려할 수 ExecStartPre=
있습니다 ExecStartPost=
.