동일한 템플릿의 시스템 타이머 인스턴스가 병렬로 실행되고 있지 않은지 확인하세요.

동일한 템플릿의 시스템 타이머 인스턴스가 병렬로 실행되고 있지 않은지 확인하세요.

[email protected]시스템 타이머 템플릿 과 해당 서비스가 있습니다 [email protected]. 이 작업은 매일 수행되며 RandomizedDelaySec시간은 2시간이면 충분합니다. 이 작품에는 많은 예가 있습니다.

템플릿의 모든 인스턴스를 병렬로 실행하지 않도록 systemd에 지시할 수 있나요?

이러한 작업은 네트워크 부하가 높습니다. 병렬로 실행하면 속도가 느려지므로 작업을 제 시간에 실행하는 것보다 빠르게 완료하는 것이 더 중요합니다.

[email protected]아니면 Conflicts=job@*.timer작동하지 않습니다.

[email protected]:

[Unit]
Description=Run network intensive script for %i

[Timer]
OnCalendar=daily
RandomizedDelaySec=2h
Persistent=true

[Install]
WantedBy=timers.target

[email protected]:

[Unit]
Description=Run network intensive script for %i

[Service]
Type=oneshot
ExecStart=/my/fancy/script.sh %i

답변1

서비스 단위에 명시적인 잠금을 추가하여 이 문제를 해결할 수 있습니다.

[Service]
Type=oneshot
ExecStart=/usr/bin/flock -F /path/to/some/lockfile /my/fancy/script.sh %i

이렇게 하면 한 번에 하나의 스크립트 인스턴스만 실행할 수 있으며, 다른 인스턴스는 스크립트가 완료될 때까지 차단됩니다.

관련 정보