利用watch命令和byzanz工具制作Gif图
Linux下都有一个名为watch的命令,这个命令可以帮我们监测另外一个命令的运行结果,这在我们需要一直查看某个命令的输出结果时非常有用。比如,我们知道查看网口eth0上的接收数据包流量的命令如下:
[root@localhost ~]# ethtool -S eth0 | grep rx_packets rx_packets: 595 [root@localhost ~]#
如果要一直查看网口eth0上的接收数据包流量,那么我们也许会这样做:
[root@localhost ~]# while :; do ethtool -S eth0 | grep rx_packets; sleep 1; done rx_packets: 1945 rx_packets: 1946 rx_packets: 1947 rx_packets: 1948 rx_packets: 1949 rx_packets: 1950 rx_packets: 1951 rx_packets: 1952 rx_packets: 1953 ^C [root@localhost ~]#
但更方便的方法也许是如下这样,“-n 1”指定每隔1s刷新一次,而“-d”则高亮显示变化的区域,这样能够一目了然:
[root@localhost ~]# watch -n 1 -d "ethtool -S eth0 | grep rx_packets;"
然后,你将获得这样一个动态的字符界面:
Every 1.0s: ethtool -S eth0 | grep rx_packets; Tue Nov 29 18:57:54 2011 rx_packets: 2379
关于watch命令的更多内容请直接查看man手册,下面介绍byzanz:
byzanz在ubuntu下很好安装,直接如下即可:
sudo apt-get install byzanz
我这里从源码开始安装,源码可从官网:http://blogs.gnome.org/otte/2009/08/30/byzanz-0-2-0/下载到。byzanz的手动编译有点麻烦,它需要的cairo版本有点高,我的CentOS-6.0的系统默认的cairo 1.8.8也不够,所以configure配置时报错如下:
[root@localhost byzanz-0.2.0]# ./configure ... checking for GTK... configure: error: Package requirements (cairo >= 1.9.3 gtk+-2.0 >= 2.17.10 x11 gio-2.0) were not met: Requested 'cairo >= 1.9.3' but version of cairo is 1.8.8
下载高版本的cairo:http://cairographics.org/releases/cairo-1.10.0.tar.gz以及pixman:http://cairographics.org/releases/pixman-0.24.0.tar.gz并进行编译安装:
[root@localhost lenky]# tar xzf pixman-0.24.0.tar.gz [root@localhost pixman-0.24.0]# cd pixman-0.24.0 [root@localhost pixman-0.24.0]# ./configure [root@localhost pixman-0.24.0]# make [root@localhost pixman-0.24.0]# make install [root@localhost pixman-0.24.0]# cd .. [root@localhost lenky]# tar xzf xzf cairo-1.10.0.tar.gz [root@localhost lenky]# cd cairo-1.10.0 [root@localhost cairo-1.10.0]# ./configure [root@localhost cairo-1.10.0]# make -j2 [root@localhost cairo-1.10.0]# make install
接着编译byzanz:
[root@localhost cairo-1.10.0]# cd [root@localhost ~]# cd lenky/ [root@localhost lenky]# cd byzanz-0.2.0 [root@localhost byzanz-0.2.0]# ./configure
提示出错差某某库,也直接给它装上:
[root@localhost byzanz-0.2.0]# yum install libpanelappletmm* [root@localhost byzanz-0.2.0]# yum install gstreamer*
再来,好,这下一切ok,byzanz终于被我安装上了:
[root@localhost byzanz-0.2.0]# ./configure [root@localhost byzanz-0.2.0]# make [root@localhost byzanz-0.2.0]# make install
试试效果:
d[root@localhost ~]# cd Desktop/ [root@localhost Desktop]# cd [root@localhost ~]# byzanz-record first.gif [root@localhost ~]#
-d, --duration=SECS:录像持续时间,默认是10秒 --delay=SECS:设置几秒种后开始录像,默认是1秒 -l, --loop:设置录像循环播放 -c, --cursor:记录鼠标指针 -x, --x=PIXEL:录像区域的起始横坐标,默认是0(左上角) -y, --y=PIXEL:录像区域的起始纵坐标,默认是0(左上角) -w, --width=PIXEL:录像区域宽度 -h, --height=PIXEL:录像区域高度 --display=DISPLAY:指定显示设备
那么结合watch和byzanz,我们可以生成这样一张网口收包流量图:
而我的具体操作如下图:
我根据byzanz的生成gif图像的要求,把桌面状态栏放到了左边,然后把网口收包监控终端靠左顶放,至于里面的592宽度和196高度,我是通过QQ的截图工具提前把网口收包监控终端截下来粘贴到windows的画图工具里,然后画图工具的菜单图像->属性里看到的,呵呵。反正,不管怎么做都可以,只要我们想要的效果达到了。
转载请保留地址:http://www.lenky.info/archives/2011/11/429 或 http://lenky.info/?p=429
备注:如无特殊说明,文章内容均出自Lenky个人的真实理解而并非存心妄自揣测来故意愚人耳目。由于个人水平有限,虽力求内容正确无误,但仍然难免出错,请勿见怪,如果可以则请留言告之,并欢迎来信讨论。另外值得说明的是,Lenky的部分文章以及部分内容参考借鉴了网络上各位网友的热心分享,特别是一些带有完全参考的文章,其后附带的链接内容也许更直接、更丰富,而我只是做了一下归纳&转述,在此也一并表示感谢。关于本站的所有技术文章,欢迎转载,但请遵从CC创作共享协议,而一些私人性质较强的心情随笔,建议不要转载。
法律:根据最新颁布的《信息网络传播权保护条例》,如果您认为本文章的任何内容侵犯了您的权利,请以Email或书面等方式告知,本站将及时删除相关内容或链接。