システムタイマーが見逃したイベントを実行しないようにしてください。

システムタイマーが見逃したイベントを実行しないようにしてください。

ここに公開されているソリューションを試した後(起動時にシステムタイマーが実行されないようにする)、システムタイマーの問題が解決されたと思いました。ただし、最後の再起動後に起動中にサービスが開始されました(欠落しているイベントを補足したようです)。

問題のファイルは次のとおりです。

btrfs_backup.timer

[Unit]
Description=Create mirror of current state of all BTRFS snapshots
Requires=btrfs_backup.service

[Timer]
# hourly, with a 5-minute delay, as to not interfere with the
# snapper-timeline.service.
Unit=btrfs_backup.service
OnCalendar=*-*-* *:05:00
Persistent=false

[Install]
WantedBy=timers.target

btrfs_backup.service

[Unit]
Description=Create mirror of current state of all BTRFS snapshots
Wants=btrfs_backup.timer

[Service]
Type=oneshot
ExecStart=/usr/local/sbin/btrfs_backup
Environment="DISPLAY=:0.0"
Environment="XDG_RUNTIME_DIR=/run/user/0"

デフォルトでは、snapperのタイムラインシステムファイルからこの(2)ファイルをコピーしたため、この設定が機能しない理由を理解できません。タイマーから[インストール]部分を取り除こうという提案も見たが、すべてマイシステム(スナッパシステムを含む)のタイマーには[インストール]セクションがあります。

他のすべてはうまく動作します。サービスが正しく完了し、デスクトップに通知が表示されます。

アップデート#1:問題のイベントに関連する過去数時間の履歴:

Mar 01 14:05:09 dss-mint systemd[1]: Starting Create mirror of current state of all BTRFS snapshots...
Mar 01 14:05:09 dss-mint systemd[1]: btrfs_backup.service: Succeeded.
Mar 01 14:05:09 dss-mint systemd[1]: Finished Create mirror of current state of all BTRFS snapshots.
Mar 01 15:05:09 dss-mint systemd[1]: Starting Create mirror of current state of all BTRFS snapshots...
Mar 01 15:05:09 dss-mint systemd[1]: btrfs_backup.service: Succeeded.
Mar 01 15:05:09 dss-mint systemd[1]: Finished Create mirror of current state of all BTRFS snapshots.
Mar 01 16:05:09 dss-mint systemd[1]: Starting Create mirror of current state of all BTRFS snapshots...
Mar 01 16:05:09 dss-mint systemd[1]: btrfs_backup.service: Succeeded.
Mar 01 16:05:09 dss-mint systemd[1]: Finished Create mirror of current state of all BTRFS snapshots.
-- Reboot --
Mar 01 17:24:01 dss-mint systemd[1]: Starting Create mirror of current state of all BTRFS snapshots...
Mar 01 17:24:01 dss-mint systemd[1]: btrfs_backup.service: Succeeded.
Mar 01 17:24:01 dss-mint systemd[1]: Finished Create mirror of current state of all BTRFS snapshots.
Mar 01 18:05:19 dss-mint systemd[1]: Starting Create mirror of current state of all BTRFS snapshots...
Mar 01 18:05:19 dss-mint systemd[1]: btrfs_backup.service: Succeeded.
Mar 01 18:05:19 dss-mint systemd[1]: Finished Create mirror of current state of all BTRFS snapshots.

アップデート#2:良いです。今朝はコンピュータの電源を入れました。起動が完了した直後にサービスが実行されていましたが、タイマーは実行されませんでした。

$ ls-timers
NEXT                        LEFT          LAST                        PASSED       UNIT                         ACTIVATES                     
Tue 2021-03-02 08:43:16 PST 12min left    n/a                         n/a          systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Tue 2021-03-02 09:00:00 PST 29min left    n/a                         n/a          snapper-timeline.timer       snapper-timeline.service      
Tue 2021-03-02 09:01:57 PST 31min left    n/a                         n/a          btrfs_backup.timer           btrfs_backup.service          
Tue 2021-03-02 11:17:38 PST 2h 46min left Mon 2021-03-01 19:30:22 PST 13h ago      fwupd-refresh.timer          fwupd-refresh.service         
Tue 2021-03-02 16:53:23 PST 8h left       Mon 2021-03-01 12:52:17 PST 19h ago      motd-news.timer              motd-news.service             
Wed 2021-03-03 00:00:00 PST 15h left      Tue 2021-03-02 08:28:52 PST 1min 53s ago logrotate.timer              logrotate.service             
Wed 2021-03-03 00:00:00 PST 15h left      Tue 2021-03-02 08:28:52 PST 1min 53s ago man-db.timer                 man-db.service                
Sun 2021-03-07 03:10:21 PST 4 days left   Sun 2021-02-28 08:27:47 PST 2 days ago   e2scrub_all.timer            e2scrub_all.service           
Mon 2021-03-08 00:00:00 PST 5 days left   Mon 2021-03-01 08:33:26 PST 23h ago      fstrim.timer                 fstrim.service                
n/a                         n/a           Tue 2021-03-02 08:30:06 PST 39s ago      anacron.timer                anacron.service               
n/a                         n/a           Tue 2021-03-02 08:28:52 PST 1min 53s ago snapper-boot.timer           snapper-boot.service

理解できません。サービスを有効にしたことがないため、タイマーによってのみトリガーされます。

$ systemctl status btrfs_backup.service
● btrfs_backup.service - Create mirror of current state of all BTRFS snapshots
     Loaded: loaded (/etc/systemd/system/btrfs_backup.service; static; vendor preset: enabled)
     Active: inactive (dead) since Tue 2021-03-02 08:35:24 PST; 1min 8s ago
TriggeredBy: ● btrfs_backup.timer
    Process: 1206 ExecStart=/usr/local/sbin/btrfs_backup (code=exited, status=0/SUCCESS)
   Main PID: 1206 (code=exited, status=0/SUCCESS)

ベストアンサー1

Requires=btrfs_backup.serviceタイマーをオフにしてみてください。

これsystemd.unit(5) のマニュアルページRequires=要件も有効になると言います。したがって、アクティベーションタイマーは要求をアクティベートしますbtrfs_backup.service

おすすめ記事