10/10/2006

linux下文件的切割与合并

切割合并文件在linux下用split和cat就可以完成。下面举些实例进行说明。
1.文件切割
文件切割模式分为两种:
文本文件;
二进制模式。
1.1文本模式
文本模式只适用于文本文件,用这种模式切割后的每个文件都是可读的。文本模式又分为两种:
按最大文件大小切割;
按文本行数切割。
1.1.1最大文件大小切割
split -C 5k duanxin split
将文本文件duanxin按每块最大5k的大小进行切割,不打碎行。输出文件名类似splitaa, splitab……
1.1.2 按文本行数切割
split -l 100 duanxin split
每个分块100行,不考虑大小。日志分析时应该有用。


1.2 二进制模式
split -b 5k duanxin split
每个分块(当然,最后一个不保证)大小都是5k,基本不可读。任何类型文件都可以用这种切割模式。

2.文件合并
cat split* >newduanxin
不管用什么方式切割,合并方法不变。

3.其它
split可以用-a选项指定输出文件名的长度。如
split -l 100 -a 3 duanxin split
则输出文件出类似于splitaaa,splitaab。不指定时默认为2。
用-b或-C指定分块大小时,可用的单位有,b for 512bytes, k for 1Kbytes, m for 1 Megbytes.

参考资料
man split


10/09/2006

为firefox添加搜索引挚


最近发现用百度的次数越来越多了,可每次搜索都要打开网页太麻烦了。
于是想把百度引挚加到firefox的搜索框列表里。怎么加呢?
其实,搜索配置都在 /usr/share/firefox/searchplugin文件夹下,每个搜索引挚都是一个.src加上一个图片文件。另外,放在$HOME/.mozilla/firefox也可以。
于是就模仿着写了一个百度的,成功了。
效果见图。
如果大家懒得动手,就点击这里直接安装吧。

另外透露点技巧,ctrl+K切换焦点到搜索框上,ctrl+UP或DOWN可以选择要用的搜索引挚。输入关键字按回车即开始搜索。

参考资料:
http://wxforum.shadonet.com/

10/05/2006

多机单网卡共享上网--linux技巧

问题背景
学校采用透明代理上网方法。每个户头每月15元,流量限为20G。以前是8人用一个路由器上网,后来不知什么缘故,采用路由器共享上网方式变得非常不稳定(怀疑学校做了什么手脚?)。于是只好寻找其它途径。学校还有另外一种上网方式,即网通的100元包月上网卡,为了获得最大的利益,网通通过技术手段限制,使得不能用路由器共享上网。以前听说能够使用双网卡,实现多机上网,但实践多次,均失败了。

解决方案
利用linux内核的数据转发,及一块网卡绑定多个IP,NAT地址转换等特性实现。

网络架构
两个寝室共8台电脑,网络架构如下图所示。
交换器2其实是原来的路由器,只是WAN口空着,把外网与其它客户机一起接到LAN口上。
图中结构只是本寝室的实际情况,不表示一定要求这样。

服务端设置
首先,确保内核打开ip转发功能。
cat /proc/sys/net/ipv4/ip_forward
结果为1,则表示已经打开。为0则编辑/etc/sysctl.conf文件,将其中的net/ipv4/ip_forward=1前的#号删去。重启使改动生效。也可以直接用类似
echo "1" > /proc/sys/net/ipv4/ip_forward
的语句来使改动立即生效。
添加内网IP
ifconfig eth0:1 192.168.0.1 broadcast 192.168.0.255 netmask 255.255.255.0
添加转发列表
iptables -F

iptables -F -t nat
此两步刷新缓存,大部分情况下可省略。

iptables -P FORWARD DROP

iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT

iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j SNAT --to <外网IP>

<外网IP>请作适当替换。
添加完后用iptables -L应该可以看到添加的一些条目。到此服务端设置完成。

客户端设置
IP:192.168.0.xxx
网关:192.168.0.1(上面设的内网IP)
DNS与服务端相同。

实际效果
客户端上QQ,PPLIVE,IE,以及firefox等工作正常。基本上可以说,采用TCP,UDP的程序均工作正常。但ICMP不正常(现象是不能ping通)。这时,客户端在外网看来即是服务端。
服务端和成为服务器前相同,无异样。CPU占用率不高。

存在的问题
不知如何控制转发速度。

其它
服务端在ubuntu6.06上调试通过。
指令多需要root权限,请注意。
建议将配置指令写到脚本中。
水平有限,谬误之处还请包涵。

参考资料:
打开转发功能
lsyer兄在红旗linux下的设置

Linux单网卡绑多IP

C语言标准函数库(C Standard Library)

标准C函数手册,写C程序时用的着。
CStdLib.html

相关地址:
www.utas.edu.au

10/01/2006

linux下PDF中文乱码问题--ubuntu一句话技巧

sudo apt-get install xpdf-chinese-simplified
xpdf是linux下常用的PDF阅读器,ubuntu默认装上了,但看中文文件档还有些问题。按上面的代码装上相应的包就可以了。繁体中文,还有日文都有相应的包。

9/26/2006

转换分区格式--linux技巧

好久不用windows,留着FAT32真是没什么用。为避免中文乱码及azureus-error中提到的那个恶心的错误,我一直计划着把FAT32转成ext3。
最初,我硬盘里共有三个FAT32分区。由于都有内容,只能慢慢整理,慢慢转换。
由于概念不清,基础知识不扎实等,走了很多弯路。
第一次转换
最初我是想能不能无损数据完成转换的,但没有找到相关资料。就想到了下面的方法:
  1. 用fdisk删除一个分区,然后再新建一个分区;
  2. 重启(fdisk提示说重启后才生效);
  3. mkfs;
  4. 修改/etc/fstab;
  5. mount -a;
可是实践时,出了大麻烦。执行完第一步后,机器已经起不来了,搞了半天才知道,第一步已经改变了分区表,hdaX的X很多都变了。于是用live-CD启动,上网找了一堆资料,终于在RecoveringUbuntuAfterInstallingWindows指导下搞定了。
第二次转换
也就是今天,我刚刚做的。
  1. umount /dev/hdaxx
  2. 用fdisk的t命令改变分区格式,改成83(linux);
  3. 重启;
  4. 用mkfs.ext3 /dev/hdax或mkfs -t ext3 /dev/hda建立新的文件系统;
  5. 修改/etc/fstab;
  6. mount -a;
成功了,但却无法往分区上写东西。
重启后就可以写了。
总结
要注意区别分区和文件系统,用fdisk只是为了改变分区格式,用mkfs才是建立我们熟悉的vfat,ext2,ext3等文件系统。第一次做lfs时,我忘了改变分区格式,结果无论如何都启动不了lfs,重做了几遍,还好有备份。
不保证上述方法同样适用于你的系统。

参考资料
man fdisk
man mkfs
http://www.linuxmine.com/39733.html