web-dev-qa-db-ja.com

ホームフォルダの奇妙な時間の変化

最近、システムと/ homeファイルのatime-recordsの奇妙な動作を認識しました。

簡単なスクリプトをコーディングして、/ Downloadsフォルダー内の一部のファイルが数日間変更されていないかどうかを確認し、後で削除しようとしました。認識したコードを作成しようとすると、/ homeフォルダー内のすべてのファイルが過去2日間に読み取られたことがわかりました。これは、スクリプトでのfind *の以前の使用と関係があると思いました。

これを再現してみましたが、時間は変わりませんでした。

個人データを暗号化したとき、この時間の変化はシステム起動時の復号化の結果だと思いました。シャットダウンとブートでこれを再現しようとしましたが、時間は変わりませんでした。

今、私は自分のPCを1日放っておいて、何が起こるかを見るためにコーディングを続けないようにしました。数分前にPCを起動して、何を推測しましたか...すべてのatime-recordsは起動時間に設定されています。それらはすべて同じではありませんが、数秒間異なります。

Lsofを使用していくつかの情報を取得しようとしましたが、「コマンド」gmainpoolがホームフォルダーにアクセスしました。これらの2つの「コマンド」が何をしているのか理解できませんでした。

起動時にこれらの奇妙な動作や時間の変化を見たことがありますか?私の2番目のUbuntu16.04 PCにはこの変更はありませんでしたが、/ home-folder内の個人データはそのデバイスで暗号化されていません。

この時期の変化の原因がわかった場合は、お知らせください。

宜しくお願いします

アレックス

Linux debby 4.4.0-47-generic #68-Ubuntu SMP Wed Oct 26 19:39:52 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux


Ubuntu 16.04.1 LTS \n \l

更新1

暗号化されたホームファイルを使用してvirtualboxにクリーンなubuntu16.04をインストールして、この時間の変更を再現しようとしました。

私は時間の変更を取得しません。

1日後、ファイルマネージャーで時刻を確認しようとすると、すぐに一部のファイルで時刻が変更されることに気付きました。しかし、virtualboxにクリーンなubuntuをインストールしても、これを再現することはできませんでした。

他にアイデアはありますか?


アップデート2

OK、今は本当に怖いです。私はすべての/ home-filesをチェックし、それらすべてが起動時にアクセスされます。起動直後に変更される場合もあれば、3分後にアクセスされる場合もあれば、6分後にアクセスされる場合もあります。 XPS13の起動プロセスは1分未満で完了します。現時点では、何が起こっているのかわかりませんでした。

ほとんどのファイルがアクセスされた時点でのsyslogのエントリは次のとおりです。

Nov 26 16:32:50 *** gnome-session[1869]: (nm-applet:2026): GLib-CRITICAL **: g_hash_table_remove_all: assertion 'hash_table != NULL' failed
Nov 26 16:32:50 *** gnome-session[1869]: (nm-applet:2026): nm-applet-CRITICAL **: nma_icons_free: assertion 'NM_IS_APPLET (applet)' failed

アップデート

Syslogとcronjobを読んだ後。たぶん、これは/etc/chron.dailyのgoogle-chomeまたはいくつかのファイルが変更される数秒前に開始されたorg.gnome.zeitgeist.Engineと関係があります。


アップデート4

別の日、別の情報。

今日、私は同じ時間の変化を受け取ります。しかし、これらの変更は最小限にしか表示されません。最後の変更から24時間後。さらに、変更は再起動直後、またはターミナルまたはノーチラスでls -ltuを使用してこの変更を確認した場合に発生します。これは本当に奇妙です。

Syslogをもう一度確認しました:zeitgeist-atimeが変更されてから数秒後にデーモンがクラッシュしました:

Nov 27 16:52:45 *** org.gnome.zeitgeist.Engine[1680]: (zeitgeist-daemon:2898): GLib-GIO-WARNING **: Error releasing name org.gnome.zeitgeist.Engine: The connection is closed
Nov 27 16:52:45 *** org.gnome.zeitgeist.Engine[1680]: #033[31m[15:52:45.020982 WARNING]#033[0m zeitgeist-daemon.vala:449: The connection is closed
Nov 27 16:54:11 *** gnome-session[1895]: ** (zeitgeist-datahub:2496): WARNING **: zeitgeist-datahub.vala:229: Unable to get name "org.gnome.zeitgeist.datahub" on the bus!
Nov 27 16:54:11 *** org.gnome.zeitgeist.Engine[1748]: ** (zeitgeist-datahub:2516): WARNING **: kde-recent-document-provider.vala:174: Couldn't find actor for 'basket'.

