最後に使用した .sh ファイルの確認

最後に使用した .sh ファイルの確認

走る場合、./myscript.shこの時間は「訪問」時間と見なされますか?

スクリプトが最後に実行された時間を知る必要がありますが、それが重要かどうかはわかりませんmtimectimeatimeここ)。

答え1

説明したように回答接続先は設定によって異なります。原則として、atimeファイルが変更されるたびに変更されます。読むスクリプトを実行するには読む必要があります。はい。通常、atimeスクリプトが実行されるたびに変更されます。これは現在のatimeを確認し、スクリプトを実行してから再確認することで簡単に確認できます。

$ printf '#!/bin/sh\necho "running"\n' > ~/myscript.sh
$ stat -c '%n : %x' ~/myscript.sh 
/home/terdon/myscript.sh : 2016-02-23 10:36:49.349656971 +0200

$ chmod 700 ~/myscript.sh 
$ stat -c '%n : %x' ~/myscript.sh  ## This doesn't change atime
/home/terdon/myscript.sh : 2016-02-23 10:36:49.349656971 +0200

$ ~/myscript.sh 
running
$ stat -c '%n : %x' ~/myscript.sh   ## Running the script does
/home/terdon/myscript.sh : 2016-02-23 10:38:20.954893580 +0200

ただし、スクリプトが、noatimeまたはrelatimeオプション(または変更方法に影響を与える可能性がある他のオプション)を使用してatimeマウントされたファイルシステムにある場合、動作は異なります。

   noatime
          Do  not  update inode access times on this filesystem (e.g., for
          faster access on the news spool to speed up news servers).  This
          works  for all inode types (directories too), so implies nodira‐
          time.

   relatime
          Update inode access times relative to  modify  or  change  time.
          Access time is only updated if the previous access time was ear‐
          lier than the current modify or change time.  (Similar to  noat‐
          ime,  but  it doesn't break mutt or other applications that need
          to know if a file has been read since the last time it was modi‐
          fied.)

          Since Linux 2.6.30, the kernel defaults to the behavior provided
          by this option (unless noatime was specified), and the  stricta‐
          time  option  is  required  to obtain traditional semantics.  In
          addition, since Linux 2.6.30, the file's  last  access  time  is
          always updated if it is more than 1 day old.

mount引数なしでコマンドを実行すると、インストールされているシステムがどのオプションを使用しているかを確認できます。上記のテストは、relatimeこのオプションでマウントされたファイルシステムで実行されました。このオプションを使用すると、atimei)現在がatime現在の変更または変更時間より早い場合、またはii)1日以上の更新がない場合は更新されます。

したがって、次のシステムでは、relatime現在時刻が現在の変更時刻よりも新しい場合、atimeアクセス時にファイルは変更されません。atime

$ touch -ad "+2 days" file
$ stat --printf 'mtime: %y\natime: %x\n' file
mtime: 2016-02-23 11:01:53.312350725 +0200
atime: 2016-02-25 11:01:53.317432842 +0200
$ cat file 
$ stat --printf 'mtime: %y\natime: %x\n' file
mtime: 2016-02-23 11:01:53.312350725 +0200
atime: 2016-02-25 11:01:53.317432842 +0200

atime1日以上経過すると、訪問時に常に変更されます。修正時間が古い場合でも:

$ touch -ad "-2 days" file
$ touch -md "-4 days" file
$ stat --printf 'mtime: %y\natime: %x\n' file
mtime: 2016-02-19 11:03:59.891993606 +0200
atime: 2016-02-21 11:03:37.259807129 +0200
$ cat file
$ stat --printf 'mtime: %y\natime: %x\n' file
mtime: 2016-02-19 11:03:59.891993606 +0200
atime: 2016-02-23 11:05:17.783535537 +0200

したがって、ほとんどの最新のLinuxシステムでは、atime最後にアクセスした後にファイルが変更されない限り、更新は1日1回程度発生します。

関連情報