過去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/
にもスナッパーファイルが含まれています。
残りの質問は次のとおりです。
どのユーザーのcrontabがSnappercronjobを表示しますか?
(systemdタイマーをアクティブに保ちながら)パッケージの更新後も持続するSnapperのcronジョブを非アクティブにする方法はありますか? /etc/cron.daily
と/ etc/cron.hourly/`のエントリを削除するだけで、Snapperパッケージが更新されたときにそれらが置き換えられると思います。 [更新2:この仮定を確認するテストを行いました。コメントを参照してください。]
この回答のクレジットは@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に感謝)は次のとおりです。
/ etc/pacman.conf`を編集します
NoExtract
ディレクティブのコメントを解除します(コメントされている場合)。
次の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デーモンを使用すると、パスが異なる場合があります。