しかし、システム設定で起動する前にzeitgeistを無効にしました。私はすでにactivity.sqliteをチェックしましたが、何日も変更されていません。他のすべてのファイルと同様に、activity.sqliteの時間のみが変更されます。この時の変化は、時代精神とは何の関係もなかったと思います。

別の可能性は、この時間の数秒後に停止されたureadaheadです-変更:

Nov 27 16:54:28 *** systemd[1]: Starting Stop ureadahead data collection...
Nov 27 16:54:28 *** systemd[1]: Stopped Read required files in advance.
Nov 27 16:54:28 *** systemd[1]: Started Stop ureadahead data collection.
Nov 27 16:55:40 *** systemd[1]: Stopping User Manager for UID 109...

毎日のcronジョブがこの変更の原因だと思います。私のcron.daily-folder:

-rwxr-xr-x 1 root root 1474 Nov 26 17:42 apt-compat
-rwxr-xr-x 1 root root 3449 Nov 26 17:42 popularity-contest
-rwxr-xr-x 1 root root 2263 Nov 26 17:42 send-poke
-rwxr-xr-x 1 root root  214 Nov 26 17:42 update-notifier-common
-rwxr-xr-x 1 root root  311 Nov 26 17:42 0anacron
-rwxr-xr-x 1 root root  376 Nov 26 17:42 apport
-rwxr-xr-x 1 root root  355 Nov 26 17:42 bsdmainutils
-rwxr-xr-x 1 root root  384 Nov 26 17:42 cracklib-runtime
-rwxr-xr-x 1 root root 1597 Nov 26 17:42 dpkg
-rwxr-xr-x 1 root root  372 Nov 26 17:42 logrotate
-rwxr-xr-x 1 root root 1293 Nov 26 17:42 man-db
-rwxr-xr-x 1 root root  435 Nov 26 17:42 mlocate
-rwxr-xr-x 1 root root  249 Nov 26 16:30 passwd
-rwxr-xr-x 1 root root 1046 Nov 26 16:30 upstart
lrwxrwxrwx 1 root root   37 Nov 26 16:25 google-chrome -> /opt/google/chrome/cron/google-chrome

今、私はグーグルクロームに焦点を当てます。

何かアイデアがあれば教えてください。


アップデート5

OK、cronjobは問題ではないと思います:

$ grep run-parts /etc/crontab
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

午前6時25分に実行されますが、時間は後で変更されます。

Cron.dailyのcronジョブをクリーンなubuntuインストールのcronジョブと比較しました。

Send-pokeとgoogle-chromeだけが異なります。しかし、時が変わる時は合わない。

送信ポークを削除しました。これは、ubuntu-oem-versionからcannonicalへのping情報の一種であるためです。

ここのコードを参照してください:

apt-get source canonical-poke

今、私は時が変わる時間に焦点を合わせなければなりません。昨日の午後4時に変更が発生した場合、今日の午後4時までPCを再起動またはシャットダウンして起動しても、何も起こりません。午後4時以降に起動すると、時刻が起動時間に変わります。だから私はこれが分変わると思います。 24時間後。


アップデート6

OK、24時間の遅延とcronジョブについての私の考えが間違っているかもしれません。 cat /proc/mounts | grep "/home/"によると、私のホームフォルダにはrelatimeがマウントされているため、時間の変更は最小で行われます。 24時間後。 「zeitgeist」がテーブルに戻ってきたと思います。私は、zeitgeistが私のVanilla-ubuntu-16.04-x64インストールにインストールされていないことを理解しました。しかし、私のXPS13では、インストールされています(そして無効になっています)が、起動するたびに開始されます。

1
Alex

ホームディレクトリはecryptfsを使用して暗号化されていると思います。これが実際に当てはまる場合、あなたが見ているのは予想される動作ですが、それはあまり明白ではありません。

観察された動作は、次の2つの要因の組み合わせの結果です。

  1. ログインするたびに、ecryptfsは暗号化された各ファイルを読み取って、ファイルヘッダーに保存されているファイル暗号化キーを取得する必要があります。 man 7 ecryptfsを参照してください。これにより、各ファイルの最終アクセス時刻がログインした時刻に変更されますが、...

  2. デフォルトでは、Ubuntu、およびすべてではないにしてもほとんどのLinuxディストリビューションは、オプションrelatimeman 8 mountを参照)を使用してext4ファイルシステムをマウントします。これは、ファイルアクセス時間がすべてのアクセスではなく更新されることを意味します。ファイルの変更時刻より古い場合、または最後の更新から少なくとも24時間経過している場合のみ。これは、読み取られたすべてのファイルが読み取りに続いて書き込みに変わることを回避するために行われます。これにより、操作が高速化され、ストレージデバイスが保護されます。 SSDは、その存続期間中に限られた数の書き込みが可能です。

1
AlexP