나는 여러 가지 직업을 가지고 있으며 정기적으로 시작하지만 서로 상쇄되도록 시스템을 원합니다.
이 작업들은 매우 유사하기 때문에 시스템화된 템플릿 단위를 사용하여 모든 작업을 다루고 싶었습니다.
그러나 이러한 작업은 약간의 부하를 유발할 수 있으므로 시작 시간을 정렬하고 실제 서비스마다 다른 시스템 타이머를 사용하고 싶습니다.
템플릿을 기반으로 서비스를 생성하는 동안 추가 매개변수(특정 시작 시간)를 전달할 수 있는 방법이 있나요?
systemctl start MyGeneralService@Specific1.{AdditionalArgument??}.service
아니면 나중에 셀 템플릿에서 사용되는 변수를 읽는 방법이 있습니까?
[Service]
MyVar = {?XYZ?} /etc/MyService.d/%i.conf {?XYZ?}
[Timer]
OnCalendar=*:0/{?MyVar?}
아니면 템플릿에서 파생 서비스에 대한 종속성을 정의할 수 있는 방법이 있나요? 즉, before=/after= 동적으로(??) 방식으로 서비스를 파생시키는 것입니다.
Specific2
[Service]
After=MyGeneralService@{?%i-1?}.service
답변1
여기서 부검을 할 수 있나요? :)
너 하나 필요해시간제 노동자, 서비스를 지정하여 묶음을 만들 수 있습니다 Unit
. 예를 들어:
# systemctl edit --full --force [email protected]
...
[Timer]
Unit=MyGeneralService@%i.service
RandomizedDelaySec=30
OnActiveSec=5 #start on timer activation after 5 sec once
OnUnitActiveSec=1w #start on timer activation each 1 week pass
...
좀 더 일반적인(더러운) 방법을 원한다면 다음을 활용하여 이 작업을 수행할 수 있습니다.%제이토큰:
- 일반 서비스/타이머를 만듭니다.
- 만들다하드 링크서비스/타이머에 필수 매개변수를 마지막 접두어 단어로 지정하여 다음과 같이 지정합니다.
-
예:
# systemctl edit --full --force [email protected]
...
[Timer]
Unit=MyGeneralService@%i.service
OnUnitActiveSec=%J
...
# ln /etc/systemd/system/[email protected] /etc/systemd/system/[email protected]
# ln /etc/systemd/system/[email protected] /etc/systemd/system/[email protected]
# systemctl daemon-reload
# systemctl show [email protected]
...
[email protected]
TimersMonotonic={ OnUnitActiveUSec=1w ; next_elapse=0 }
...
# systemctl show [email protected]
...
[email protected]
TimersMonotonic={ OnUnitActiveUSec=1d ; next_elapse=0 }
...
PS: 퀵 타이머 실습아치