web-dev-qa-db-ja.com

Snapperは最近、1時間ごとに重複するスナップショットの実行を開始しました

過去2年間、Snapperは1時間ごとのスナップショット(1時間ごと)を実行するために完璧に機能してきました。数日前、2つのスナップショットが1時間ごとに作成されていることに気付きました。 1つは正時(HH:00)で、もう1つは正時(HH:01)の1分後です。

スナッパーログファイルには、これらの重複スナップショットの両方について、libsnapperの同じプロセスIDが表示されます。 1時間ごとに新しいプロセスIDがありますが、重複するスナップショットは、ログに従って同じプロセスIDによって実行されます。ログでは、物事は正常に見えます。私が見ることができることから、仕事は単に2回繰り返されます。

snapper list-configsには重複する構成がありません。

私は常にsystemdタイマーを有効にして、snapper-timeline.timer( SnapperのArchのwikiページ に従って設定されました)を開始していました。

ルートcronがありません:

# crontab -l
no crontab for root

私の知る限り、どのユーザーにもcronはありません。/var/spool/cron/は空です。

これが本当に奇妙なことです。 snapper-timeline.timerを停止して無効にすると、時間のスナップショットは停止しますが、時間の1分後のスナップショットは続行されます。これは、再起動後も当てはまります。

上記の手順の後、systemctlによってリストされたsnapper-timeline.timerエントリはありません。

$ systemctl --user list-timers
0 timers listed.
$ Sudo systemctl list-timers
NEXT                         LEFT          LAST                         PASSED        UNIT                         ACTIVATES
Wed 2018-02-21 00:00:00 EST  1h 40min left Tue 2018-02-20 00:00:00 EST  22h ago       logrotate.timer              logrotate.service
Wed 2018-02-21 00:00:00 EST  1h 40min left Tue 2018-02-20 00:00:00 EST  22h ago       man-db.timer                 man-db.service
Wed 2018-02-21 00:00:00 EST  1h 40min left Tue 2018-02-20 00:00:00 EST  22h ago       shadow.timer                 shadow.service
Wed 2018-02-21 03:54:50 EST  5h 35min left Tue 2018-02-20 03:54:49 EST  18h ago       snapper-cleanup.timer        snapper-cleanup.service
Wed 2018-02-21 03:59:50 EST  5h 40min left Tue 2018-02-20 03:59:49 EST  18h ago       systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Mon 2018-02-26 00:00:00 EST  5 days left   Mon 2018-02-19 00:00:23 EST  1 day 22h ago fstrim.timer                 fstrim.service

更新:

Arch Wiki Snapperページ からわかるように、「自動タイムラインスナップショット」の下:

Cronデーモンを使用している場合、この機能[1時間ごとの自動スナップショット]が自動的に開始されます。

上で述べたように、rootおよびユーザーとしてcrontab -lをチェックしましたが、どちらも空でした。

ただし、私の場合、cronieがインストールされています(cronieはcronデーモンです)。 /etc/cron.daily/を見ると、スナッパーファイルが表示され、/etc/cron.hourly/にもスナッパーファイルが含まれています。

残りの質問は次のとおりです。

  1. どのユーザーのcrontabがSnappercronjobを表示しますか?

  2. (systemdタイマーをアクティブに保ちながら)パッケージの更新後も持続するSnapperのcronジョブを非アクティブにする方法はありますか? /etc/cron.dailyと/ etc/cron.hourly/`のエントリを削除するだけで、Snapperパッケージが更新されたときにそれらが置き換えられると思います。 [更新2:この仮定を確認するテストを行いました。コメントを参照してください。]

1
MountainX

この回答のクレジットは@jasonwryanに送られます。

Arch Wiki Snapperページ からわかるように、「自動タイムラインスナップショット」の下:

Cronデーモンを使用している場合、この機能[1時間ごとの自動スナップショット]が自動的に開始されます。

Rootおよびユーザーとしてcrontab -lをチェックしましたが、どちらも空でした。

ただし、私の場合、cronieがインストールされています(cronieはcronデーモンです)。パッケージをインストールすると、Snapperタイムラインクリーンアップスクリプトが/etc/cron.daily/に配置され、毎時スナップショットスクリプトが/etc/cron.hourly/に配置されます。 (Snapper systemdユニットが有効になっている場合でもこれを行います。)

Systemdタイマーを使用したいが、いくつかの奇妙なジョブのためにcronデーモンを保持したい場合、Snapperはcronデーモンを優先します。

(私がそうするように)cronデーモンをインストールしたままにする必要があるが、systemdでSnapperタイマーを管理したい場合、解決策(@jasonwryanに感謝)は次のとおりです。

  1. / etc/pacman.conf`を編集します

  2. NoExtractディレクティブのコメントを解除します(コメントされている場合)。

  3. 次の2つのファイルをSnapperパッケージからNoExtractディレクティブに追加します

    etc/cron.daily/snapper etc/cron.hourly/snapper

複数のファイルを追加するための構文について、ここで説明します。

pacman.conf複数行にわたるファイルリストのNoExtract構文/ Pacmanとパッケージのアップグレードの問題/ Arch Linuxフォーラム

/etc/pacman.confの結果行の例:

NoExtract = etc/cron.daily/snapper etc/cron.hourly/snapper

このソリューションはcronieで機能しますが、別のcronデーモンを使用すると、パスが異なる場合があります。

1
MountainX