달리는 경우 ./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) 하루 이상 업데이트가 없는 경우 업데이트됩니다.
따라서 다음을 사용하는 시스템에서는 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
하루 이상 지난 경우 방문할 때 항상 변경됩니다. 수정 시간이 오래된 경우에도:
$ 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
마지막으로 액세스한 이후 파일이 수정되지 않는 한 업데이트는 하루에 한 번 정도만 발생합니다.