I am LAZY bones? AN ancient AND boring SITE

分类: '经验技巧' 的归档

vditool ── Vbox的磁盘文件工具

之前发的帖在这里,是说VBox的磁盘镜像文件比真实的虚拟系统的文件大很多,而且试过了用 VBoxManage modifyvdi 压缩过,几乎没有效果.看了一些文章,也试过很多方法,终于找到比较有效的了.
原理差不多是这样:VBox的动态扩展磁盘镜像,在虚拟系统要添加个文件的时候,镜像就跟着动态扩展;但是虚拟系统删除文件时,由于并不是把文件所占的空间全部清零(如果是的话,那些数据恢复公司就惨了),而是只修改了某些标志位,标明该已经删除,所以对应镜像来说,并不会自动减少.所以,为了压缩镜像文件,要做的事情也很明确,先在虚拟系统里面清零已经删除的文件,再重建镜像.
具体方法如下:
1.虚拟系统(我的是XP)里下载这个工具: http://www.microsoft.com/technet/sysinternals/Security/SDelete.mspx ,然后执行: sdelete -c c: 处理C盘,我的虚拟机就一个C盘.执行完了以后,就清零了,不过执行过程中会占光所有C盘的空间,当然vdi镜像文件也会增大设置的最大值.
这步也有看到有人用 eraser 这个软件的,但是我试了一下,这个软件不管用,不知道是不是我选错选项了.
2.真实系统里面,下载这个工具: http://www.virtualbox.org/download/testcase/vditool ,给足可执行权限,然后执行 vditool SHRINK XXX.vdi 稍等片刻,vdi文件的大小就成了虚拟系统的真实用量了.哈哈

bash下esc键的妙用

看到ee在他blog里说按两下 esc键,可以和tab一样补全.于是想到了还有写 esc 的小技巧,可以大家分享一下:
1.
最有用的用过是这个:你要建立一个文件夹,然后cd到里面去,而这个文件夹名字很长的时候,你只需要这样:
mkdir ThisIsAVeryLongDirectoryName 回车 cd {esc}{点号} 就会补全那一串 ThisIsAVeryLongDirectoryName 了.
其实这个是这样的,esc以后按个点点,意思是在当前光标所在位置,补上上一个命令的最后一个参数,也就是那个目录名了,这样是不是方便多了?当然这招也可以用在其他地方,另一个例子是: 可能上一个命令执行了 apt-cache show XXX软件包,了解了他的信息之后,下一步要安装/卸载了,就可以执行 apt-get install/remove {esc}{点号} 了.
2.
{esc}{<} 可以移到历史命令的第一个
{esc}{>} 可以到最后一个历史命令.这个可以用在,你想在历史里面找某个命令,结果按了若干下向上箭头后,没找到,快速回去的话,就不用一直按向下箭头了.
{esc}{backspace} 快速清除当前行输入,上面这种情况也可以用这招.或者用于命令输到一半的时候,却不想执行该命令了,就不用一个个字符删了.
3.
输入重复字母:如果要输入 ee ,可以这么按:{esc}{2}{e},如果要输入100个e,就可以这样: {esc}{1}{0}{0}{e},哈哈.
4.
{esc}{t} 可以瞬间大挪移,比如现在已经输入了 ab cd efg 然后光标停留在最后面,按下{esc}{t}之后,得到的是 ac efg cd,光标所在处的单词,会往前一个,哈哈,好玩吧.
5.
补全类:
除了按多次{esc}可以补全以外,还有更好玩的:
{esc}{~}可以补全本机上的用户名
{esc}{/}可以补全文件名
{esc}{@}可以补全主机名,localhost可以方便地用 lo补全.
还有很多,可以参考man bash 的readline一节.

HOWTO:ubuntu下刻录VCD

