ทำไมแมวถึงไม่เปลี่ยนเวลาเข้าถึง?


25

การเรียกที่สองเพื่อ cat ไฟล์ไม่ได้อัพเดตเวลาเข้าถึง ฉันคาดหวังว่าเวลาในการเข้าถึงจะได้รับการอัปเดตตลอดเวลาเมื่อมีการแสดงเนื้อหาไฟล์

ฉันเห็นลักษณะการทำงานเดียวกันถ้าฉันเปิดไฟล์ในเว็บเบราว์เซอร์ เวลาในการเข้าถึงไม่ได้รับการอัพเดตอย่างสม่ำเสมอ

ฉันเข้าใจผิดเวลาเข้าถึงหรือไม่ แมวสองสายต่างกันอย่างไร

ทดสอบ $ สัมผัส
ทดสอบสถิติ $
  ไฟล์: `ทดสอบ '
  ขนาด: 0 บล็อก: 0 IO บล็อก: ไฟล์ว่างเปล่าปกติ 4096
อุปกรณ์: 803h / 2051d ไอโหนด: 152694 ลิงค์: 1
การเข้าถึง: (0664 / -rw-rw-r--) Uid: (1001 / aaron) Gid: (1001 / aaron)
การเข้าถึง: 2012-08-21 11: 05: 40.586020996 +0200
แก้ไข: 2012-08-21 11: 05: 40.586020996 +0200
เปลี่ยนแปลง: 2012-08-21 11: 05: 40.586020996 +0200
 เกิด: -

ทดสอบ $ vim
ทดสอบสถิติ $
  ไฟล์: `ทดสอบ '
  ขนาด: 5 บล็อก: 8 IO บล็อก: ไฟล์ปกติ 4096
อุปกรณ์: 803h / 2051d ไอโหนด: 152694 ลิงค์: 1
การเข้าถึง: (0664 / -rw-rw-r--) Uid: (1001 / aaron) Gid: (1001 / aaron)
การเข้าถึง: 2012-08-21 11: 05: 52.890021630 +0200
แก้ไข: 2012-08-21 11: 06: 31.606023626 +0200
เปลี่ยนแปลง: 2012-08-21 11: 06: 31.638023629 +0200
 เกิด: -

การทดสอบ $ cat
ทดสอบ

ทดสอบสถิติ $
  ไฟล์: `ทดสอบ '
  ขนาด: 5 บล็อก: 8 IO บล็อก: ไฟล์ปกติ 4096
อุปกรณ์: 803h / 2051d ไอโหนด: 152694 ลิงค์: 1
การเข้าถึง: (0664 / -rw-rw-r--) Uid: (1001 / aaron) Gid: (1001 / aaron)
การเข้าถึง: 2012-08-21 11: 06: 44.662024298 +0200
แก้ไข: 2012-08-21 11: 06: 31.606023626 +0200
เปลี่ยนแปลง: 2012-08-21 11: 06: 31.638023629 +0200
 เกิด: -

การทดสอบ $ cat
ทดสอบ

ทดสอบสถิติ $
  ไฟล์: `ทดสอบ '
  ขนาด: 5 บล็อก: 8 IO บล็อก: ไฟล์ปกติ 4096
อุปกรณ์: 803h / 2051d ไอโหนด: 152694 ลิงค์: 1
การเข้าถึง: (0664 / -rw-rw-r--) Uid: (1001 / aaron) Gid: (1001 / aaron)
การเข้าถึง: 2012-08-21 11: 06: 44.662024298 +0200
แก้ไข: 2012-08-21 11: 06: 31.606023626 +0200
เปลี่ยนแปลง: 2012-08-21 11: 06: 31.638023629 +0200
 เกิด: -

คำตอบ:


44

http://en.wikipedia.org/wiki/Stat_(system_call)

คำติชมของ atime

การเขียนไฟล์จะเปลี่ยน mtime และ ctime ในขณะที่การอ่านไฟล์จะเปลี่ยน atime ดังนั้นในระบบที่สอดคล้องกับ POSIX การอ่านไฟล์ทำให้เกิดการเขียนซึ่งถูกวิจารณ์ พฤติกรรมนี้สามารถปิดใช้งานได้โดยเพิ่มตัวเลือกเมานท์ใน / etc / fstab

อย่างไรก็ตามการปิดการอัปเดต Atime จะเป็นการหยุดความสอดคล้องของ POSIX และบางแอปพลิเคชั่นโดยเฉพาะอย่างยิ่งตัวอ่านจดหมาย mutt (ในการกำหนดค่าบางอย่าง) และการใช้งานไฟล์บางอย่างที่ดูยูทิลิตี้ ในกรณีที่เลวร้ายที่สุดการไม่อัพเดต atime อาจทำให้บางโปรแกรมสำรองข้อมูลล้มเหลวในการสำรองไฟล์

ผู้พัฒนาเคอร์เนล Linux Ingo Molnárเรียกว่า atime "อาจเป็นแนวคิดการออกแบบ Unix ที่โง่ที่สุดตลอดกาล" add: "[T] hink เกี่ยวกับเรื่องนี้เล็กน้อย: 'สำหรับทุกไฟล์ที่อ่านจากดิสก์ให้ทำ ... เขียน ไปยังดิสก์! และสำหรับทุกไฟล์ที่ถูกแคชไว้แล้วและที่เราอ่านจากแคช ... เขียนไปยังดิสก์!

การปรับปรุง Atime นั้นเป็นข้อบกพร่องด้านประสิทธิภาพ IO ที่ใหญ่ที่สุดที่ Linux มีในปัจจุบัน การกำจัดการอัพเดต atime จะทำให้เราได้รับประสิทธิภาพของ Linux ทุกวันมากกว่าการเพิ่มความเร็ว pagecache ในช่วง 10 ปีที่ผ่านมารวมกัน

จะรู้ได้อย่างไรว่า noatime หรือ relatime เป็นตัวเลือก mount เริ่มต้นในเคอร์เนล?

man mount
....
   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  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.
....

ซึ่งเป็นวิธีที่พาร์ติชันนั้นถูกเมาท์และทำไม cat ไม่อัพเดทเวลาเข้าถึงตามที่ฉันคาดไว้


ข้อมูลเพิ่มเติมเกี่ยวกับวิธีที่อูบุนตูจัดการ atime askubuntu.com/questions/2099/?hl=th
nelaaro

นี่คือการอภิปรายที่เก่ากว่าเกี่ยวกับผลกระทบของ atime ที่ได้รับจากตัวเลือกการเมาท์ที่แตกต่างกัน linux.koolsolutions.com/2009/01/30/…
nelaaro
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.