[email protected]
システムタイマーテンプレートとそのサービスがあります[email protected]
。これは毎日行われ、RandomizedDelaySec
時間は2時間で十分です。この作品には多くの例があります。
テンプレートのすべてのインスタンスを並列に実行しないようにsystemdに指示できますか?
このようなタスクはネットワーク負荷が高い。並行して実行すると速度が遅くなるため、タスクを時間通りに実行するよりもすばやく完了することが重要です。
[email protected]
またはConflicts=job@*.timer
動作しません。
[Unit]
Description=Run network intensive script for %i
[Timer]
OnCalendar=daily
RandomizedDelaySec=2h
Persistent=true
[Install]
WantedBy=timers.target
[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
これにより、一度に1つのスクリプトインスタンスのみを実行でき、他のインスタンスはスクリプトが完了するまでブロックされます。