다양한 타이머를 갖춘 systemd 템플릿 단위

다양한 타이머를 갖춘 systemd 템플릿 단위

나는 여러 가지 직업을 가지고 있으며 정기적으로 시작하지만 서로 상쇄되도록 시스템을 원합니다.

이 작업들은 매우 유사하기 때문에 시스템화된 템플릿 단위를 사용하여 모든 작업을 다루고 싶었습니다.

그러나 이러한 작업은 약간의 부하를 유발할 수 있으므로 시작 시간을 정렬하고 실제 서비스마다 다른 시스템 타이머를 사용하고 싶습니다.

템플릿을 기반으로 서비스를 생성하는 동안 추가 매개변수(특정 시작 시간)를 전달할 수 있는 방법이 있나요?

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

좀 더 일반적인(더러운) 방법을 원한다면 다음을 활용하여 이 작업을 수행할 수 있습니다.%제이토큰:

  1. 일반 서비스/타이머를 만듭니다.
  2. 만들다하드 링크서비스/타이머에 필수 매개변수를 마지막 접두어 단어로 지정하여 다음과 같이 지정합니다.-

예:

# 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: 퀵 타이머 실습아치

관련 정보