下载的动画片,想给邻居的小孩子刻录成VCD,好在他家的VCD机上播放,倒还真费了我不少功夫.为了避免后人走弯路,写点经验出来给大家分享.
其实最繁的倒不是刻录本身,而是视频格式的转换上.
刻录工具,搜索一下源,基本定位在 mkvcdfs(包含在vcdtools这个包里)和 cdrdao(包含在cdrdao包里).但是mkvcdfs命令需要的mpg格式,我下载的视频是avi格式的,于是一开始用 mencoder 转了N次,不管怎么转,mkvcdfs都不认,呵呵,就在我觉得没希望的时候,突然想到了ffmepg,man了一下,居然有 -target vcd 这样的参数,哈哈,真是 踏破铁鞋无觅处,得来全不费功夫啊.
现在知道mencoder转应该也是可以的,但是VCD对视频/音频编码方式,帧率,分辨率等都有非常严格的要求,所以mencoder的参数很难配.而ffmpeg的 -target vcd 参数,则可以一次性设置这所有的参数,很是方便.
现在贴上步骤:

工具安装:都是apt搞到: sudo apt-get install ffmepg vcdtools cdrdao

ffmpeg -i 1.avi -target vcd 1.mpg #转换第一个视频
ffmpeg -i 2.avi -target vcd 2.mpg #转换第二个视频
mkvcdfs 1.mpg 2.mpg #将视频合成,生成镜像文件,此命令会在当前目录生成一个 vcd_image.bin 文件(二进制镜像),和一个 vcd.toc 文件.后面的命令要用到后者.
sudo cdrdao scanbus #扫描刻录机在哪个接口上,这里输出:

  1. $ sudo cdrdao scanbus
  2. [sudo] password for lily:
  3. Cdrdao version 1.2.2 - (C) Andreas Mueller
  4.   SCSI interface library - (C) Joerg Schilling
  5.   Paranoia DAE library - (C) Monty
  6.  
  7. Check http://cdrdao.sourceforge.net/drives.html#dt for current driver tables.
  8.  
  9. Using libscg version 'ubuntu-0.8ubuntu1'
  10.  
  11. 1,0,0 : MATSHITA, DVD-RAM UJ-850S , 1.20

注意最后面一行的 1,0,0 的字样,最后一步就用这个命令刻录:
sudo cdrdao write –device 1,0,0 vcd.toc
这里的 –device 后面要用上面的输出代替.执行完了,就OK了,拿到VCD机上试试看吧!

遗留问题:
1.刻出来的盘到VCD机上播放,画面的最上方和最下方会有一块区域丢失,比如原本正常的字幕,只看到半行字了,而且画面有点轻微的倾斜.不知道是不是那VCD机的问题.
2.刻录出来的视频码率太高了,比我avi的源还高,导致一张VCD只能放两集,能不能降低码率,多放几集?
3.谁知道怎么刻录DVD?
有谁知道遗留问题的答案的话,千万不吝赐教哦~谢谢…

ssh反向连接

先介绍一下我这里的情况: 公司的电脑是在内部网里面,不可能有公网地址;家里的电脑是adsl拨号,有动态的公网IP,动态绑定到域名 xxx.xxx.org
如果现在想从家里ssh到公司的电脑,直接连接肯定是不行的,不过可以用以下方法:
1. 在公司电脑上执行: ssh -f -N -R 12121:localhost:22 xxx@xxx.xxx.org
2. 然后在家里的电脑上执行: ssh xxxx@localhost -p 12121 就可以成功连上公司的电脑了.

上面命令里面的 12121 是任一个本地端口(上面例子里面是家里电脑的端口),可以在合理的范围内任意指定.我的理解是这样的: 前一个命令相当于把公司机器的22端口(localhost:22) 映射到 家里机器的12121端口. 然后在家里电脑上直接ssh 本机的 12121 端口,数据就会被转发到公司机器了.就这么简单.

参考此文和 man ssh

一个关于time的有意思的问题

