昨天看到一篇文章,它让我知道了 > 和 >> 的原理:>在文件一开始的地方进行写入,这样会将原文件中所有的字符全部清除,然后再进行写入.而>>就是从文件的末尾进程数据的写 入,这样是在文件的的数据里面再追加内容。(有一个疑点是当文件被进程在使用时,使用>来清空是无法清空的,只会变成>>,也就是追 加。是因为进程在对文件进程操作,也就对文件进程保护,所以无法别人就无法进行清空了。而我就使用了
tail -F 10 /var/log/messages > log.txt 2>&1 &
让tail进程对log.txt文件进行保护,我再用>log.txt却就可以清空log.txt ???)这个不是这次的重点。看这篇文章让我知道了什么是offset,也是就偏移量。所谓的偏移量就是硬盘中数据在block中的延伸的过程(自己的理解)。这样子就可以想象得到, 使用>是将块的数据给清除掉,然后再对新的数据进行偏移。而 >>就是将位置定在block的后面,然后再进行数据的偏移。
进而再延伸出一个问题:我在freebsdchina.org看到一个帖子,里面的内容是怎样去知道每个进程的IO情况。在FreeBSD可以用 iostat来知道整个硬盘的的IO情况,而无法知道每个进程的IO啊!而我有两个想法:一,可以用lsof来看到每个进程使用的文件描述符去看进程的 IO的情况,不过这种想法有点天真!二:这个想法我觉得是挺靠谱的,用procstat来看到每个进程的IO情况,下面是procstat的一个输出:
PID COMM FD T V FLAGS REF OFFSET PRO NAME
1424 firefox-bin cwd v d ——– – – - /home/minix
1424 firefox-bin root v d ——– – – - /
1424 firefox-bin 0 v c r——- 3 0 – /dev/null
1424 firefox-bin 1 v c rw—— 28 2906 – /dev/ttyv0
1424 firefox-bin 2 v c rw—— 28 2906 – /dev/ttyv0
1424 firefox-bin 3 s – rw—n– 1 0 UDS /tmp/.X11-unix/X0
1424 firefox-bin 4 p – rw—— 1 0 – –
1424 firefox-bin 5 p – rw—— 1 0 – –
1424 firefox-bin 6 p – rw—— 1 0 – –
1424 firefox-bin 7 p – rw—— 1 0 – –
1424 firefox-bin 8 p – rw—— 1 0 – –
1424 firefox-bin 9 p – rw—n– 1 0 – –
1424 firefox-bin 10 s – rw—n– 1 0 UDS /var/tmp/dbus-kM0HYCdoTc
1424 firefox-bin 11 s – rw—n– 1 0 UDS /var/tmp/orbit-minix/linc-593-0-532e348f96d8e
1424 firefox-bin 12 s – rw—n– 1 0 UDS /var/tmp/orbit-minix/linc-590-0-44c8bb0badd77
1424 firefox-bin 13 s – rw—n– 1 0 UDS /var/tmp/orbit-minix/linc-590-0-44c8bb0badd77
1424 firefox-bin 14 v r -w—— 1 0 – /home/minix/.mozilla/firefox/fchaa7jx.default/.parentlock
1424 firefox-bin 15 p – rw—n– 1 0 – –
1424 firefox-bin 16 p – rw—n– 1 0 – –
1424 firefox-bin 17 p – rw—n– 1 0 – –
1424 firefox-bin 18 p – rw—n– 1 0 – –
1424 firefox-bin 19 v c r——- 1 4 – /dev/random
1424 firefox-bin 20 s – rw—n– 1 0 TCP 127.0.0.1:36520 127.0.0.1:80
1424 firefox-bin 21 v r r——- 1 0 – /usr/local/lib/firefox3/chrome/en-US.jar
1424 firefox-bin 22 v r rw—— 1 2048 – /home/minix/.mozilla/firefox/fchaa7jx.default/permissions.sqlite
1424 firefox-bin 23 v r r——- 1 0 – /usr/local/lib/firefox3/chrome/browser.jar
1424 firefox-bin 24 v r r——- 1 0 – /home/minix/.mozilla/firefox/fchaa7jx.default/extensions/chromifox@altmusictv.com/chrome/chromifox.jar
1424 firefox-bin 25 v r r——- 1 0 – /usr/local/lib/firefox3/chrome/toolkit.jar
1424 firefox-bin 26 v r rw—— 1 1343488 – /home/minix/.mozilla/firefox/fchaa7jx.default/places.sqlite
1424 firefox-bin 27 v r r——- 1 1023273 – /home/minix/.mozilla/firefox/fchaa7jx.default/XUL.mfasl
1424 firefox-bin 28 v r r——- 1 0 – /home/minix/.mozilla/firefox/fchaa7jx.default/extensions/vimperator@mozdev.org/chrome/vimperator.jar
1424 firefox-bin 29 v r rw—— 1 40 – /home/minix/.mozilla/firefox/fchaa7jx.default/search.sqlite
1424 firefox-bin 30 v r rw—— 1 40 – /home/minix/.mozilla/firefox/fchaa7jx.default/content-prefs.sqlite
1424 firefox-bin 31 v r rw—— 1 40 – /home/minix/.mozilla/firefox/fchaa7jx.default/formhistory.sqlite
1424 firefox-bin 32 s – rw—n– 1 0 TCP 192.168.0.101:27176 72.14.203.18:443
1424 firefox-bin 33 v r rw—— 1 12460032 – /home/minix/.mozilla/firefox/fchaa7jx.default/urlclassifier3.sqlite
1424 firefox-bin 34 v r rw—— 1 81920 – /home/minix/.mozilla/firefox/fchaa7jx.default/cookies.sqlite
1424 firefox-bin 35 v r rw—— 1 28 – –
1424 firefox-bin 36 v d r——- 1 0 – /home/minix/.mozilla/firefox/fchaa7jx.default
1424 firefox-bin 37 v r rw—— 1 276 – /home/minix/.mozilla/firefox/fchaa7jx.default/Cache/_CACHE_MAP_
1424 firefox-bin 38 v r rw—— 1 94047 – /home/minix/.mozilla/firefox/fchaa7jx.default/Cache/_CACHE_001_
1424 firefox-bin 39 v r rw—— 1 197710 – /home/minix/.mozilla/firefox/fchaa7jx.default/Cache/_CACHE_002_
1424 firefox-bin 40 v r rw—— 1 311987 – /home/minix/.mozilla/firefox/fchaa7jx.default/Cache/_CACHE_003_
1424 firefox-bin 41 v r rw—— 1 260 – /home/minix/.mozilla/firefox/fchaa7jx.default/cert8.db
1424 firefox-bin 42 v r rw—— 1 260 – /home/minix/.mozilla/firefox/fchaa7jx.default/key3.db
1424 firefox-bin 43 p – rw—n– 1 0 – –
1424 firefox-bin 44 p – rw—n– 1 0 – –
1424 firefox-bin 45 s – rw—n– 1 0 TCP 192.168.0.101:57098 74.125.153.83:443
1424 firefox-bin 46 v r rw—— 1 40 – /home/minix/.mozilla/firefox/fchaa7jx.default/downloads.sqlite
1424 firefox-bin 49 v r rw—— 1 40 – /home/minix/.mozilla/firefox/fchaa7jx.default/signons.sqlite
1424 firefox-bin 55 v r rw—— 1 512 – /home/minix/.mozilla/firefox/fchaa7jx.default/places.sqlite-journal 从这里来看下offset一行,会看到一个进程对文件的操作,数据的大小可以看到它的IO情况了。