走る場合、./myscript.sh
この時間は「訪問」時間と見なされますか?
スクリプトが最後に実行された時間を知る必要がありますが、それが重要かどうかはわかりませんmtime
。ctime
atime
ここ)。
答え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
このオプションでマウントされたファイルシステムで実行されました。このオプションを使用すると、atime
i)現在が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
atime
1日以上経過すると、訪問時に常に変更されます。修正時間が古い場合でも:
$ 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回程度発生します。