Hallo,
ich habe gerade ein Experiment gemacht
hier ist das Bash Skript
1 | #!/usr/bin/bash
|
2 |
|
3 | [ -e data ] && echo "datei existiert bereits" && exit 1
|
4 | touch data
|
5 | stat data | tail -3
|
6 | echo
|
7 | #postcondition: alle zeiten gleich =: X
|
8 |
|
9 | sleep 10
|
10 | chmod 755 data
|
11 | stat data | tail -3
|
12 | echo
|
13 | #postcondition: change hat einen 10 sec alteren wert (X+10)
|
14 |
|
15 | sleep 10
|
16 | echo "1 2 3" >> data
|
17 | stat data | tail -3
|
18 | echo
|
19 | #postcondition: modify hat einen 20 sec alteren wert (X+20)
|
20 |
|
21 | sleep 10
|
22 | cat data
|
23 | stat data | tail -3
|
24 | #postcondition: access hat einen 30 sec alteren wert (X+30)
|
und hier die Ergebnisse
1 | $ ./sk.sh
|
2 | Access: 2010-11-27 21:10:31.108964300 +0100
|
3 | Modify: 2010-11-27 21:10:31.108964300 +0100
|
4 | Change: 2010-11-27 21:10:31.106945200 +0100
|
5 |
|
6 | Access: 2010-11-27 21:10:31.108964300 +0100
|
7 | Modify: 2010-11-27 21:10:31.108964300 +0100
|
8 | Change: 2010-11-27 21:10:41.371950400 +0100
|
9 |
|
10 | Access: 2010-11-27 21:10:31.108964300 +0100
|
11 | Modify: 2010-11-27 21:10:51.550955400 +0100
|
12 | Change: 2010-11-27 21:10:51.550955400 +0100
|
13 |
|
14 | 1 2 3
|
15 | Access: 2010-11-27 21:10:31.108964300 +0100
|
16 | Modify: 2010-11-27 21:10:51.550955400 +0100
|
17 | Change: 2010-11-27 21:10:51.550955400 +0100
|
Meine Erwartungen sind im Skript als "postconditions"
festgehalten.
chmod ändert erwartungsgemäss "change time", die als letzte
der 3-Zeilen erscheint.
Ein append ist eigentlich ein write und damit ein modify ..
würde ich erwarten. Seltsamerweise ändert sich "change time" nochmal.
Und zuletzt lese ich die Datei einfach mit cat. Allerdings
ändert sich, wie man sehen kann, dabei gar nichts.
Ich habe das unter Cygwin getestet. Deswegen meine Frage ..
verstehe ich die Semantik von access/modify/change falsch?
Werden beim "echo >>" syscalls getätigt die change time ändern?
Oder liegt es schlicht an cygwin (da nicht ext3 Dateisystem)
Vielleicht kann jemand unter Linux das Skript testen.
Grüsse