그래서 서비스 유닛(일부 노드 코드를 실행함)과 타이머 유닛 서비스가 있습니다.
[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
항상 서비스 장치가 즉시 시작됩니다.