0

Linuxカーネルシステムコール層の属性変更をトレースする方法。Linuxシステムコール層でのファイルの属性変更をトレースする方法

は、test.txtという

タッチtest.txtのようなファイル名を作成します。 - >この場合、アクセス時間が変更されました。 VFS層では、これは "setattr"でトレースすることができますが、これをsys呼び出しレイヤーでどのようにトレースできますか?

+0

もう1つのアプローチは、カーネルを避け、ユーザの土地に[inotify(7)](http://man7.org/linux/man-pages/man7/inotify.7.html)の機能を使用することです。 –

+0

はいtrue ..しかし、カーネル内を探検したい –

答えて

0

utimensat()関数は、これを行うためにタッチで使用されます。あなたは 'strace touch test.txt'でそれをトレースすることができます。 (マウントオプションがそれを妨げない場合) http://pubs.opengroup.org/onlinepubs/9699919799/utilities/touch.html http://pubs.opengroup.org/onlinepubs/9699919799/functions/utimensat.html

どれ書き込み()または読み取り()システムコールは、アクセス時間を変更します。

'touch' doのような明示的なシステムコールを使用してアクセス時間を直接操作する以外に、Linuxカーネルはファイルシステムのatimeマウントオプションで定義されたルールを使用してアクセス時間を変更する時期を定義します。マウントマニュアルページにatimeという単語を検索し、ルールの詳細を確認してください。

fs/utimes.cを見ると、atime変更に関係するシステムコールを理解するのに役立ちます。

+0

これはtouchやechoの "hello"> test.txtのような修正ではありませんが、ファイル属性を変更するためにsysが呼び出されます。VFSのようにsetattr VFSコール。 –

+0

touchの例とLinuxカーネルのシステムコール層について具体的に尋ねました。 – jcamdr

+0

いいえ、ファイル属性の一般的な設定はカーネルのsys呼び出しを介して更新されますか? –

関連する問題