Archive for category Linux
活用Linux的后台任务
Linux作为一个多任务环境,允许用户同时执行多项任务,例如查看系统情况、备份资料、编辑文件和打印文件等。
对于耗时长的任务不应该让它在前台任务中执行,而应该交给后台任务去执行。这样前台任务可继续正常运作其它的操作,不用等待。示例如下:
# find / -name testing &
# fg
如果想要让上面例子中的任务转为后台执行,就使用"& "。不过,由于是后台执行的,所以该程序的输出并不会出现在屏幕上。当用户将数个任务放到后台任务执行时,要如何去管理这些后台任务?怎么知道后台任务的 执行情况?如何终止或暂时停止后台任务的执行?下面就来逐一说明。
控制管理
举例如下:
# du -a /user > user.data &[1] 237# find / -name core -type f -ls > core.data &[2] 238 |
如上通过"&"命令将三个任务放到后台中执行。用命令"jobs -l"显示后台任务的执行情况,举例如下:
#jobs -l[1] + 237 Running du -a /user > user.data[2] - 238 Running find / -name core -type f -ls > core.data |
首先介绍一个任务控制特有的名词:当前任务。上面的当前任务是"du -a /user > user.data",因为后台任务号码是"[1]"。如果当第一个后台任务顺利执行完毕,第二个后台任务还在执行中时,当前任务便会自动变成后台任务号 码"[2]"的后台任务。所以可以得出一点,即当前任务是会变动的。当用户输入"fg"、"bg"和"stop"等命令时,如果不加任何引号,则所变动的 均是当前任务。
终止后台任务
命令总是有出错的时候。当出现这种情况时,用户可用Shell的内置命令"kill"来结束任务。假如想要结束后台任务"du -a /user > user.data",可以用下面的命令:
# kill 237
# kill %1
其中,237为第一个后台任务的PID号码。如果想终止第二个后台任务,以下两种方法均可:
方法一:#kill %2
方法二:# kill %-
执行暂停任务
Shell的内置命令"stop"可用来暂停后台任务。示例如下:
stop % (停止第一个后台任务的执行)
stop %n (停止第n个后台任务的执行)
了解命令"stop"的使用后,便可将想要停止的后台任务暂停执行。例如用户要将一个年度报表用 "nroff"命令整理,因为文件量十分庞大,所以将它放到后台中执行。命令如下:
#nroff -ms moonth[1-12].acct > year2003.acct &
[4] 240
当命令处理到一半的时候发觉moonth12.acct文件是旧的需要更新,这时用"jobs"命令查看到后台任务"[4]"还在执行中,但无法知道命令已经处理到哪一个月份。此时可输入下面的命令,将后台任务"[4]"先暂停执行:
#stop %4
然后查看文件year2003.acct的尾部判断是否已经处理到12月。如果还没有执行到,那么可以将moonth12.acct文件 的资料更新,再用命令"bg"将已被暂时停止执行的后台任务"[4]"接着继续执行下去。这样不但可更正错误文件,而且不用将已处理完的任务重新再执行一 次。
方便之处
前台、后台任务确实可以给日常操作带来方便。因为,我们在日常操作中肯定会遇到同一时间要进行多个操作。这个时候如果不使用前台任务和后台任务,那么将要花费很多时间。熟练运用前台和后台任务能达到"时"半功倍。
配置linux的防火墙
一般而言,防火墙的两个网络接口应分属两个不同的网络,根据系统管理员定义的访问规则 在两个接口之间转发数据包,或者拒绝、丢弃数据包。实际上,防火墙不单单是访问控制的功能,而且还充当了路由器的角色。当然,这并非有什么不妥当的地方, 但是当你企图把你配置好的linux防 火墙放入运行网络,来保护现有系统安全的时候,你不得不重新考虑和更改你的网络架构。另外一个可能的麻烦是,当防火 墙发生意外时,如果没有防火墙的硬件备份的话,那么你将面临巨大的心理压力,因为防火墙的故障,整个网络瘫痪了。假如你把防火墙配置成透明模式(可称为伪 网桥),就无需更改网络架构,即使是防火墙不能工作了,要做的仅仅是拔出网线,把网线直接插在路由器的内部接口就可以让网络正常工作,然后你就有时间慢慢 恢复发生故障的防火墙。
好了,既然透明防火墙有那么多方便,我们赶快动手来配置吧!准备一台pc机,两块网 卡(建议用3com网卡),网线若干,redhat linux 9安装盘一套。打开机箱,把两块网卡插入计算机的pci插槽,用网线把计算机分别与网关和交换机相连(如前页图“正常状态”那样);盖上计算机的盖子,插 上电源,开机。在光驱里放上Linux 9安装光盘,由光盘引导计算机,从而安装Linux 系统。选择定制安装,不要保守,多花一点时间体验一下图形界面的安装乐趣,取消防火墙(no firewall),在安装快结束时选择以文本方式登录系统,完成安装。
透明防火墙功能配置:
1、设置网络地址。修改文件 /etc/sysconfig/network-scripts/ifcfg-eth0 和 /etc/sysconfig/network-scripts/ifcfg-eth1,使其具有相同的ip地址,相同的子网掩码。
用vi 来编辑如下,保存文件,运行命令 service network restart 使修改生效。
DEVICE=eth0
BOOTPROTO=none
BROADCAST=192.168.1.255
IPADDR=192.168.1.254
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
USERCTL=no
PEERDNS=no
TYPE=Ethernet DEVICE=eth1
BOOTPROTO=none
BROADCAST=192.168.1.255
IPADDR=192.168.1.254
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes
USERCTL=no
PEERDNS=no
TYPE=Ethernet
这里需要注意两个地方,第一个是要区分清楚那一个网卡是eth0,那一个是 eth1.这个问题十分关键,如果搞混了就会导致防火墙不能连通网络。至于怎样区分eth0和 eth1,我将在文章的末尾作简单的描述。在这里假定与路由器相连的网卡是eth0.
2、设置默认路由。在文件 /etc/sysconfig/network-scripts/ifcfg-eth0 中加入一行 gateway=192.168.1.1 保存后运行命令 service network restart ,修改生效。找一个开放ICMP协议的公网IP,用命令ping 202.108.36.196 (www.163.com 的主机)检测跟外网的连通状况,如果正常,表明Linux防火墙主机跟外网配置正确。再用命令ping 192.168.1.18 检测防火墙主机与内网主机的连通状况,如果正常则进行下一步操作。
3、启用网络转发和proxy_arp 。这是透明防火墙的核心部分,我把它们写进文件/etc/rc.d/rc.local。用vi /etc/rc.d/rc.local 插入如下内容。
#Ip forward
/sbin/sysctl -w net.ipv4.conf.all.forwarding=1
#Enable proxy-arp
/sbin/sysctl -w net.ipv4.conf.eth0.proxy_arp=1
/sbin/sysctl -w net.ipv4.conf.eth1.proxy_arp=1
在做这一步的时候,我曾经花费较多的时间,因为我做参考的那本书里的这一步没有参数 “–w” ,后来单独运行 sysctl net.ipv4.conf.eth0.proxy_arp=1 才发现red hat Linux 9 没有参数“-w”不能运行。
4、 指定路由。由于两块网卡(eth0,eth1)使用同样的ip ,如果不专门指定转发路径,一定会导致路由混乱,从而使防火墙以内的计算机没法访问 Internet 。还是用命令 vi 修改文件 /etc/rc.d/rc.local ,插入如下几行。
#Define route
/sbin/ip route
/sbin/ip route add 192.168.1.1 dev eth0
/sbin/ip route add 192.168.1.0/24 dev eth1
保存文件,重新启动计算机/Linux防火墙,如果不出意外,就可以从 192.168.1.18 这台主机访问Internet,当然内网的任何机器都是可以访问Internet 的。在这里对定义的路由(Define route)作些说明:/sbin/ip route del 192.168.1.0/24 dev eth0 表明所有到子网192.168.1.0/24的数据包都不从网卡eth0转发而从 eth1转发,即命令 /sbin/ip route add 192.168.1.0/24 dev eth1;/sbin/ip route add 192.168.1.1 dev eth0 表明所有到192.168.1.1的数据包都由eth0转发,这其实可以理解为两个网卡数据转发的分工—到192.168.1.1 的数据包由eth0负责,其余的由eth1负责。到这一步,恭喜你!已经成功了一大半,如果安装Linux的时候,选择的防火墙规则为中等级别,那么这个 防火墙已经配置成功了。相信大家跟我一样,且肯就此罢休。
定制防火墙策略
都是
在目录 /etc/rc.d 下创建脚本文件 myfirewall.sh,用命令 touch /etc/rc.d/myfirewall.sh并给文件执行权限 chmod 711 myfirewall。然后用 vi 编辑这个文件。
vi /etc/rc.d/myfirewall.sh
#!/bin/bash
#Define string
IPT=/sbin/iptables
#Refresh rules
$IPT -F FORWARD
$IPT -F INPUT
$IPT -F OUTPUT
#Default policy
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
#Enable loopback
$IPT -A INPUT -i lo -p all -j ACCEPT
#Enable icmp
$IPT -A INPUT -p icmp –j ACCEPT
#Interface forward
$IPT -A FORWARD -s 192.168.1.0/24 -j ACCEPT
$IPT -A FORWARD -d 192.168.1.0/24 -j ACCEPT
#Enable ssh
$IPT -A INPUT -p tcp –dport 22 -j ACCEPT
#Add other access rule //可根据实际情况添加或减少规则
$IPT -A INPUT -p tcp –dport 20 -j ACCEPT
$IPT -A INPUT -p tcp –dport 21 -j ACCEPT
$IPT -A INPUT -p tcp –dport 80 -j ACCEPT
$IPT -A INPUT -p tcp –dport 53 -j ACCEPT
$$IPT -A INPUT -p udp –dport 53 -j ACCEPT
$IPT -A INPUT -p tcp –dport 23 -j ACCEPT
$IPT -A INPUT -p tcp –dport 110 -j ACCEPT
$IPT -A INPUT -p tcp –dport 25 -j ACCEPT
$IPT -A INPUT -p tcp –dport 443 -j ACCEPT
我写的这个规则只开放了较少的允许访问的策略(可以ping ,收发邮件,浏览网页,ssh,https,telnet,ftp,其它的访问则全部丢弃)。$IPT –A OUTPUT ACCEPT 没有设置成DROP的原因是由于大部分网络服务所使用的协议是tcp协议,众所周知,tcp协议是面向连接的,如果设置 $IPT –A OUTPUT DROP, 那么任何协议为tcp的连接就要写两条了。况且防火墙对外的访问总是允许的,因此这样做是为了简化规则。
修改完成后保存,然后在当前目录运行命令 ./myfirewall.sh,在上述脚本没有书写错误的情况下,规则生效,但它仅仅在内存里,用命令 service iptables save 将自动生成文件 /etc/sysconfig/iptables,前面设定的访问策略就被保存到硬盘,系统重启时,系统将自动地从文件 /etc/sysconfig/iptables 获得定制的访问策略。
到这里,一个透明的linux 防火墙就架设好了。更改计算机的BIOS设置,使它可以在没有键盘的情况下启动系统。启用ftp,以便可以在需要时可以向防火墙主机拷贝文件。把键盘和显示器拿掉,剩下的操作只是摁一下电源开关。
防火墙的管理
可能有时候我们需要更改防火墙的某些规则,或者做些别的管理,既然我们是系统管理 员,再插上键盘和接上显示器坐在防火墙面前可能会被人耻笑,因此这些管理工作当然通过网络来进行。Ssh和webmin是我的偏好,ssh的协议端口是 22,webmin的默认协议端口是10000。其中ssh是linux系统的默认服务 ,只要安装客户端就可以(windows下的程序securecrt 是个不错的选择,据说ssh连接速度没有vnc 快)对防火墙进行所有的管理(和直接操作防火墙主机一样);webmin是基于web的图形界面管理方式,非常的方便和直观,尽管它不能象ssh那样对系 统进行完全的管理,但是对于我们的工作需求还是可以满足,建议在防火墙系统安装webmin服务器程序。Ssh与webmin两者结合使用,可以帮助我们 较快较深入地掌握Linux。
Ssh客户端安装较为简单,而webmin不需要安装客户端。这里介绍webmin 服务器的安装:把webmin-1.110. tar.gz 下载到另外一台windows的硬盘里,然后用ftp把它复制到防火墙主机的ftp目录(如果你是linux高手,并不需要如此,只须以ssh方式登录防 火墙,用get/wget指令取得该文件),解开文件webmin-1.110.tar.gz tar –zxvf webmin-1.110.gz.tzr cd webmin-1.110 安装webmin ./setup.sh ,一路回车,创建一个webmin管理账户,安装完毕;在任何一台运行浏览器的地址栏输入防火墙的ip加上端口号10000就可以管理防火墙(http: //192.168.1.254:10000)。
以这种方式管理linux 网络的防火墙十分直观,并且选项十分详尽,就算不懂iptable语法的人也能容易的配置防火墙的访问规则。这里有一个技巧,假如你更改了某条访问规则导 致网络不能向外访问,不要慌,到防火墙跟前重启一下系统即可。万一更改规则发生不测并且规则已经写入硬盘,那么请你直接删除文件 /etc/sysconfig/iptables,然后再运行脚本 sh /etc/rc.d/myfirewall 再次重写文件/etc/sysconfig/iptables service iptables save 。有的系统管理员倾向于直接编辑/etc/sysconfig/iptables 文件,但是这需要更多的耐心和勇气。如果你是新手,建议你跟我一样,先写脚本,再生成iptables。
特别关注:
最好把除路由器而外的整个网络放在防火墙的保护之中。如果象下图那样有同一
网段的主机放在防火墙的前面,将导致严重的网络故障。实践表明,这台windows 主机的ip地址丢失了(网络属性的ip值还在,但用命令 ipconfig /all 则是
附:区分eth0与eth1的小技巧。把防火墙的一块网卡跟交换机相连,另外一块不 做任何连接,即另外一块网卡的网络连接是断开的;使用命令 ifconfig eth0 down 关闭网络接口eth0;用网络中的另一台计算机 ping 192.168.1.254 ,如果ping 通了则表明连接交换机的网络接口为eth1,另一块为eth0,还可以把网线交换一下另一网络接口,确认判断的正确性。
在2.6内核下不编译内核给iptables添加模块
虽然是个不错的方法,而且进行的非常成功,但总觉得有点绕道的感觉,毕竟编译新的内核花费不了太多的时间。主要供不能重启的服务器作参考。
1,安装kernel源码
[root@jiecho]# yum install kernel-source
2,下载iptables-1.3.3.tar.bz2和patch-o-matic-ng-20050810.tar.bz2并解包,为了方便,我们都放在/usr/src下,
并把kernel和iptables做符号链接.
[root@jiecho]# cd /usr/src
[root@jiecho]# wget ftp://ftp.be.netfilter.org/pub/netfilter/iptables/iptables-1.3.3.tar.bz2
[root@jiecho]# wget ftp://ftp.be.netfilter.org/pub/netfilter/patch-o-matic-ng/snapshot/
patch-o-matic-ng-20050810.tar.bz2
[root@jiecho]# tar -jxvf iptables-1.3.3.tar.bz2
[root@jiecho]# tar -jxvf patch-o-matic-ng-20050810.tar.bz2
[root@jiecho]# ln -s linux-2.6.5-1.358 linux
[root@jiecho]# ln -s iptables-1.3.3 iptables
3,给netfilter打补丁,选择你要的模块,为了测试我就选择了ipp2p和time
[root@jiecho]# cd /usr/src/linux
[root@jiecho]# make mrproper
[root@jiecho]# make menuconfig
什么不做,保存退出,然后把Makefile改一下
[root@jiecho]# vi Makefile
把EXTRAVERSION = -1.358custom更改为EXTRAVERSION = -1.358
保持跟uname -a 的版本一致(可详细参考platinum兄弟的文章)
[root@jiecho]# cd /usr/src/patch-o-matic-ng-20050810
[root@jiecho]# ./runme ipp2p
[root@jiecho]# ./runme time
因为事先做好了符号链接,等问你kernel和iptables的位置的时候直接回车就行,
提示你是否添加ipp2p和time模块是就y确定,至此,netfilter的补丁打完了,如果你需要别的模块可以根据需要加上.
4,编译kernel的modules
[root@jiecho]# cd /usr/src/linux
[root@jiecho]# make menuconfig
在Device Drivers->Networking support->Networking options->Network packet filtering (replaces ipchains)
->IP: Netfilter Configuration中把下面的两项M选中.
TIME match support
IPP2P match support
然后保存退出
4,编译安装模块
下面就是最重要的步骤了,因为我们的原则是节省时间,不重新编译内核,而只编译其中的模块,
这点2.4的内核跟2.6的内核有所不同,郁闷了我一整天,2.4内核的模块是以*.o形式的,而2.6内核是以*.ko形式的,
这有个改变的方法,参考:http://blog.chinaunix.net/article.php?articleId=40742&blogId=2662
[root@jiecho]# make modules
HOSTCC scripts/basic/fixdep
HOSTCC scripts/basic/split-include
HOSTCC scripts/basic/docproc
HOSTCC scripts/conmakehash
HOSTCC scripts/kallsyms
CC scripts/empty.o
HOSTCC scripts/mk_elfconfig
MKELF scripts/elfconfig.h
HOSTCC scripts/file2alias.o
HOSTCC scripts/modpost.o
HOSTCC scripts/sumversion.o
HOSTLD scripts/modpost
HOSTCC scripts/pnmtologo
HOSTCC scripts/bin2c
到这里就可以ctrl+c中止了,因为我们不是要编译所有的模块,这样太浪费时间,而仅仅是netfilter的模块,
但是如果你直接执行make modules SUBDIRS=net/ipv4/netfilter就会出错,这就是2.4和2.6的区别,
我们先生成了scripts目录下的一系列需要的文件后就可以make modules SUBDIRS=net/ipv4/netfilter,
并用modpost等等把*.o文件生成为*.ko文件.
[root@jiecho]# make modules SUBDIRS=net/ipv4/netfilter
编译完成netfilter的模块后拷贝编译完成的模块
[root@jiecho]# cp /usr/src/linux/net/ipv4/netfilter/ipt_ipp2p.ko /lib/modules/2.6.5-1.358/kernel/net/ipv4/netfilter/
[root@jiecho]# cp /usr/src/linux/net/ipv4/netfilter/ipt_time.ko /lib/modules/2.6.5-1.358/kernel/net/ipv4/netfilter/
[root@jiecho]# chmod +x /lib/modules/2.6.5-1.358/kernel/net/ipv4/netfilter/ipt_ipp2p.ko
[root@jiecho]# chmod +x /lib/modules/2.6.5-1.358/kernel/net/ipv4/netfilter/ipt_time.ko
[root@jiecho]# depmod -a
5,编译iptables
[root@jiecho]# cd /usr/src/iptables
参照INSTALL文件我们进行编译安装
[root@jiecho]# make KERNEL_DIR=/usr/src/linux
会有错误编译不过
/usr/src/linux/include/linux/config.h:6:2: [root@jiecho]#error including kernel header in userspace; use the glibc headers instead!
我google了半天也没有找到是什么原因,就自己动手解决
[root@jiecho]# vi /usr/src/linux/include/linux/config.h把下面的三行注释掉
//#ifndef __KERNEL__
//#error including kernel header in userspace; use the glibc headers instead!
//#endif
然后重新编译安装
make KERNEL_DIR=/usr/src/linux
make install KERNEL_DIR=/usr/src/linux
完成安装以后测试一下
[root@jiecho]# iptables -V
[root@jiecho]# modprobe ipt_time
[root@jiecho]# modprobe ipt_ipp2p
[root@jiecho]# lsmod
ipt_time 2432 0
ipt_ipp2p 7552 0
ipt_REJECT 4736 1
ipt_state 1536 1
ip_conntrack 24968 1 ipt_state
iptable_filter 2048 1
ip_tables 13440 5 ipt_time,ipt_ipp2p,ipt_REJECT,ipt_state,iptable_filter
battery 6924 0
ipv6 184288 10
3c59x 30376 0
binfmt_misc 7176 1
nls_utf8 1536 4
ntfs 81516 4
dm_mod 33184 0
uhci_hcd 23708 0
button 4504 0
asus_acpi 8472 0
ac 3340 0
ext3 102376 4
jbd 40216 1 ext3
测试iptables
[root@jiecho]# iptables -A FORWARD -m ipp2p –edk –kazaa –bit -j DROP
[root@jiecho]# iptables -A INPUT -m time –timestart 8:00 –timestop 18:00 –days Mon,Tue,Wed,Thu,Fri
[root@jiecho]# iptalbes -L
THINKPAD选购注意事项
一,对照IBM的装箱单核对包装箱内附件,这是验机器的第一步
IBM随包装箱会放一张装箱单,这个东西现在一般机器都不带。
单子上会列出包装箱内的所有附件。
1、机器一台
2、电池一块注:按行货的装相方法,电池和机器是分开的,因为香港人拿到机器要先验屏有无坏点, 所以电池就装在机器上了。
3、适配器一套3头为英制,香港货和新加坡货都是这种。2头为美制,美国货是这样的。
4、电话线一根,接猫上网的,现在很少人用了。
5、说明书一套。多数均为T40版的,猜测是IBM为了节约成本,所以T40,T41,T42都用同一套说明书。
6、小红帽两个。为将来原配的脏了更换的。
7、固定螺丝一颗用来固定互换光区的,防止别人插拔。
大概就是这些了!
二,接下来就要看外观了,有没有划伤,毕竟外观也是很重要的
三,开机先进BIOS,验证SN号
开机进BIOS,先查看机器大概的配置,主频,内存,还有关键的两个号码,SN号和UUID号码
SN号是机器唯一的序列号,没有重复的,从BIOS里查到的SN号要和包装箱的,机器背面的,还有用测试软件测出来的都对上,才算完整。
UUID号码是主板序列号。只显示在BIOS里和包装箱上,这两处也要对上。另外要和用测试软件测出的UUID号也对上。如果机器主板被动过,那UUID号是会改变的。
四,开始进入系统,测试屏幕
这一步可以用专业的测试软件,网上有很多,我这里也备了一些,供大家测试。
五,查看电池充电次数
一般来说,不超过两次。如果是旧电池的,这一步是逃不过去的,而且以目前的技术,还没有哪个高手可以刷新充电次数
六,上网查询保修期限和核对附件的编号
网址为http://www-3.ibm.com/pc/support/site.wss/warranty/warranty.vm演示图片见图
在TYPE一栏中输入机器型号,如2373在Serial#一栏中输入机器SN号,然后点Continue,或者点击开会出现保修信息。
有本机器的保修期限和销售地。
特别说明:因为过海关是机器和包装箱分开过的,然后到深圳再一对一的装箱,难免适配器和电话线装错,有可能造成这两个部件的号码和网站显示号码难以对上。除此之外,机器的硬盘编号,电池编号等等都是能对上的。
另外,此编号是IBM为自己的配件所做的出厂编号,很多测试软件是测不出来的。
七,检查是否带有COA标
如果还是不放心的话,最后一招:送到蓝快去检验。
从“让人变懒的命令”谈各linux发行版本的哲学
Windows :
-
命令:Ctrl+C Ctrl+V
-
解释:把windows放在一帮linux发行版中似乎有点格格不入,但谁让他是最流行的操作系统呢?的确这个命令体现了windows的哲学,互通性与简便性。呵呵!这也是互联网发展到今天出现了这么多雷同信息的缘故。本想写ctrl+alt+del的,可这不是批判大会。
Redhat:
-
命令:rpm (redhat progrem mangerment)
-
解释:现在看起来rpm几乎成了所有linux发行必备的命令,设置成了一个标准,可见Redhat的号召力。起初linux的每一个软件都需要复杂的安装方式,也正是rpm包的出现,逐渐的将linux推向了桌面应用。方便、易用也就是redhat( 包括现在的fedora)的哲学,他们的目标就是将linux “傻瓜化”。
yellowdog:
-
命令:yum (yellowdog update mangerment)
-
解释:powerPC平台的用户也许还有所耳闻,i386的用户现在已经几乎看不到“黄狗”的影子了,但是从最新的redhat fedora上还能怀念这条经典的命令,更新的很快,但是更新离不开网络的支持。
debian:
-
命令:apt-get
-
解释:一句apt-get命令就涵盖了几乎全部开源软件的安装,可见debian 就是GPL的确实体现。也是较早的采用了与rpm类似的deb安装包的模式对一个系统的定制,同时也体现出了“操作系统就是工具箱”这个来自unnix的理念。
Gentoo:
-
命令:emerge
-
解释:类似于FreeBSD的哲学,但也许是linux的特殊性决定了它没有FreeBSD的cvsup来的那么深入人心,也显得更加的专业化和精细化。其实光是其安装的过程就足以阻挡了绝大多数的“非专业人士”。
FreeBSD:
-
命令:cvsup ; make install clean
-
解释:FreeBSD不是linux的发行版,但与其有许多相似之处。cvsup命令保证了FreeBSD的血统纯正;make install clean在保证其简洁之外也体现出了其高度的“洁癖”,对于软件包设置、发行版代码的种种近乎苛刻的限制,让人害怕是不是在使用一段时间后使用者也会出现不好的心理问题。

-
网站:www.freebsd.org
汉澳:
- 口号:气吞万里如虎
- 解释:口气很大,非常的风趣幽默,开胃良药,无须多说,一看便知

- 网站:www.shouji88.com
合成SuSE10的DVD版本
在很多论坛上看到有人说Suse的5张CD刻录太浪费(其实我一直用cd-rw刻录),于是想起了原先制作9.3的方法,依葫芦画瓢拿来一试,不错,成功!
- 下载光盘镜像,如果只有光盘而没有镜像,可以使用dd来制作,方法为:dd if=/dev/cdrom of=disk1.iso
- 建立文件夹:mkdir disk1 disk2 disk3 disk4 disk5
- 挂装镜像文件:
- mount disk1.iso disk1 -o loop
- mount disk2.iso disk2 -o loop
- mount disk3.iso disk3 -o loop
- mount disk4.iso disk4 -o loop
- mount disk5.iso disk5 -o loop
- cp -rf disk1/boot . #将disk下的文件复制到DVD的 /boot
mkdir i586 i686 noarch #创建目录结构
- cat disk/suse/i586/MD5SUMS disk2/suse/i586/MD5SUMS disk3/suse/i586/MD5SUMS disk4/suse/i586/MD5SUMS disk5/suse/i586/MD5SUMS > i586/MD5SUMS #合并校验文件,防止校验出错
cat disk1/suse/i686/MD5SUMS disk2/suse/i686/MD5SUMS > i686/MD5SUMS
cat disk1/suse/noarch/MD5SUMS disk2/suse/noarch/MD5SUMS disk3/suse/noarch/MD5SUMS disk4/suse/noarch/MD5SUMS disk5/suse/noarch/MD5SUMS > noarch/MD5SUMS
- mkisofs -o SuSE10_dvd.iso -b boot/loader/isolinux.bin -c boot/loader/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -l -P SuSE -r -T -V OpenSuSE_10 -x disk1/boot -x disk1/suse/i586/MD5SUMS -x disk1/suse/noarch/MD5SUMS -x disk1/suse/i686/MD5SUMS -x disk2/suse/i686/MD5SUMS -x disk2/suse/i586/MD5SUMS -x disk2/suse/noarch/MD5SUMS -x disk3/suse/i586/MD5SUMS -x disk3/suse/noarch/MD5SUMS -x disk4/suse/i586/MD5SUMS -x disk4/suse/noarch/MD5SUMS -x disk5/suse/i586/MD5SUMS -x disk5/suse/noarch/MD5SUMS -graft-points disk1 boot/=boot suse/i586/MD5SUMS=i586/MD5SUMS suse/noarch/MD5SUMS=noarch/MD5SUMS suse/i686/MD5SUMS=i686/MD5SUMS suse/=disk2/suse suse/=disk3/suse suse/=disk4/suse suse/=disk5/suse media.2/=disk2/media.2 media.3/=disk3/media.3 media.4/=disk4/media.4 media.5/=disk5/media.5 #漫长的制作过程
- 制作完成,生成SuSE10_dvd.iso镜像文件
mount ./SuSE10_dvd.iso /mnt/cdrom -o loop
ls /mnt/cdrom - 如果全都正确说明你自己的DVD镜像已经制作完成了,剩下的任务就是刻盘安装了。
精打细算用Linux
按:不知是从什么地方翻出的老文档(至少在RH7.3之前)老的有点落后,仅供参考。有部分命令是8.0后没有了的,而且核心还是2.4.*的。
所有的操作系统都要求"给我更多!"– 它们要求更多的磁盘空间,更多的内存,很高的cpu工作频率–令人欣慰的是拯救我们这些没有最新硬件的人的救世主出现了,是的,我说的是Linux。
虽然Linux作为网络操作系统很出色,但实际上,作为单用户的操作系统,工作在未连网的家庭PC上,它也是非常不错的。考虑到这种情况,你有很多方法可以从你的系统中挤出更多的资源,甚至在一台象仅有8M内存的486这样的老机器上也可以。
现在请记住你需要以 root 身份登录到系统来做下面的所有事情,我们的目的将有两个分支:使内存的使用量最小,和节省磁盘空间。
节省内存!
重新编译内核
内 核在没有安装到你的机器里以前就已经被编译好了,但是它是一个带有所有功能的内核,把每样东西都编译了进去。这就意味着它比你要专用的大。如果你从内核源 代码编译一个你自己的内核的话,它会比缺省的vmlinuz的内核小100kB以上。此外,这还有助于你了解如何编译内核。实际上,这十分简单。你要首先 设置,就是说你的内核里都需要什么功能。然后编译它就行了。Linux已经发展到了一个很高的阶段,以至于它内核的设置可以是图形化的。内核的源代码通常 在这里:/usr/src/linux。要运行图形界面的设置程序,执行这个命令 make menuconfig (这个是基于文本菜单的),或者执行 make xconfig (这个是在X中的图形界面),你将会看到一个很长的设置选项列表,在做选择以前,建议你仔细看看每一项所带的帮助提示。这些提示总是会给出合理的建议,你 应该遵循它。如此,你将会确切的得到那些你需要编译进你的内核的东西,而不包含其他。我也建议你读一读源码路径下的README文件。一旦你设置好了,退 出X(如果你运行了它),在文本模式下编译它,这样做没有笨重的X运行可以有更多的内存可用,编译起来快一些。执行 make dep ; make zImage ,然后去喝杯咖啡,做完这些,README文件会很通俗的解释你应如何使用这个新内核,我不再赘述。
停止某些服务!
当Linux 系统运行的时候,通常会有很多后台作业在运行,这些作业都是有特殊功能的,它们叫做deamon。例如 sendmail,是邮件的daemon,它处理所有邮件的发送和邮件递送安排。有许多这样的daemon在系统启动的时候开始运行,系统中有几个 runlevel,它们是一些启动和停止的服务的组合。例如,在通常的Linux系统的runlevel 1上,(这是单用户模式),就会明显地比多用户模式的runlevel 3需要较少的服务。缺省情况下,Linux 启动进入 runlevel 3。现在它会启动很多服务在这个runlevel上,它们中的一些对未连网的家庭PC来说没用。例如,你显然不想运行sendmail来浪费
宝 贵的内存。是的,它可以把邮件在root@localhost和someuser@localhost两个本地用户间发来发去,但是这会消耗系统资源,而 且没有丝毫用处。如何从一个runlevel里删去一项服务在RedHat里,这非常简单。系统管理是RedHat比其他发布强的地方。在以root登录 以后,启动X,然后在一个 xterm 里启动 tksysv ,这是一个图形界面的runlevel编辑器。你可以看到六个列,每个runlevel占一个。现在我们仅注意runlevel3就可以了,就是系统通常 启动进入的那个runlevel。每个列都有两部分,上面的是系统启动时开始执行的服务,下面的是在系统shutdown时停止的服务。你要做的就是选择 你想删去的项,然后按del,就是这样,另外记得在你退出以前保存你的修改。
哪些服务要留下,哪些要删去事实上,告诉你留哪些很简单。记住,所有的这些办法都是在runlevel 3上有效。这是几条要点:
kerneld – 如果没有它的话,那什么都工作不起来了!
syslog – 必须保留,来记录log信息。这些log在万一系统出现错误的时候,可以帮助你看看系统哪里出错了(实际上,在Linux系统里什么错误都不会出现)
keytable – 如果你还想使用键盘的话就得留下这个!
rc.local – 这是那些日常的工作启动的地方,在所有其他的服务都启动以后执行你仅仅需要上面的4项服务,没有它们,就象有人说的," 一切都歇菜了"
你可能想保留的服务
下面是一些要不要两可的服务,一些你可能想要保留的无关紧要的服务。你可能需要它们,或者喜欢它们。
crond – 它周期性的运行一些日常的作业,最重要的事情就是确保你的log文件不会太大。你可以在你需要的时候来运行它。
atd – 如果你想要使用 at ,你就需要这个deamon,也就是说,作业按你指定的时间来执行,在一个多用户的24小时都不停机的大系统中,人们通常使用它来指定在晚上运行一些非常 繁重的计算任务。但是在简单的家用机器上,一般不怎么使用,毕竟你是使用它的唯一的人。
gpm – 它可以让你在文本模式下使用鼠标,它仅在你工作在文本模式下的时候才有用, 而当你工作在X下的时候就是一种浪费。
节省磁盘空间
事实上,这里你没有什么可做的,除了删掉一些你不想要的包。RedHat有一个极好的,很容易使用的包管理系统,它会记录你硬盘上的几乎所有的非用户文件。每个安装到你的系统里的文件都是这些包的一部分,这些包能够被反安装。
如何删除一个包
在x中以命令行来运行 " glint ",这是一个图形界面的RedHat包管理系统,你会得到一个图形界面显示你的系统中安装的所有的包。这些包被分类,并以目录列表的形式显示出来。要删掉一个包,选择它,然后按一下右面的"uninstall"按钮就可以了。
我应该删掉哪些包?
请 注意,有一些要紧的包是不应该被删除的。在glint里,通常比较可取的做法是不要动 base 和 library 的包,除非你确切的知道你到底在做什么。其他的,看看它们的描述(点 query 按钮)。如果你很久都没有使用一个包的话, 或者预计以后也不会用它,那么删掉它通常是安全的。万一删掉一个包会影响其他的包 的话,glint会告诉你。它很安全。如果你误删了一个一个包,你总能从光盘上重新安装 它的。
结尾
这些仅是你可以试试的建议。Linux你用的越多,尝试的越多,你就会从你的系统中
挤出更多的资源。
中国顶级门户网站架构分析
某日上网,遇一强贴,正巧最近也在使用一些类似的技术实现我们公司的网站,现将其贴出。
首先声明,下面的内容都是我个人根据一些工具形成的猜想。并不保证和现实中各大门户网站所用的架构一摸一样,不过我认为八九不离十了。
新浪和搜狐在国内的知名度可谓无人不知无人不晓。他们每天的点击率都在千万以上。这样大的访问量对于新浪和搜狐来说怎样利用有限的资源让网民获得最快的速度成为首要的前提,毕竟现在网络公司已经离开了烧钱的阶段,开始了良性发展,每一笔钱砸下去都需要一定回响才行的。另一方面,技术人员要绞尽脑汁,不能让用户老是无法访问、或者访问速度极慢。这样就算有再好的编辑、再好的销售,他们也很难将广告位卖出去,等待他们的将是关门。当然这些情况都没有发生,因为他们的技术人员都充分的利用了现有资源并将他们发挥到了极至。说到底就是用squid做web cache server,而apache在squid的后面提供真正的web服务。当然使用这样的架构必须要保证主页上大部分都是静态页面。这就需要程序员的配合将页面在反馈给客户端之前将页面全部转换成静态页面。好了基本架构就这样,下面说说我怎么猜到的以及具体的架构:
法宝之一:nslookup
实战:
nslookup www.sina.com.cn
Server: ns-px.online.sh.cn
Address: 202.96.209.5
Non-authoritative answer:
Name: taurus.sina.com.cn
Addresses: 61.172.201.230, 61.172.201.231, 61.172.201.232, 61.172.201.233
61.172.201.221, 61.172.201.222, 61.172.201.223, 61.172.201.224, 61.172.201.225
61.172.201.226, 61.172.201.227, 61.172.201.228, 61.172.201.229
Aliases: www.sina.com.cn, jupiter.sina.com.cn
这里可以看到新浪在首页上用到了那么多IP,开始有人会想果然新浪财大气粗啊。其实不然,继续往下看:
nslookup news.sina.com.cn
Server: ns-px.online.sh.cn
Address: 202.96.209.5
Non-authoritative answer:
Name: taurus.sina.com.cn
Addresses: 61.172.201.228, 61.172.201.229, 61.172.201.230, 61.172.201.231
61.172.201.232, 61.172.201.233, 61.172.201.221, 61.172.201.222, 61.172.201.223
61.172.201.224, 61.172.201.225, 61.172.201.226, 61.172.201.227
Aliases: news.sina.com.cn, jupiter.sina.com.cn
细心的人可以发现了news这个频道的ip数和首页上一样,而且IP也完全一样。也就是这些IP在sina的DNS上的名字都叫 taurus.sina.com.cn,那些IP都是这个域的A记录。而news,sports,jczs.news。。。都是CNAME记录。用DNS 来做自动轮询。还不信,再来一个,就体育频道好了:
nslookup sports.sina.com.cn
Server: ns-px.online.sh.cn
Address: 202.96.209.5
Non-authoritative answer:
Name: taurus.sina.com.cn
Addresses: 61.172.201.222, 61.172.201.223, 61.172.201.224, 61.172.201.225
61.172.201.226, 61.172.201.227, 61.172.201.228, 61.172.201.229, 61.172.201.230
61.172.201.231, 61.172.201.232, 61.172.201.233, 61.172.201.221
Aliases: sports.sina.com.cn, jupiter.sina.com.cn
其他的可以自己试。好了再来看看sohu的情况:
nslookup www.sohu.com
Server: ns-px.online.sh.cn
Address: 202.96.209.5
Non-authoritative answer:
Name: pagegrp1.sohu.com
Addresses: 61.135.132.172, 61.135.132.173, 61.135.132.176, 61.135.133.109
61.135.145.47, 61.135.150.65, 61.135.150.67, 61.135.150.69, 61.135.150.74
61.135.150.75, 61.135.150.145, 61.135.131.73, 61.135.131.91, 61.135.131.180
61.135.131.182, 61.135.131.183, 61.135.132.65, 61.135.132.80
Aliases: www.sohu.com
--------------------------------------------
nslookup news.sohu.com
Server: ns-px.online.sh.cn
Address: 202.96.209.5
Non-authoritative answer:
Name: pagegrp1.sohu.com
Addresses: 61.135.150.145, 61.135.131.73, 61.135.131.91, 61.135.131.180
61.135.131.182, 61.135.131.183, 61.135.132.65, 61.135.132.80, 61.135.132.172
61.135.132.173, 61.135.132.176, 61.135.133.109, 61.135.145.47, 61.135.150.65
61.135.150.67, 61.135.150.69, 61.135.150.74, 61.135.150.75
Aliases: news.sohu.com
情况和sina一样,只是从表面来看sohu的IP数要多于sina的IP数,那么sohu上各个频道用的服务器就要多于sina了?当然不能这么说,因为一台服务器可以绑定多个IP,因此不能从IP数的多少来判断用了多少服务器。
从上面这些实验可以基本看出sina和sohu对于频道等栏目都用了相同的技术,即squid来监听这些IP的80端口,而真正的web server来监听另外一个端口。从用户的感觉上来说不会有任何的区别,而相对于将web server直接和客户端连在一起的方式,这样的方式明显的节省的带宽和服务器。用户访问的速度感觉也会更快。
1. 难道就根据几个域名的ip相同就可以证明他们是使用squid的嘛?
当然不是,前面都只是推测。下面才是真正的证实我上面的猜测。先nslookup一把sina的体育频道。
nslookup sports.sina.com.cn
Server: ns1.china.com
Address: 61.151.243.136
Non-authoritative answer:
Name: taurus.sina.com.cn
Addresses:61.172.201.231, 61.172.201.232, 61.172.201.233, 61.172.201.9
61.172.201.10, 61.172.201.11, 61.172.201.12, 61.172.201.13, 61.172.201.14
61.172.201.15, 61.172.201.16, 61.172.201.17, 61.172.201.227, 61.172.201.228
61.172.201.229, 61.172.201.230
Aliases: sports.sina.com.cn, jupiter.sina.com.cn
然后直接访问这些ip中的任意一个ip试试看,访问下来的结果应该是如下图所示:
由此可以证明sina是在dns中设置了很多ip来指向域名sqsh-19.sina.com.cn,而其他各种相同性质的频道都只是sqsh- 19.sina.com.cn一个别名,用CNAME指定。dns的设置应该是这样的,然后server方面,通过squid 2.5.STABLE5(最新的稳定版为STABLE6)来侦听80端口。上面这些是根据一些信息分析而出的,应该基本正确的。下面一些就是我的个人的猜想:
它的真正的web server也同样是侦听80端口,因为在squid配置文件中有一项是:
httpd_accel_port 80
如果你设成其他端口号(比如88)的话,那上图的错误信息就会变成
While trying to retrieve the URL: http://61.172.201.19:88
工具2:nmap扫描程序:可以用来检查服务器开了什么端口。
我现在用nmap来扫描sina的一个ip:61.172.201.19来进行分析
bash-2.05$ nmap 61.172.201.19
Starting nmap 3.50 ( http://www.insecure.org/nmap/ ) at 2004-07-30 13:31 GMT
Interesting ports on 61.172.201.19:
(The 1657 ports scanned but not shown below are in state: filtered)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
Nmap run completed — 1 IP address (1 host up) scanned in 73.191 seconds
可以看到他对外只开了2个端口,80端口就是刚才我们说的squid打开的,这点刚才已经验证过了。而22端口是用来ssh远程连接的,主要是sa用来远程操作服务器用的安全性非常高的方法。
工具3:lynx或者其他可以读取http头文件的工具及小程序:
直接看例子比较好理解:
HTTP/1.0 200 OK
Date: Fri, 30 Jul 2004 05:49:47 GMT
Server: Apache/2.0.49 (Unix)
Last-Modified: Fri, 30 Jul 2004 05:48:16 GMT
Accept-Ranges: bytes
Vary: Accept-Encoding
Cache-Control: max-age=60
Expires: Fri, 30 Jul 2004 05:50:47 GMT
Content-Length: 180747
Content-Type: text/html
Age: 37
X-Cache: HIT from sqsh-230.sina.com.cn
Connection: close
上面是sina的http头的反馈信息。里面有很多有价值的东东哦:)譬如,它后面的apache是用2.0.49,还设了过期时间为2分钟。最后修改时间。这些都是要在编译apache的时候载入的,特别是Last-Modified还需要小小的改一把源码–至少我是这样做的。
综上所述
sina的架构应该是前面squid,按照现在的服务器2u,2g内存一般每台服务器至少可以跑4个squid2.5stable5. 这样它16个ip就用了4台服务器。后面一层是apache2.0.49应该会用2台。这2台可能用的全是私有ip,通过前面的squid服务器在 hosts文件中指定。具体的实现方法我会下次整理出我做实验的文档:)而apache的htdocs可能是有一个或2个磁盘阵列作nfs。apache mount nfs server的时候应该是只读的,然后另外还有服务器转门用来做编辑器服务器,用来编辑人员更新文章。这台服务器应该对nfs server是具有可写的权限。
—-这就一套完整的sina所运用的方案,当然很多是靠猜测的,我没有和sina的技术人员有过任何沟通(因为一个也不认识),否则我也就不会写出来了。其他sohu,163应该也有这样的架构。
最后声明:这只是一些静态页面组成频道的一个架构,sina还有很多其他服务器,什么下载,在线更新等不在这个架构中。

近期评论