systemctl start foo.timer는 OnCalendar 기준이 아직 충족되지 않은 경우에도 foo.service를 시작합니다.

systemctl start foo.timer는 OnCalendar 기준이 아직 충족되지 않은 경우에도 foo.service를 시작합니다.

그래서 서비스 유닛(일부 노드 코드를 실행함)과 타이머 유닛 서비스가 있습니다.

[Unit]
Description=foo

[Service]
Type=oneshot
ExecStart=/home/ubuntu/services/foo/start.sh

시간제 노동자

[Unit]
Description=foo timer 

[Timer]
OnBootSec=0min
OnCalendar=*-*-* 05:01:00 UTC 
Unit=foo.service 

[Install]
WantedBy=multi-user.target

내가 이해한 바에 따르면 systemctl start foo.timer타이머 장치는 시작되지만 서비스 장치는 즉시 시작되지 않으며(재부팅 필요 없음) systemctl enable foo.timer 타이머 장치는 시작되지 않지만 시스템 부팅 시 시작됩니다.

타이머를 즉시 시작하고 싶어서 전자를 사용했습니다. 그것은 타이머를 시작하지만 조건이 충족되지 않더라도 foo.service타이머를 시작하기 때문에 나를 시작하기도 합니다. OnCalendar그 당시에도 여전히 올바르게 시작되었습니다 OnCalendar(테스트 중이어서 가까운 미래의 시간을 선택했습니다).

내 유닛 파일에 이 문제를 일으키는 것이 있는지 궁금합니다. 타이머를 시작하면 서비스가 시작되지 않고 타이머의 조건이 충족되어야만 서비스가 시작된다고 생각합니다.

또한 이 방법으로 테스트했는데 system enable올바르게 작동합니다. 내 foo.timer시스템을 다시 시작했습니다. 타이머가 활성화되어 있지만 서비스를 즉시 사용할 수는 없습니다. 시간이 되면 OnCondition서비스가 시작됩니다.

답변1

~에서systemd.timer(5):

타이머가 구성되었거나 타이머 장치가 활성화될 때 경과된 경우 OnBootSec=타이머 OnStartupSec=는 즉시 만료되고 구성된 장치가 시작됩니다. 다른 지시문에 정의된 타이머의 경우에는 그렇지 않습니다.

타이머 장치가 설정되어 있으므로 OnBootSec=0min항상 서비스 장치가 즉시 시작됩니다.

관련 정보