国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

Linux下文件內容更新了,文件夾時間戳卻沒變化?

2024-08-27 23:55:52
字體:
來源:轉載
供稿:網友
  在日常多人協作時,最開始習慣看文件夾更新時間來查看是否有更新,但發現總是不能如實反映情況, 文件夾日期有時變,有時不變。很是困惑,就來探究下。
 
  比如,起始狀態:
 
  復制
  ysx@localhost:~/trash/ehbio$ ls -ltr
  total 0
  drwxr-xr-x. 2 ysx ehbio 6 Jan  7 10:48 webserver
  drwxr-xr-x. 2 ysx ehbio 6 Jan  7 10:48 train
  drwxr-xr-x. 2 ysx ehbio 6 Jan  7 10:48 bioinfoservice
  1.
  2.
  3.
  4.
  5.
  在webserver文件夾下,增加一個文件,record.md
 
  復制
  ysx@localhost:~/trash/ehbio$ cat <<END >webserver/record.md
  1. 完成9個生物在線數據存儲、查詢和分析網站的建設。
  END
  1.
  2.
  3.
  再查看下文件夾日期有沒有變化,發生變化了,為我們新增文件的日期。
 
  復制
  ysx@localhost:~/trash/ehbio$ ls -ltr webserver/record.md
  -rw-r--r--. 1 ysx ehbio 74 Jan  7 10:49 webserver/record.md
  ysx@localhost:~/trash/ehbio$ ls -ltr
  total 0
  drwxr-xr-x. 2 ysx ehbio  6 Jan  7 10:48 train
  drwxr-xr-x. 2 ysx ehbio  6 Jan  7 10:48 bioinfoservice
  drwxr-xr-x. 2 ysx ehbio 22 Jan  7 10:49 webserver
  1.
  2.
  3.
  4.
  5.
  6.
  7.
  那么再繼續追加內容,還是使用cat (不同寫入方式也有影響,后面會提到)。
 
  復制
  ysx@localhost:~/trash/ehbio$ cat <<END >>webserver/record.md
  2. 一個網站發表于NAR數據庫專刊,3個網站正在投稿中。
  END
  1.
  2.
  3.
  這時再看文件夾日期,發現與文件不同步了。文件日期更新了,文件夾日期卻沒變。
 
  復制
  ysx@localhost:~/trash/ehbio$ ls -ltr webserver/record.md
  -rw-r--r--. 1 ysx ehbio 148 Jan  7 10:52 webserver/record.md
  ysx@localhost:~/trash/ehbio$ ls -ltr
  total 0
  drwxr-xr-x. 2 ysx ehbio  6 Jan  7 10:48 train
  drwxr-xr-x. 2 ysx ehbio  6 Jan  7 10:48 bioinfoservice
  drwxr-xr-x. 2 ysx ehbio 22 Jan  7 10:49 webserver
  1.
  2.
  3.
  4.
  5.
  6.
  7.
  這是為什么呢? 文件內容更新了,文件夾時間戳卻未變。那么件夾的更新日期是什么決定的呢?
 
  我們在使用less操作時,有時會不小心對一個文件夾進行less操作。看上去就像文件夾里的內容變成了一個文本文件。
 
  復制
  ysx@localhost:~/trash/ehbio$ less webserver/
  total 4
  drwxr-xr-x. 2 ysx ehbio  22 Jan  7 10:49 ./
  drwxr-xr-x. 5 ysx ehbio  70 Jan  7 10:48 ../
  -rw-r--r--. 1 ysx ehbio 148 Jan  7 10:52 record.md
  1.
  2.
  3.
  4.
  5.
  而文件夾確實是類似文本文件的方式存儲的,文件夾可以看做文件inode:文件名組成的文本文件 (文件的屬性信息存在inode的元信息中,可以用stat file查看)。只要文件夾內未發生文件的新增、刪除、軟鏈或文件夾內文件的inode (也稱為索引節點)未改變,文件夾 (代表文件夾的文本文件)的時間戳就不會發生變化。
 
  復制
  webserver文件夾的文本存儲(第一例為inode,第二列是文件名)
  2763934 .  
  2764125 ..   
  104480 record.md
  1.
  2.
  3.
  4.
  而我們每次追加文件內容都未改變文件名字和文件的inode,所以文件夾的日期未發生變化。
 
  復制
  # -i可查看文件的inode
  ysx@localhost:~/trash/ehbio$ ls -ai webserver/
  2763934 .  2764125 ..   104480 record.md
  ysx@localhost:~/trash/ehbio$ cat <<END >>webserver/record.md
  > 3. 繼續為大數據的再次利用和更方便利用而努力
  > END
  ysx@localhost:~/trash/ehbio$ ls -ai webserver/
  2763934 .  2764125 ..   104480 record.md
  1.
  2.
  3.
  4.
  5.
  6.
  7.
  8.
  關于文件夾日期更新的問題算是解決了。
 
  另一個問題是,雖然同事的文件更新了,文件夾時間戳一般不改變。但我發現我每次更新完文件內容,文件夾的日期卻都會變化,看上去與前面的認知矛盾。想了下,更新時用到的文本編輯器不用,問題是否可能出在vim上(我每次都使用它來更新文件),下面看一下。
 
  大家注意這里面webserver日期與webserver/record.md日期的變化和ls -i的輸出結果的變化。
 
  復制
  ysx@localhost:~/trash/ehbio$ ls -ltr
  total 0
  drwxr-xr-x. 2 ysx ehbio  6 Jan  7 10:48 train
  drwxr-xr-x. 2 ysx ehbio  6 Jan  7 10:48 bioinfoservice
  drwxr-xr-x. 2 ysx ehbio 22 Jan  7 10:49 webserver
  ysx@localhost:~/trash/ehbio$ ls -ltr webserver/record.md
  -rw-r--r--. 1 ysx ehbio 212 Jan  7 11:03 webserver/record.md
 
  # -i可查看文件的inode
  ysx@localhost:~/trash/ehbio$ ls -i webserver/record.md
  104480 webserver/record.md
  ysx@localhost:~/trash/ehbio$ vim webserver/record.md
  ysx@localhost:~/trash/ehbio$ ls -ltr webserver/record.md
  -rw-r--r--. 1 ysx ehbio 215 Jan  7 11:06 webserver/record.md
  ysx@localhost:~/trash/ehbio$ ls -ltr
  total 0
  drwxr-xr-x. 2 ysx ehbio  6 Jan  7 10:48 train
  drwxr-xr-x. 2 ysx ehbio  6 Jan  7 10:48 bioinfoservice
  drwxr-xr-x. 2 ysx ehbio 22 Jan  7 11:06 webserver
 
  # -i可查看文件的inode
  ysx@localhost:~/trash/ehbio$ ls -i webserver/record.md
  2465326 webserver/record.md
  1.
  2.
  3.
  4.
  5.
  6.
  7.
  8.
  9.
  10.
  11.
  12.
  13.
  14.
  15.
  16.
  17.
  18.
  19.
  20.
  21.
  22.
  23.
  確實是vim改變了文件的inode,也就是說在我們使用vim修改文件時,vim為了避免中間出現意外,先重命名了修改前的文件,修改后的文件以之前文件的名字存儲,看上去我們做的是原位修改, 實際上是換了新的文件,所以inode發生了變化。當然這個操作可以自己配置修改。
 
  在另外一個情況下,如果我們對文件夾無可寫權限,但對該文件夾內的文件有可寫權限時,vim自動調用另外一個方式修改文件,先把文件做個備份,然后原位修改。這時文件夾的時間戳就不會變了。
 
  復制
  ysx@localhost:~/trash/ehbio$ chmod a-w webserver/
  ysx@localhost:~/trash/ehbio$ ls -ltr
  total 0
  drwxr-xr-x. 2 ysx ehbio  6 Jan  7 10:48 train
  drwxr-xr-x. 2 ysx ehbio  6 Jan  7 10:48 bioinfoservice
  dr-xr-xr-x. 2 ysx ehbio 22 Jan  7 11:06 webserver
 
  # 寫不進去,無權限
  ysx@localhost:~/trash/ehbio$ vim webserver/a
 
  # 可以修改, 但沒有新文件產生
  ysx@localhost:~/trash/ehbio$ vim webserver/record.md
  ysx@localhost:~/trash/ehbio$ ls -ltr webserver/record.md
  -rw-r--r--. 1 ysx ehbio 249 Jan  7 11:15 webserver/record.md
 
  # 文件夾時間戳未變
  ysx@localhost:~/trash/ehbio$ ls -ltr
  total 0
  drwxr-xr-x. 2 ysx ehbio  6 Jan  7 10:48 train
  drwxr-xr-x. 2 ysx ehbio  6 Jan  7 10:48 bioinfoservice
  dr-xr-xr-x. 2 ysx ehbio 22 Jan  7 11:06 webserver
 
  # 文件inode也未變
  ysx@localhost:~/trash/ehbio$ ls -i webserver/record.md
  2465326 webserver/record.md
  1.
  2.
  3.
  4.
  5.
  6.
  7.
  8.
  9.
  10.
  11.
  12.
  13.
  14.
  15.
  16.
  17.
  18.
  19.
  20.
  21.
  22.
  23.
  24.
  25.
  設計軟件時,需要考慮的問題和情況還是挺多的。看上去挺簡單的事情,里面說不準有多少”坑”需要注意,寫網站這樣,寫工具也這樣,作分析也是這樣。

(編輯:武林網)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 石阡县| 商城县| 马鞍山市| 噶尔县| 渝北区| 哈密市| 闽清县| 界首市| 通许县| 邯郸县| 论坛| 盐源县| 庆安县| 西昌市| 镇平县| 枞阳县| 大兴区| 汶上县| 瓦房店市| 通海县| 霞浦县| 修文县| 交城县| 阜阳市| 巴南区| 青州市| 安宁市| 叶城县| 凤冈县| 定陶县| 饶河县| 板桥市| 当雄县| 尉氏县| 屯门区| 大宁县| 南宫市| 淳化县| 荥经县| 舟曲县| 甘肃省|