原帖: http://forum.ubuntu.org.cn/viewtopic.php?p=591866
问:
目的:用time命令来获得一个程序p执行的时间。

方法一:如果在终端命令符$下直接输入 $time p 2>foo.tmp
则可得到下面的foo.tmp内容
real 0m1.017s
user 0m0.916s
sys 0m0.056s

方法二:现在想用下面这个shell代码来执行这个命令
#!/bin/sh
。。。
。。。
time p 2>foo.tmp
。。。

但是执行完这个shell代码后查看foo.tmp的内容,却是这样的:
0.81user 0.06system 0:01.01elapsed 86%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+723minor)pagefaults 0swaps

问题:我想知道为什么这两种方法得到的结果(foo.tmp文件)会不同?

谢谢!

答:
又是ubuntu的bash和dash的差异引起的问题,呵呵.

首先,time关键字是bash或者dash的保留字,就是说每个shell有不同的表现属于正常现象.
其次,ubuntu默认的用户打开终端以后用的是bash,所以这个时候输出是
real 0m1.017s
user 0m0.916s
sys 0m0.056s
这样的.但是ubuntu的 /bin/sh 指向的确是dash,这点可以通过 ls -l /bin/sh 来确认.就是系统是调用dash来执行你的脚本的,所以有了另一种形式的输出.

知道原因以后,如果你想在脚本里面也得到之前的那种输出,可以用以下两种方法:
1.把/bin/sh指向bash
2.脚本开头写成 #!/bin/bash

How To: 用ubuntu Desktop LiveCD测试新电脑

