
ユーザーとして毎分システムタイマーを実行しようとしていますが、最初のトリガー以降は繰り返されません。 1分ごとにトリガーするffmpeg-timelapse.timer
ように構成されており、依存サービスです。これにより、タイムラプス構成でカメラを簡単に追加/削除できます。OnCalendar=minutely
ffmpeg-timelapse.target
WantedBy
私が経験している問題は、デバイスを起動するときにffmpeg-timelapse.timer
次の分間デバイスをスケジュールしますが、繰り返されないことです。引数で始まると同じ問題が発生します--now
。
ffmpeg-timelapse.timer
[Unit]
Description=Runs ffmpeg timelapse units every minute
[Timer]
OnCalendar=minutely
Unit=ffmpeg-timelapse.target
[Install]
WantedBy=timers.target
ffmpeg-timelapse.target
[Unit]
Description=Triggers the individual timelapse units for each camera.
StopWhenUnneeded=yes
カメラサービスファイルの例。
ffmpeg-timelapse01-front-yard.service
[Unit]
Description=Front Yard Timelapse Unit
Wants=ffmpeg-timelapse.timer
[Service]
ExecStart=/bin/bash -ac '. camera01.conf ; exec ffmpeg-timelapse.sh'
[Install]
WantedBy=ffmpeg-timelapse.target
サービスを有効にして開始すると、次の分間サービスがスケジュールされます。
$ systemctl --user start ffmpeg-timelapse.timer
$ systemctl --user list-timers
NEXT LEFT LAST PASSED UNIT ACTIVATES
Sat 2020-06-06 12:08:00 EDT 12s left n/a n/a ffmpeg-timelapse.timer ffmpeg-timelapse.target
1 timers listed.
Pass --all to see loaded but inactive timers, too.
ただし、一度実行すると再実行されません。
$ systemctl --user list-timers
NEXT LEFT LAST PASSED UNIT ACTIVATES
n/a n/a Sat 2020-06-06 12:08:42 EDT 1min 2s ago ffmpeg-timelapse.timer ffmpeg-timelapse.target
1 timers listed.
Pass --all to see loaded but inactive timers, too.
このコマンドを実行しているユーザーがlinger
アクティブになりました。
$ loginctl show-user timelapse
UID=1000
GID=1000
Name=timelapse
Timestamp=Tue 2020-04-07 16:16:20 EDT
TimestampMonotonic=3291000946930
RuntimePath=/run/user/1000
[email protected]
Slice=user-1000.slice
Display=411982
State=active
Sessions=412092 411982 163185
IdleHint=no
IdleSinceHint=0
IdleSinceHintMonotonic=0
Linger=yes
ステータス出力が正しいようです。
$ systemctl --user status ffmpeg-timelapse.target
● ffmpeg-timelapse.target - Triggers the individual timelapse units for each camera.
Loaded: loaded (/home/timelapse/.config/systemd/user/ffmpeg-timelapse.target; static; vendor preset: enabled)
Active: active since Sat 2020-06-06 10:50:42 EDT; 1h 23min ago
$ systemctl --user status ffmpeg-timelapse.timer
● ffmpeg-timelapse.timer - Runs ffmpeg timelapse units every 5 minutes
Loaded: loaded (/home/timelapse/.config/systemd/user/ffmpeg-timelapse.timer; enabled; vendor preset: enabled)
Active: active (running) since Sat 2020-06-06 12:13:25 EDT; 1min 1s ago
$ systemctl --user status ffmpeg-timelapse01-front-yard.service
● ffmpeg-timelapse01-front-yard.service - Front Yard Timelapse Unit
Loaded: loaded (/home/timelapse/.config/systemd/user/ffmpeg-timelapse01-front-yard.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Sat 2020-06-06 12:14:03 EDT; 35s ago
Process: 4491 ExecStart=/bin/bash -ac '. camera01.conf ; exec ffmpeg-timelapse.sh'
Main PID: 4491 (code=exited, status=0/SUCCESS)
以下は出力ですjournalctl -xe
Jun 06 12:13:25 srv01 systemd[26482]: Started Runs ffmpeg timelapse units every minute.
-- Subject: Unit UNIT has finished start-up
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- Unit UNIT has finished starting up.
--
-- The start-up result is done.
Jun 06 12:14:02 srv01 systemd[26482]: Started Front Yard Timelapse Unit.
-- Subject: Unit UNIT has finished start-up
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- Unit UNIT has finished starting up.
--
-- The start-up result is done.
答え1
出力を見てsystemctl --user list-units --all ffmpeg*
問題を確認しました。残りのffmpeg-timelapse.target
負荷/活動/活動。イベントが実際に発生する前に設定ffmpeg-timelapse.timer
してください。SUB
waiting
UNIT LOAD ACTIVE SUB JOB DESCRIPTION
ffmpeg-timelapse.target loaded active active start Triggers the individual timelapse units for each camera.
ffmpeg-timelapse.timer loaded active running Runs ffmpeg timelapse units every minute
欠陥は[Unit]
構成にありますffmpeg-timelapse.target
。構成を追加する必要がありますoneshot
。それ以外の場合、ターゲットデバイスはまだアクティブです。
$ cat ffmpeg-timelapse.target
[Unit]
Type=oneshot
Description=Triggers the individual timelapse units for each camera.
StopWhenUnneeded=yes
これで、予想通り毎分繰り返されます。
$ systemctl --user list-timers
NEXT LEFT LAST PASSED UNIT ACTIVATES
Sat 2020-06-06 12:58:00 EDT 13s left Sat 2020-06-06 12:57:42 EDT 3s ago ffmpeg-timelapse.timer ffmpeg-timelapse.target
今ユニットの様子はこんな感じです。
UNIT LOAD ACTIVE SUB DESCRIPTION
ffmpeg-timelapse01-front-yard.service loaded inactive dead Front Yard Timelapse Unit
ffmpeg-timelapse.target loaded inactive dead Triggers the individual timelapse units for each camera.
ffmpeg-timelapse.timer loaded active waiting Runs ffmpeg timelapse units every minute
項目別のステータス出力です。
$ systemctl --user status ffmpeg-timelapse.timer
● ffmpeg-timelapse.timer - Runs ffmpeg timelapse units every minute
Loaded: loaded (/home/timelapse/.config/systemd/user/ffmpeg-timelapse.timer; enabled; vendor preset: enabled)
Active: active (waiting) since Sat 2020-06-06 12:59:30 EDT; 3min 43s ago
$ systemctl --user status ffmpeg-timelapse.target
● ffmpeg-timelapse.target - Triggers the individual timelapse units for each camera.
Loaded: loaded (/home/timelapse/.config/systemd/user/ffmpeg-timelapse.target; static; vendor preset: enabled)
Active: inactive (dead) since Sat 2020-06-06 13:03:11 EDT; 6s ago
$ systemctl --user status ffmpeg-timelapse01-front-yard.service
● ffmpeg-timelapse01-front-yard.service - Front Yard Timelapse Unit
Loaded: loaded (/home/timelapse/.config/systemd/user/ffmpeg-timelapse01-front-yard.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Sat 2020-06-06 13:03:12 EDT; 8s ago
Process: 9607 ExecStart=/bin/bash -ac '. camera01.conf ; exec ffmpeg-timelapse.sh'
Main PID: 9607 (code=exited, status=0/SUCCESS)