저는 UNIX(특히 OS X Mavericks)에 관한 man
페이지를 읽고 있습니다 ls
. 이것이 내 관심을 불러일으켰습니다.
파일이 과거 또는 미래에 6개월 이상 수정된 경우 마지막으로 수정된 연도가 시간 및 분 필드 대신 표시됩니다.
누군가 수정 시간을 미래로 설정하는 이유는 무엇입니까?
답변1
그것은 모두 기준점에 달려 있습니다. 어쩌면 파일 수정 시간이 미래가 아닌 파일을 보는 사용자가 과거에 살고 있는 것일 수도 있습니다.
그렇지 않으면 파일 시스템을 사용하여 임의의 데이터를 저장할 수 있고 파일은 임의의 속성(예: xattr
OS X)을 가질 수 있으므로 누군가가 파일 시스템에 달력과 같은 데이터를 저장하고 시간 속성을 수정하여 이벤트를 나타내기를 원할 수 있습니까?
답변2
사용자는 파일 수정 시간을 원하는 날짜(적어도 넓은 범위, 일반적으로 1901~2038)로 자유롭게 설정할 수 있습니다. 향후 날짜는 사용자의 변덕이나 입력 오류로 인해 발생할 수 있습니다. 미래 날짜는 파일 시스템 손상으로 인해 발생할 수도 있습니다.
그러나 거의 모든 특정 경우에 미래 날짜는 파일이 기록된 컴퓨터와 파일을 보고 있는 컴퓨터 모두에서 시계가 잘못된 날짜로 설정된 결과입니다.
특히, NFS나 Samba 등의 프로토콜을 사용하여 파일을 공유하는 네트워크에서는 시간 대신 오늘 날짜로 파일을 보는 경우가 많지만, 컴퓨터 간의 시계가 동기화되지 않는 경우가 많습니다. 파일의 날짜가 1초라도 미래의 날짜인 경우에도 미래의 날짜로 표시됩니다.
답변3
cnst의 답변 외에도 파일이 NFS 또는 CIFS를 통해 원격 파일 서버 공유에 저장되고 클라이언트 및 서버 시계가 NTP를 통해 동기화되지 않거나 그 중 하나가 동기화되면 향후 파일 수정 시간이 발생할 수 있습니다. 시간은 맞지만 시간대가 잘못되었습니다.
또한 이 ls 동작은 BSD/OS X에만 해당되며 POSIX 표준을 위반한다는 점에 유의하세요. 전부는 아니지만 대부분의 다른 Unix 구현에서는 파일이 나중에 약간 수정된 경우 ls
시간 대신 연도를 표시합니다 .
BSD/OS X ls
매뉴얼 페이지에는 다음과 같은 내용이 나와 있습니다.
파일이 6개월 이상 과거 또는 미래에 수정된 경우
바꿔 말하면 그렇게 모호하지 않을 것입니다.
파일이 6개월 이상 과거 또는 미래에 수정된 경우