本文介绍了到电脑城买电脑的时候,如何用ubuntu LiveCD测试电脑的方法.同时适用于台式机和笔记本电脑
测试目的:
1.核对电脑的配置,以免被奸商骗了.可能现在随着大家电脑知识的普遍提高,敢堂而皇之用赛扬冒充奔腾的并不多了,但还是小心为好.
2.测试电脑的硬件和linux的兼容性,如果你打算以后装linux的话,这点尤为重要.
ubuntu Desktop LiveCD的获得:
方法1.从 http://www.ubuntu.com/getubuntu/download 下载,然后自己刻录.不推荐用 alertnate CD.
方法2.到 https://shipit.ubuntu.com/ 申请免费的CD.
注意得到光盘后,最好都先确认一下光盘的正确性,以免到了电脑城读不了盘.
具体测试步骤:
对于组装的台式机,也许刚组好电脑的时候,还是裸机,最好在他给你装电脑城版的ghostXP前,进行如下步骤,以免浪费彼此的时间和感情:
Step0:开机进入BIOS设置,选择从光驱启动电脑.放入准备好的光盘,重启.
Step1:出现ubuntu界面的时候,可以按F2,选择语言为 中文(简体) ,虽然即使选择了中文,进系统后仍然是大片英文,嘿嘿,此步骤可选.
Step2:启动或安装ubuntu,注: 如果连ubuntu的图形界面都进不去的话,建议直接走人,买了这电脑,以后估计会很郁闷.
Step3:看看电脑的基本信息是不是和期望的一样:
cat /proc/cpuinfo 看看你的CPU,这里要注意这几个: 如果商家声称是双核的话,会有 processor : 0 和processor : 1 两个CPU; 另外 cache size 的值就是所谓的二级缓存.
cat /proc/meminfo 看看内存容量,(有谁知道怎么看内存的频率和存取速度)
sudo fdisk -l 看看硬盘容量,这个也可以在 system-系统管理-partition Editor 里面看到,图形界面,更直观
Step4:进阶信息:
输入 lspci :会输出一些PCI设备的情况,可以看到一些显卡/网卡/ide控制器等的信息.
也可以输入 lshw 看这些信息.
Step5:测试显卡
这步就比较麻烦了,如果你的机器是intel的集成显卡,那么你现在用的分辨率就应该是比较理想的最佳分辨率,可以试试跑一下 glxgears ,现在的集成卡应该能跑个1000FPS左右.
如果你是N卡或者A卡,由于现在显卡的驱动还不对,glxgears 可能还跑不到1000,由于装了显卡驱动要重启,而重启的话,liveCD又不能保存信息,所以这个没有更好的办法了,除非你当场安装一个ubuntu…
另外,由于ubuntu7.10已经集成了compiz,所以liveCD里面也可以试一下:system-首选项-外观-visual effects ,看看能不能选到 Extra,如果选到Extra了,可以拖动一下窗口,应该有果冻效果了,另外最小化 的时候也应该有动画效果了.
Step6:测试硬盘速度
输入: sudo hdparm -t /dev/sda 过一会儿就显示
/dev/sda:
Timing buffered disk reads: 110 MB in 3.05 seconds = 36.06 MB/sec
之类的信息,这个值,笔记本的话,应该在35MB/sec以上,台式机硬盘最好能达到50MB/sec.可以多测试几次取平均值.
Step7:快捷键测试:
这点基本上是针对笔记本用户,就是试验一下控制音量大小的按钮和背光的按钮有没有用啦,num lock和数字键是否正常,可能还有些其他的键,比如控制无线网卡的键之类的.
另外有些台式机用户的键盘可能有诸如打开浏览器之类的按钮,也可以测试一下,现在ubuntu大部分也能支持(就是打开firefox),嘿嘿.
Step8:杂项
看具体配置,例如有的本本集成了读卡器,可以带一张SD卡,现场读一下.
可能还有无线网卡,也可以输入 ifconfig 看看有没有.
还有插入耳机后,会不会耳机音箱同时发声等等小问题.尽可能考虑全面点.
对了,测试声音的话,桌面上就有个Examples文件夹,打开第一个就是个mark的视频,直接双击打开,即可以测试声音,也可以测试一下放视频卡不卡(记得最大化一下,看看效果),嘿嘿.
Step9:液晶坏点测试
能顺利通过以上这些测试,应该说基本上就没啥大问题了,下面还有一步很重要的,液晶坏点测试,非液晶当然就跳过.
方法: 在 system-首选项-会话-current Session里面,选中 gnome-panel 点击remove 和 apply,去掉上下两个面板.再删掉桌面上的两个图标.关掉所有打开的窗口.右键点空白的桌面,Change Desktop Background 在 wallpaper里面选第一个,单色,然后在下面选择颜色的地方,分别选成 白色,黑色,红色,绿色,蓝色.仔细观察屏幕,看看有无坏点和彩点.没有的话就恭喜你了.这里也提一下,好像什么什么标准里面定义的是3个一下坏点都是合格的,但是,虽然合格,保证会看得你很不爽,嘿嘿,所以买的时候还是小心为好.
Step10:关机测试
这是最后一步,由于上面已经把所有的窗口和面板都关了,所以现在直接按 ctrl+alt+backspace 结束了X,然后又重启了,等10秒钟,ubuntu用户会自动登录,这时候就又有面板了,点击关机按钮,选择关机,快好的时候,会提示取出光盘,然后按enter键,如果你按了enter键之后能顺利断电,那么恭喜了,你的电脑顺利通过了最后一关的测试.

以上只是我初步想到的一些步骤,欢迎大家补充.

NTP 网络时钟同步

先看看这个NTP简介.
再看NTP服务器列表,我们一般使用 time.buptnet.edu.cn 北京邮电大学NTP一级服务器 (支持 IPv4 + IPv6)就可以了,延时相对较小.
在ubuntu下使用NTP的方法:
显示和时间服务器的时间差:
$ ntpdate -q time.buptnet.edu.cn
server 195.30.0.29, stratum 2, offset -3.667538, delay 0.49940
20 Dec 13:10:58 ntpdate[7950]: step time server 195.30.0.29 offset -3.667538 sec
说明本地时间比服务器快3秒多点.
直接同步本地时间:
$ sudo ntpdate time.buptnet.edu.cn

