在嵌入式Linxu平台下,挂在u盘,在u盘中创建的文件,拿到Linux pc和window pc下看到文件的修改时间、window下文件的创建时间都是 8个小时前的。
开发板 gcc4.8.3+uClibc 0.9.32.1
已经尝试过的方法如下:
1.配置/etc/TZ文件内容 为CST-8;/home目录为当前u盘挂载点
/home # cat /etc/TZ
CST-8
/home # date -R
Thu, 03 Nov 2016 12:01:18 +0800
/home #
/home # date -u
Thu Nov 3 04:01:20 UTC 2016
/home # echo test > test1.txt
/home # ls -l test1.txt
-rwxr-xr-x 1 root root 5 Nov 3 12:01 test1.txt
/home # stat test1.txt
File: test1.txt
Size: 5 Blocks: 8 IO Block: 4096 regular file
Device: 804h/2052d Inode: 118 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-11-03 12:01:36.000000000
Modify: 2016-11-03 12:01:36.000000000
Change: 2016-11-03 12:01:36.000000000
将U盘文件分别拿到linxu和window pc看:
ubuntu下:
stat test1.txt
文件:"test1.txt"
大小:5 块:8 IO 块:4096 普通文件
设备:814h/2068d Inode:676 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 1000/ test) Gid:( 1000/ test)
最近访问:2016-11-03 12:08:33.000000000 +0800
最近更改:2016-11-03 04:01:36.000000000 +0800
最近改动:2016-11-03 04:01:36.000000000 +0800
创建时间:-
2.将linux pc上/usr/share/zoneinfo/Asia/Chongqing 时区文件连接到开发板 /etc/localtime
系统设置正确的时间后,在开发板上看到
/home # ls -l /etc/localtime
lrwxrwxrwx 1 root root 23 Nov 3 12:17 /etc/localtime -> /mnt/zoneinfo/Chongqing
/home # date -R
Thu, 03 Nov 2016 12:19:11 +0800
/home # date -u
Thu Nov 3 04:19:14 UTC 2016
/home # echo test2 > test2.txt
/home # ls -l test2.txt
-rwxr-xr-x 1 root root 6 Nov 3 12:19 test2.txt
/home # stat test2.txt
File: test2.txt
Size: 6 Blocks: 8 IO Block: 4096 regular file
Device: 804h/2052d Inode: 50 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-11-03 12:19:31.000000000
Modify: 2016-11-03 12:19:31.000000000
Change: 2016-11-03 12:19:31.000000000
把test2.txt拿到pc看,结果同条件1下一样,时间同样是8个小时之前
3.直接在ubuntu上挂载u盘
echo test3 > test3.txt
ls -l test3.txt
-rw-r--r-- 1 test test 6 11月 3 14:26 test3.txt
文件:"test3.txt"
大小:6 块:8 IO 块:4096 普通文件
设备:814h/2068d Inode:1310 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 1000/ test) Gid:( 1000/ test)
最近访问:2016-11-03 14:26:13.000000000 +0800
最近更改:2016-11-03 14:26:13.000000000 +0800
最近改动:2016-11-03 14:26:13.000000000 +0800
创建时间:
在window pc是查看是正确的, 这里在ubuntu上创建的文件比在开发板上的文件多了 +0800时区信息??
这个不知道是在uClibc库里面添加的还是在内核里面添加的?
同样将ubunt下创建的文件test3.txt拿到开发板下面去看,时间比真实的时间多了 8个小时
/home # ls -l test3.txt
-rwxr-xr-x 1 root root 6 Nov 3 2016 test3.txt
/home # stat test3.txt
File: test3.txt
Size: 6 Blocks: 8 IO Block: 4096 regular file
Device: 804h/2052d Inode: 42 Links: 1
Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-11-03 08:00:00.000000000
Modify: 2016-11-03 22:26:12.000000000
Change: 2016-11-03 22:26:13.000000000
通过对比发现,开发板上文件实际记录的时间应该是uct时间,而pc上实际记录的时间应该是rtc的时间,后面实验直接把rtc时间当作utc时间设置到开发板的os上,新创建出来的文件在pc看就正确了,但是由于应用上一些原因现在不允许这样使用,请教大神怎么能解决这个问题?