다음 장치를 활성화하고 시작했습니다.
[Unit]
Description=Schedule a nightly execution at 03.15 for Backup ROOT
# Allow manual start
RefuseManualStart=no
# Allow manual stop
RefuseManualStop=no
[Timer]
#Execute job if it missed a run due to machine being off
Persistent=false
# Run every night 03.15
OnCalendar=*-*-* 03:15:00
#File describing job to execute
[email protected]
[Install]
WantedBy=timers.target
매일 밤 오전 3시 15분에 올바르게 실행되지만, 혼란을 야기하는 시작 시에도 실행됩니다! 왜 이런 일이 발생하며 이를 중지하는 방법은 무엇입니까?
답변1
이것은 훌륭한 답변을 얻었습니다이 답변도착하다 시작 시 시스템 타이머가 실행되지 않도록 방지.
요약하자면
문제는 .service 파일의 [Install] 섹션에 WantedBy=basic.target과 같은 항목을 항상 포함한다는 것입니다(표준 시스템 서비스 복제 스파게티의 일부이기 때문입니다). 이는 실제로 basic.target이 시작될 때(시스템 시작이라고도 함) 장치가 시작되도록 하는 것으로 나타났습니다.
https://www.freedesktop.org/software/systemd/man/systemd.unit.html#WantedBy= https://www.freedesktop.org/software/systemd/man/systemd.special.html#basic.target
너무 길면 .service 파일의 [Install] 섹션이 .timer 파일에 의해 트리거되는 것을 원하지 않습니다.
추가 단계로서비스를 비활성화해야 합니다systemctl 비활성화 [서비스 이름]
그런 다음 다시 활성화하려는 경우 활성화할 수 없으며 다음과 유사한 오류가 나타납니다.
라고 적힌 부분을 주목해주세요
...필요할 때 활성화로 시작됩니다(소켓, 경로, 타이머...
The unit files have no installation config (WantedBy=, RequiredBy=, Also=,
Alias= settings in the [Install] section, and DefaultInstance= for template
units). This means they are not meant to be enabled using systemctl.
Possible reasons for having this kind of units are:
• A unit may be statically enabled by being symlinked from another unit's
.wants/ or .requires/ directory.
• A unit's purpose may be to act as a helper for some other unit which has
a requirement dependency on it.
• A unit may be started when needed via activation (socket, path, timer,
D-Bus, udev, scripted systemctl call, ...).
• In case of template units, the unit is meant to be enabled with some
instance name specified.
답변2
나도 같은 문제를 겪고 있습니다. OnCalendar에 바인딩된 타이머는 시작될 때마다 시작됩니다. 시간제 노동자:
[Unit]
Description=Samba backup timer
#Requires=samba-backup.service
[Timer]
OnCalendar=*-*-* 01:00:00
Persistent=true
AccuracySec=1s
Unit=samba-backup.service
[Install]
WantedBy=timers.target
제공하다:
[Unit]
Description=Samba backup service
[Service]
#User=root
#Group=root
Type=oneshot
ExecStart=/usr/local/sbin/samba-backup.sh
StandardOutput=append:/var/log/samba-backup.log
StandardError=append:/var/log/samba-backup-err.log
내 의견 다음에 타이머와 서비스 장치는 /etc/systemd/system에 배치됩니다.#Requires=samba-backup.service 모든 것이 잘 작동하며 타이머는 스케줄러 시간에 따라서만 시작됩니다.