也可以直接把上述命令写进root用户的crontab,很方便吧~

自己架了个WP玩

又有人说我的配色不好看,但是这里的配色有不是随便能改的,不好调试,于是就自己假了WP来试试,哈哈。
好在WP的假设还是超级简单的,就像它主页里面说的“五分钟”。
下载这个文件,解压到 /var/www/blog 里面,然后数据库里面建个表空间和用户名,方法可以参照我以前的这篇文章,然后把 wp-config-sample.php 重命名为 wp-config.php ,再修改里面的表空间名和用户名、密码。执行 http://bones.3322.org/blog/wp-admin/install.php 就OK了。
另外还装了coolcode插件和一个主题,也超简单:分别下载,解压到 plugins 和 themes 目录就装好了。

成果: http://bones.3322.org/blog/

临时增加swap的方法

我的机子物理内存是1G,当时装系统的时候,以为也不会运行很多程序,于是只分了500M左右的swap.
但是后来,因为种种原因,导致系统缓存不够(主要是因为开了VBox和eclipse两大东东,加上ff和compiz之类的),又不想去动分区结构,怎么办呢?办法当然是有的:

  1. lily@LLY:/home$ sudo dd if=/dev/zero of=swapfile bs=1024 count=655360
  2. 记录了 655360+0 的读入
  3. 记录了 655360+0 的写出
  4. 671088640 字节 (671 MB) 已复制,18.6445 秒,36.0 MB/秒
  5. lily@LLY:/home$ file swapfile
  6. swapfile: data
  7. lily@LLY:/home$ sudo mkswap swapfile
  8. Setting up swapspace version 1, size = 671084 kB
  9. no label, UUID=789730ee-9dcb-4143-8a5c-bbdff938c5a6
  10. lily@LLY:/home$ file swapfile
  11. swapfile: Linux/i386 swap file (new style) 1 (4K pages) size 163839 pages
  12. lily@LLY:/home$ sudo swapon swapfile
  13. lily@LLY:/home$ free -m
  14.              total       used       free     shared    buffers     cached
  15. Mem:          1002        982         19          0          3        250
  16. -/+ buffers/cache:        728        273
  17. Swap:         1126        486        639

解释一下,dd那命令其实就是新建一个约640M的空白文件,注意这里不推荐用其他方法建立文件,因为作为swap的文件不能有空洞(应该就是所谓的碎片吧).
mkswap是在那个空白文件的基础上,建立swap的文件系统,可以看到之后的file命令输出就不一样了.
然后在用swapon命令激活,一切都是那么简单.
另外,如果想让更改永久有效的话,还需要修改一下 /etc/fstab 文件,否则重启后就要再执行swapon命令激活一次.

aptitude forbid-version

接着昨天的libcairo2问题,小土蛋(其实我至今还没搞清楚zhan为什么叫小土蛋…)留言说可以用什么 aptitude forbid-version ,嘿嘿,于是呼研究了下,发现forbid-version不是zhan想的那样,但是aptitude还是蛮好用的.
降级,如果用 aptitude 命令的话,可以这么做:

  1. sudo aptitude install libcairo2=1.4.10-1ubuntu4

然后可以用 forbid-version 把有问题的版本锁定:

  1. sudo aptitude forbid-version libcairo2=1.4.10-1ubuntu4.1

这样以后用 sudo aptitude upgrade 命令升级的时候,就不会升级到 1.4.10-1ubuntu4.1 版本了,但是如果以后又出了个 1.4.10-1ubuntu4.2 的话,还是会升级的,这就是和 hold 的区别,也是这个命令存在的意义所在.嘿嘿.
当然如果用是 sudo apt-get upgrade 升级的话,会照升不误,看来apt-get不买你aptitude的帐啊~哈哈.