2007年04月21日

地址

http://blog.csdn.net/dugu072/

       今天下午,突然被主管拉出去谈话,惊闻:同事杨爆发了!他在与组长发生一些口角后终于爆发,爆发原因竟然还是因为我上午的一句话,当然还有长期以来历史事件积累!

       初始的惊讶过后,却也是意料之中的。因为这好像是与同事杨的第三次冲突了,只不过这次顶到经理那儿去了!回想前几次与他的冲突,这级别还真的成阶梯上升趋势,最早闹到我们主管,然后是组长,这次是部门经理,看来下次就是部门主管了……

       同事杨是个研究生,而我一个本科而已。一般来说,应该是我面对他,会有压力。可事实,按照组长告诉我的,是他面对我有压力,甚至是怕与我交流。于是我仔细回顾了他这几次爆发的经历。

        第一次,我实习即将离开时,需要将手中的设备转接给他,因为当时比较忙,在告诉了他一遍设备名称及位置后,就准备自己的事情去了,结果一会儿后,他再次过来,要我再说一遍,很无奈,但是准备再说一遍时,结果他说要准备贴纸记上,ok,但之后,他竟然一张一张贴纸写起名字来,看着20张左右的贴纸,我自然不想等他,而且比较反感他这种求人办事,还要人干等的做事风格,说了句“完事儿叫我”,就立即走了 ——尽管他在后面喊了几声,也没搭理。于是,他第一次爆发了,闹到主管那儿去了。至于事后,真没有什么印象了,这次能记这么清楚,可能是因为这是我工作中第一次与人冲突。

        第二次,差点记不起来了,幸好最近发生了一次同样的时间,回忆起来一点儿。当时好像是在整理设备时,我不小心将他的环境总电源碰掉了,道了声歉。不过一会儿后,我的环境也全部断电,而他那时刚好在我的环境附近。当时我真的很生气,有必要这么睚眦必报?冲过去对他说了句“你凭什么碰掉我电源”之类的话,掉头就走了。结果他自然没有承认,反而是追过来与我理论,进而闹到主管、组长那儿去了。

        第三次,主管要换一个设备,与同事杨换了后,同事杨再与我换,到我这儿时,我问了下“设备版本是否升级?”,“没有”,“那你要升级后给我啊,不升级不换”。其实,这在我们其他同事更换设备时,是一个基本要求,因为我的设备是最新版本,既然你要与我换,当然要是同样的版本。结果他理解为:我凭什么对他指手画脚,要求他去升级,这不该是他做的!于是他爆发了,还翻了一堆历史事件,证明他在组内(主要针对我,好像还指组长)受到歧视。

       三次经历就是如此,到现在,我也觉得很无稽。到底因为他太敏感了,还是我太不会做人了?反正不论哪一次的结局都是,老大事后后“同事杨就是这种性格,大家要迁就之类的,说话要注意等等”,这一次还说道他压力过大。我就奇怪了,都是年轻人,甚至我比他们都要年轻,为什么他就可以有这种性格,大家还要迁就?工作时间长的,会做人,会转移视线,会放马后炮,但我呢?工作甚至一年不到的一个本科生,就不能有性格?就得去迁就所谓的有性格的人?要成熟?要没有棱角?

        真的应该如此吗?我迷茫过,但最后我的结论是,年轻人,得有冲劲,得有韧性。否则整天一个毫无棱角,温温热热的生活有什么意思?看着我的主管快30的人,在我们发生冲突后,经常就是一些马后炮的话,在我看来毫无意义,这些话谁心里都明白,但年轻人之所以是年轻人,就是得有自己的个性,坚持自己的原则!我已经23了,年轻的时间不多,我还想到处去闯一闯!还想让自己的生活充满朝气!

        再想一想现在的工作环境,公司搞了个大跃进似的5个目标;组与组之间充满矛盾,“一致对外”的话都能说出来;组内还时不时的需要接受同事杨的爆发?这些问题,压在我身上,真的很累,我有逃避的想法,但我明白自己现在肯定不会,玉不啄,不成器,扛过这次压力——这是我对自己的挑战!

        这次过后,大约是明年吧,我想我会离开福州了。也许其他地方,这种事儿更多,但有什么关系呢?不去见识下,谁知道外面的世界是不是更精彩?失败了大不了从头再来!成功需要自己去把握,在未来有限的时间里,加油吧!奋斗吧!

2007年04月14日

        突然发现,繁忙的工作后,回到家里,除了劳累,还有一种莫名的情绪充斥在心,或是彷徨、或是担忧、或是无奈,我也不知道是一种什么样的情绪,总之很负面的那种!至于为什么,我很难说明白,生活的空虚,未来的迷茫,工作的高压等等,原因太多,也许都是,也许都不是。

        也许,学点什么,写些东西,或者偶尔上来发泄下,会好受一些~

        于是,回来了~

 

2005年12月02日

都不说长草了,就说草都没了……

汗就一个字~~~~~~~~~~~~~~~~~~~

2005年10月26日

编者: 陈绪/魏琼
来自: linux知识宝库 (www.linuxmine.com)

编者按:鉴于目前中国Linux的发展现状,90%以上的问题都可以用一句话来回答,这便是本文的初衷。欢

迎大家添加自己的“一句话”,收录后注明原始提供者。更详细的文档,请浏览本版精华区或http://www

.linuxmine.com

—————————-网络无关篇————————–
0001 修改主机名(bjchenxu)
vi /etc/sysconfig/network,修改HOSTNAME一行为"HOSTNAME=主机名"(没有这行?那就添加这一行吧),

然后运行命令 " hostname 主机名"。一般还要修改/etc/hosts文件中的主机名。这样,无论你是否重启

,主机名都修改成功。

0002 Red Hat Linux启动到文字界面(不启动xwindow)(bjchenxu)
vi /etc/inittab
id:x:initdefault:
x=3:文本方式 x=5:图形方式

0003 linux的自动升级更新问题(hutuworm,NetDC)
对于redhat,在www.redhat.com/corp/support/errata/找到补丁,6.1以后的版本带有一个工具up2date

,它能够测定哪些rpm包需要升级,然后自动从redhat的站点下载并完成安装。
升级除kernel外的rpm: up2date -u
升级包括kernel在内的rpm: up2date -u -f

由于Red Hat Network SSL证书过期,所以应在rhn_register || up2date 之前先执行一行script以更新

证书:
wget -q -O – https://rhn.redhat.com/help/new-cert.sh | /bin/bash

Debian跟别的发行版还是有很大的差别的,用Debian做服务器维护更加方便;红帽的升级其实挺麻烦的,

当然,如果你交钱给红帽的话,服务是会不一样的。
Debian下升级软件:
apt-get update
apt-get upgrade
前提:配置好网络和/etc/apt/sources.list,也可以用apt-setup设置。

0004 windows下看linux分区的软件(bjchenxu)
Paragon.Ext2FS.Anywhere.2.5.rar和explore2fs-1.00-pre4.zip

0005 mount用法(sakulagi,sxsfxx,aptkevin)
fat32的分区 mount -o codepage=936,iocharset=cp936 /dev/hda7 /mnt/cdrom
ntfs的分区 mount -o iocharset=cp936 /dev/hda7 /mnt/cdrom
iso文件 mount -o loop /abc.iso /mnt/cdrom
软盘 mount /dev/fd0 /mnt/floppy
USB闪存 mount /dev/sda1 /mnt/cdrom
在有scsi硬盘的计算机上,如果用上面的命令挂载usb闪存,则会mount到/boot分区。这种情况,应该先

用fdisk -l /dev/sd? 来看看到底usb闪存盘是在哪个设备下(通常会是sdb或者sdc)。比如某台机器上,

就是在sdc1上面。
所有/etc/fstab内容 mount -a
可以指定文件格式"-t 格式", 格式可以为vfat, ext2, ext3等.
访问DVD mount -t iso9660 /dev/dvd /mnt/cdrom或mount -t udf /dev/dvd /mnt/cdrom
注意:dvd的格式一般为iso9660或udf之一

0006 在vmware的LINUX中使用本地硬盘的FAT分区(bjchenxu)
将本地的FAT分区共享,然后在VMWARE中使用SMBFS挂上。可以将如下的行放到/etc/fstab中:
//win_ip/D$ /mnt/d smbfs

defaults,auto,username=win_name,password=win_pass,codepage=936,iocharest=gb2312 0 0
其中win_ip是你的windows的IP地址;
D$是你的windows里面共享的D盘的共享名;
/mnt/d是要将该分区mount到linux的目录;
win_name和win_pass是你的WINDOWS里面可以读取该分区的用户,比如你的管理员名和密码。
如果你运行了/etc/rc.d/init.d/netfs,那么在启动的时候就会自动挂载这个分区。

0007.a 删除名为-a的文件(bjchenxu)
rm ./-a
rm — -a 告诉rm这是最后一个选项,参见getopt
ls -i 列出inum,然后用find . -inum inum_of_thisfile -exec rm ‘{}’ \;

0007.b 删除名为\a的文件(bjchenxu)
rm \\a

0007.c 删除名字带的/和‘\0′文件(bjchenxu)
这些字符是正常文件系统所不允许的字符,但可能在文件名中产生,如unix下的NFS文件系统在Mac系统上

使用
1.解决的方法,把NFS文件系统在挂到不过滤’/'字符的系统下删除含特殊文件名的文件。
2.也可将错误文件名的目录其它文件移走,ls -id 显示含该文件目录的inum,umount 文件系统,
clri清除该目录的inum,fsck,mount,check your lost+found,rename the file in it.
最好是通过WINDOWS FTP过去就可以删除任何文件名的文件了!

0007.d 删除名字带不可见字符的文件(bjchenxu)
列出文件名并转储到文件:ls -l >aaa
然后编辑文件的内容加入rm命令使其内容成为删除上述文件的格式:
vi aaa
[rm -r *******
]
把文件加上执行权限 chmod +x aaa
执行 $aaa

0007.e 删除文件大小为零的文件(bjchenxu)
rm -i `find ./ -size 0`
find ./ -size 0 -exec rm {} \;

find ./ -size 0 | xargs rm -f &

for file in * #自己定义需要删除的文件类型
do
if [ ! -s ${file} ]
then
rm ${file}

echo "rm $file Success!"
fi
done

0008 redhat设置滚轮鼠标(mc1011)
进入X后,选择鼠标的配置,选择wheel mouse(ps/2)就可以了,
如果鼠标表现异常,重启计算机即可。
(或者su, vi /etc/X11/XF86Config, 把PS/2 改成 ImPS/2)

0009 加装xwindow(bjchenxu)
用linux光盘启动,选择升级,然后单独选择包,安装即可

0010 删除linux分区(bjchenxu)
做一张partition magic的启动软盘,启动后删除. 或者用win2000的启动光盘启动,然后删除.

0011 如何退出man(bjchenxu)
q

0012 不编译内核,mount ntfs分区(bjchenxu,hutuworm)
原装rh8,未升级或编译内核
1. 上google.com搜索并下载 kernel-ntfs-2.4.18-14.i686.rpm
2. rpm -ivh kernel-ntfs-2.4.18-14.i686.rpm
3. mkdir /mnt/c
4. mount -t ntfs /dev/hda1 /mnt/c

Read only: http://linux-ntfs.sourceforge.net/
Read/Write: http://www.jankratochvil.net/project/captive/

0013 tar 分卷压缩和合并(WongMokin,Waker)
以每卷500M为例
tar分卷压缩:tar cvzpf – somedir | split -d -b 500m
tar多卷合并:cat x* > mytarfile.tar.gz

0014 使用lilo/grub时找回忘记了的root口令(bjchenxu)
三种办法:
1.在系统进入单用户状态,直接用passwd root去更改
2.用安装光盘引导系统,进行linux rescue状态,将原来/分区挂接上来,作法如下:
cd /mnt
mkdir hd
mount -t auto /dev/hdaX(原来/分区所在的分区号) hd
cd hd
chroot ./

passwd root
这样可以搞定
3.将本机的硬盘拿下来,挂到其他的linux系统上,采用的办法与第二种相同
rh8中
一. lilo
1. 在出现 lilo: 提示时键入 linux single
画面显示 lilo: linux single
2. 回车可直接进入linux命令行
3. #vi /etc/shadow
将第一行,即以root开头的一行中root:后和下一个:前的内容删除,
第一行将类似于
root::……
保存
4. #reboot重启,root密码为空
二. grub
1. 在出现grub画面时,用上下键选中你平时启动linux的那一项(别选dos哟),然后按e键
2. 再次用上下键选中你平时启动linux的那一项(类似于kernel /boot/vmlinuz-2.4.18-14 ro

root=LABEL=/),然后按e键
3. 修改你现在见到的命令行,加入single,结果如下:
kernel /boot/vmlinuz-2.4.18-14 single ro root=LABEL=/
4. 回车返回,然后按b键启动,即可直接进入linux命令行
5. #vi /etc/shadow
将第一行,即以root开头的一行中root:后和下一个:前的内容删除,
第一行将类似于
root::……
保存
6. #reboot重启,root密码为空

0015 使ctrl + alt + del失效(bjchenxu)
vi /etc/inittab
将ca::ctrlaltdel:/sbin/shutdown -t3 -r now这行注释掉,就可以了

0016 如何看出redhat的版本是7还是8(hutuworm)

cat /proc/version或者cat /etc/redhat-release或者cat /etc/issue

0017 文件在哪个rpm中(无双)
www.rpmfind.net上搜,或者rpm -qf 文件名得到

0018 把man或info的信息存为文本文件(bjchenxu)
以 tcsh 为例:
man tcsh | col -b > tcsh.txt
info tcsh -o tcsh.txt -s

0019 利用现存两个文件,生成一个新的文件(bjchenxu)
1. 取出两个文件的并集(重复的行只保留一份)
2. 取出两个文件的交集(只留下同时存在于两个文件中的文件)
3. 删除交集,留下其他的行
1. cat file1 file2 | sort | uniq
2. cat file1 file2 | sort | uniq -d
3. cat file1 file2 | sort | uniq -u

0020 设置com1口,让超级终端通过com1口进行登录(bjchenxu)
确认有/sbin/agetty,编辑/etc/inittab,添加
7:2345:respawn:/sbin/agetty /dev/ttyS0 9600
9600bps是因为联路由器缺省一般都是这种速率,也可以设成
19200、38400、57600、115200
修改/etc/securetty,添加一行:ttyS0,确保root用户能登录
重启机器,就可以拔掉鼠标键盘显示器(启动时最好还是要看看输出信息)了

0021 删除目录下所有文件包括子目录(bjchenxu)
rm -rf 目录名

0022 查看系统信息(bjchenxu)
cat /proc/cpuinfo – CPU (i.e. vendor, Mhz, flags like mmx)
cat /proc/interrupts – 中断
cat /proc/ioports – 设备IO端口
cat /proc/meminfo – 内存信息(i.e. mem used, free, swap size)
cat /proc/partitions – 所有设备的所有分区
cat /proc/pci – PCI设备的信息
cat /proc/swaps – 所有Swap分区的信息
cat /proc/version – Linux的版本号 相当于 uname -r
uname -a – 看系统内核等信息

0023 去掉多余的回车符(bjchenxu)
sed ’s/^M//’ test.sh > back.sh, 注意^M是敲ctrl_v ctrl-m得到的
或者 dos2unix filename

0024 切换X桌面(lnx3000)
如果你是以图形登录方式登录linux,那么点击登录界面上的session(任务)即可以选择gnome和kde。如

果你是以文本方式登录,那执行switchdesk gnome或switchdesk

kde,然后再startx就可以进入gnome或kde。
(或者vi ~/.xinitrc,添加或修改成exec gnome-session 或exec startkde,
然后用startx启动X)

0025 通用的声卡驱动程序(lnx3000)
OSS www.opensound.com/ ALSA www.alsa-project.org/

0026 改变redhat的系统语言/字符集(beming/mc1011)
修改 /etc/sysconfig/i18n 文件,如
LANG="en_US",xwindow会显示英文界面,
LANG="zh_CN.GB18030",xwindow会显示中文界面。
还有一种方法
cp /etc/sysconfig/i18n $HOME/.i18n
修改 $HOME/.i18n 文件,如
LANG="en_US",xwindow会显示英文界面,
LANG="zh_CN.GB18030",xwindow会显示中文界面。
这样就可以改变个人的界面语言,而不影响别的用户
(Debian不支持GB18030(RH的zysong字库是有版权的)
现在好像没有Free的GBK和GB18030字库
vi .bashrc
export LANG=zh_CN.GB2312
export LC_ALL=zh_CN.GB2312)

0027 把屏幕设置为90列(bjchenxu)
stty cols 90

0028 使用md5sum文件(bjchenxu)
md5sum isofile > hashfile, 将 md5sum 档案与 hashfile 档案内容比对, 验证杂凑值
是否一致 md5sum –c hashfile

0029 一次解压多个zip文件(bjchenxu)
unzip "*",注意引号不能少

0030 看pdf文件(bjchenxu)
使用xpdf或者安装acrobat reader for linux

0031 查找权限位为S的文件(bjchenxu)
find . -type f \( -perm -04000 -o -perm -02000 \) -exec ls -lg {} \;

0032 装中文输入法(bjchenxu,hutuworm)
以redhat8为例,xwindow及其终端下的不用说了,缺省就安装了,用ctrl-space呼出。
现在讨论纯console,请到http://zhcon.sourceforge.net/下载zhcon-0.2.1.tar.gz,放在任一目录中,

tar xvfz zhcon-0.2.1.tar.gz,cd zhcon-0.2.1,./configure,make,make install。安装结束,要想

使用,请运行zhcon,想退出,运行exit。

0033 把弹出的光盘收回来(beike)
#eject -t

0034 cd光盘做成iso文件(弱智)
cp /dev/cdrom xxxx.iso

0035 快速观看开机的硬件检测(弱智)
dmesg | more

0036 查看硬盘的使用情况(bjchenxu)
df -k 以K为单位显示
df -h 以人性化单位显示,可以是b,k,m,g,t..

0037 查看目录的大小(bjchenxu)
du -sh dirname
-s 仅显示总计
-h 以K、M、G为单位,提高信息的可读性。KB、MB、GB是以1024为换算单 位, -H以1000为换算单位。

0038 查找或删除正在使用某文件的进程(wwwzc)
fuser filename
fuser -k filename

0039 安装软件(bjchenxu)
rpm -ivh aaa.rpm
tar xvfz aaa.tar.gz; cd aaa; ./configure; make; make install

0040 字符模式下设置/删除环境变量(bjchenxu)
bash下
设置:export 变量名=变量值
删除:unset 变量名
csh下
设置:setenv 变量名 变量值
删除:unsetenv 变量名

0041 ls如何看到隐藏文件(即以.开头的文件)(双眼皮的猪)
ls -a
l. (适用于redhat)

0042 rpm中的文件安装到哪里去了(bjchenxu)
rpm -qpl aaa.rpm

0043 使用src.rpm(bjchenxu)
rpmbuild –rebuild *.src.rpm

0044 vim中显示颜色或不显示颜色(bjchenxu,sakulagi)
首先确保安装了vim-enhanced包,然后,vi ~/.vimrc; 如果有syntax on,则显示颜色,syntax off,则

不显示颜色。
另外,关于vi的syntax color,还有一点是终端类型(环境变量TERM)的设置。比如通常要设置成xterm

或xterm-color才能使用syntax color。尤其是从Linux远程登陆到其他的Unix上。

0045 linux是实时还是分时操作系统(bjchenxu)
分时

0046 make bzImage -j的j是什么意思(wind521)
-j主要是用在当你的系统硬件资源比较大的时候,比较富裕的时候,用这个可以来加快编译的速度,如-j

3

0047 源码包怎么没有(bjchenxu)
你没有安装源代码,你把你光盘上rpm -i *kernel*source*.rpm装上,就可以看到你的源代码了。

0048 修改系统时间(bjchenxu,laixi781211,hutuworm)
date -s “2003-04-14 cst”,cst指时区,时间设定用date -s 18:10
修改后执行clock -w 写到CMOS
hwclock –systohc
set the hardware clock to the current system time

0049 开机就mount上windows下的分区(bjchenxu)
自动将windows的d盘挂到/mnt/d上,用vi打开/etc/fstab,加入以下一行
/dev/hda5 /mnt/d vfat defaults,codepage=936,iocharset=cp936 0 0
注意,先得手工建立一个/mnt/d目录

0050 linux怎么用这么多内存(bjchenxu)
为了提高系统性能和不浪费内存,linux把多的内存做了cache,以提高io速度

0051 FSTAB 最后的配置项里边最后两个数字是什么意思(lnx3000)
第一个叫fs_freq,用来决定哪一个文件系统需要执行dump操作,0就是不需要;
第二个叫fs_passno,是系统重启时fsck程序检测磁盘的顺序号
1 是root文件系统,2 是别的文件系统。fsck按序号检测磁盘,0表示该文件系统不被检测
dump 执行ext2的文件系统的备份操作
fsck 检测和修复文件系统

0052 linux中让用户的密码必须有一定的长度,并且符合复杂度(eapass)
vi /etc/login.defs,改PASS_MIN_LEN

0053 linux中的翻译软件(bjchenxu,hutuworm)
星际译王 xdict
console下还有个dict工具,通过DICT协议到dict.org上查11本字典,例如:dict RTFM

0054 不让显示器休眠(bjchenxu)
setterm -blank 0
setterm -blank n (n为等待时间)

0055 用dat查询昨天的日期(gadfly)
date –date=’yesterday’

0056 xwindow下如何截屏(bjchenxu)
Ksnapshot或者gimp

0057 解压小全(bjchenxu,noclouds)
tar -I或者bunzip2命令都可以解压.bz2文件
tar xvfj example.tar.bz2
tar xvfz example.tar.gz
tar xvfz example.tgz
tar xvf example.tar
unzip example.zip
tar -jvxf some.bz,就是把tar的zvxf 改成jvxf
zip/tar rh8下有一个图形界面的软件file-roller可以做这件事。另外可以用unzip *.zip解开zip文件,

unrar *.rar解开rar文件,不过unrar一般系统不自带,要到网上下载。
# rpm2cpio example.rpm │ cpio -div
# ar p example.deb data.tar.gz | tar zxf -
Alien提供了.tgz, .rpm, .slp和.deb等压缩格式之间的相互转换:
http://sourceforge.net/projects/alien
sEx提供了几乎所有可见的压缩格式的解压接口:
http://sourceforge.net/projects/sex

0057-2 tar压缩、解压用法(platinum)
解压:x
压缩:c
针对gz:z
针对bz2:j
用于显示:v

解压实例
gz文件:tar xzvf xxx.tar.gz
bz2文件:tar xjvf xxx.tar.bz2

压缩实例
gz文件:tar czvf xxx.tar.gz /path
bz2文件:tar cjvf xxx.tar.bz2 /path

0058 在多级目录中查找某个文件的方法(青海湖)
find /dir -name filename.ext
du -a | grep filename.ext
locate filename.ext

0059 不让普通用户自己改密码(myxfc)
[root@xin_fc etc]# chmod 511 /usr/bin/passwd
又想让普通用户自己改密码
[root@xin_fc etc]# chmod 4511 /usr/bin/passwd

0060 显卡实在配不上怎么办(win_bigboy)
http://www.redflag-linux.com/ ,下了xfree86 4.3安装就可以了.

0061 超强删除格式化工具(弱智)
比PQMagic安全的、建立删除格式化的小工具:sfdisk.exe for msdos
http://www.wushuang.net/soft/sfdisk.zip

0062 如何让xmms播放列表里显示正确的中文(myxfc)
-*-*-*-*-*-iso8859-1,-misc-simsun-medium-r-normal–12-*-*-*-*-*-gbk-0,*-r-
把这个东西完全拷贝到你的字体里面
操作方法:
右键单击xmms播放工具的任何地方
会看到一个"选项",然后选择"功能设定"选择"fonts"
然后把上面的字体完整的拷贝到"播放清单"和 "user x font

0063 redhat linux中播放mp3文件(hehhb)
原带的xmms不能播放MP3(无声),要安装一个RPM包:rpm -ivh

xmms-mp3-1.2.7-13.p.i386.rpm。打开xmms,ctl-p,在font栏中先在上半部的小框内打勾,再选择

“fixed(misc) gbk-0 13”号字体即可显示中文歌曲名。在音频输出插件中选择 "开放音频系统驱动程序

1.2.7 [lioOSS.so],即可正常播放MP3文件。

0064 安装中文字体(hehhb)
先下载 http://freshair.netchina.com.cn/~George/sm.sh
(参考文献: http://www.linuxeden.com/edu/doctext.php?docid=2679)
SimSun18030.ttc在微软网站可下载,http://www.microsoft.com/china/windows2000/downloads/18
030.asp 它是个msi文件,在 mswindows中安装用的,装好后在windows目录下的fonts
目录里面就可以找到它。把simsun.ttc,SimSun18030.ttc,tahoma.ttf,tahomabd.ttf
拷贝到/usr/local/temp,然后下载的shell文件也放到这个目录里,然后打开终端
cd /usr/local/temp
chmod 755 sm.sh
./sm.sh

0065 装载windows分区的FAT32、FAT16文件系统(hehhb)
以root身份进入KDE,点击桌面上的“起点”图标,在/mnt目录下建立如下文件夹:c,d,e,f,g,usb.分别

用作windows下各分区和usb闪盘。
用文本编辑器打开/etc/fstab 文件.加入如下:
/dev/hda1 /mnt/c vfat iocharset=gb2312,umask=0,codepage=936 0 0
/dev/hda5 /mnt/d vfat iocharset=gb2312,umask=0,codepage=936 0 0
/dev/hda6 /mnt/e vfat iocharset=gb2312,umask=0,codepage=936 0 0
/dev/hda7 /mnt/f vfat iocharset=gb2312,umask=0,codepage=936 0 0
/dev/hda8 /mnt/g vfat iocharset=gb2312,umask=0,codepage=936 0 0
/dev/cdrom /mnt/cdrom udf,iso9660 noauto,iocharset=gb2312,owner,kudzu,ro 0 0
/dev/sda1 /mnt/usb vfat iocharset=gb2312,umask=0,codepage=936 0 0
存盘退出. 重新启动后即可正常访问FAT32或FAT16格式分区,解决显示WINDOWS分区下和光盘中文文件名乱


问题.其中共六列,每列用Tab键分开。注意此方法只能mount上Fat 分区格式.sda1是闪盘。

0066 在X下使用五笔和拼音,区位输入法(hmkart)
http://www.fcitx.org/上下载fcitx的rpm包安装即可

0067 在Linux下如何解压rar文件(hmkart)
http://www.linuxeden.com/download/softdetail.php?softid=883
下载rar for Linux 3.2.0,解压开后make
然后可以用unrar e youfilename.rar解压rar文件

0068 硬盘安装后怎么添加/删除rpm包(sakulagi)
redhat-config-packages –isodir=
可以指定iso文件所在的目录

0069 字符下控制音量(grub007,天外闲云)
使用aumix。另外,要保存oss的音量大小,步骤为:
1、用aumix将音量调整为你们满意的音量
2、用root用户进入/usr/lib/oss下(oss的默认安装目录)
3、执行./savemixer ./mixer.map
4、ok,以后oss开启之后就是你在第一步调整的音量了。
ps:阅读该目录下的README可以得到更多的有用信息。

0070 用dd做iso(grub007)
dd if=/dev/cdrom of=/tmp/aaa.iso

0071 删除几天以前的所有东西(包括目录名和目录中的文件)(shally5)
find . -ctime +3 -exec rm -rf {} \;

find ./ -mtime +3 -print|xargs rm -f -r

0072 用户的crontab在哪里(hutuworm)
/var/spool/cron/下以用户名命名的文件

0073 以不同的用户身份运行程序(bjchenxu)
su – username -c "/path/to/command"
有时候需要运行特殊身份的程序, 就可以让su来做

0074 如何清空一个文件(bjchenxu)
> filename

0075 为什么OpenOffice下不能显示中文(allen1970)
更改字体设置
tools->options->font replacement
Andale Sans UI -> simsun

0076 如何备份Linux系统(Purge)
Symantec Ghost 7.5以后的版本支持Ext3 native复制

0077 linux上的partition magic(wwwzc)
Linux下一个有用的分区工具: parted
可以实时修改分区大小, 删除/建立分区.

0078 /proc/sys/sem中每项代表什么意思? (sakulagi)
/proc/sys/sem内容如下
250 32000 32 128
这4个参数依次为SEMMSL(每个用户拥有信号量最大数量),SEMMNS(系统信号量最大数量),SEMOPM(每次semo

p系统调用操作数),SEMMNI(系统信号量集最大数量)

0079 Grub 引导菜单里 bigmem smp up 都是什么意思?(lnx3000)
smp: (symmetric multiple processor)对称多处理器模式
bigmem: 支持1G 以上内存的优化内核
up:(Uni processor) 单处理器的模式

0080 Oracle的安装程序为什么显示乱码?(lnx3000)
现在Oracle的安装程序对中文的支持有问题,只能使用英文界面来安装,在执行runinstaller之前,执行

:export LANG=C;export LC_ALL=C

0081 linux下文件和目录的颜色代表什么(sakulagi,弱智)
蓝色表示目录;绿色表示可执行文件;红色表示压缩文件;浅蓝
色表示链接文件;灰色表示其它文件;红色闪烁表示链接的文件有问题了;黄色是设备文件,包括block,

char, fifo。
用dircolors -p看到缺省的颜色设置,包括各种颜色和“粗体”,下划线,闪烁等定义。

0082 查看有多少活动httpd的脚本(bjchenxu)
#!/bin/sh
while (true)
do
pstree |grep "*\[httpd\]$"|sed ’s/.*-\([0-9][0-9]*\)\*\[httpd\]$/\1/’
sleep 3
done

0083 如何新增一块硬盘(好好先生)
一、关机,物理连接硬盘
如果是IDE硬盘,注意主、从盘的设置;如果是SCSI硬盘,注意选择一个没有被使用的ID号。
二、开机,检查硬盘有没有被linux检测到
dmesg |grep hd*(ide硬盘)
dmesg |grep sd*(SCSI硬盘)
或者 less /var/log/dmesg
如果你没有检测到你的新硬盘,重启,检查连线,看看bios有没有认出它来。
三、分区
你可以使用fdisk,Sfdisk或者parted(GNU分区工具,linux下的partition magic)
四、格式化
mkfs
五、修改fstab
vi /etc/fstab

0084 linux下怎么看分区的卷标啊 (q1208c)
e2label /dev/hdxn, where x=a,b,c,d….; n=1,2,3…

0085 RH8,9中安装后如何添加新的语言包(好好先生)
一.8.0中
1.放入第一张光盘
2.cd /mnt/cdrom/Redhat/RPMS
3.rpm -ivh ttfonts-ZH_CN-2.11-29.noarch.rpm(简体中文,你可以用tab键来补齐后面的部分,以免输入

有误)
4.rpm -ivh ttfonts-ZH_TW-2.11-15.noarch.rpm(繁体中文)
如果你还想装日文、韩文,试试第二张光盘上的ttfonts*.rpm.
二.9.0中
9.0不在第一张盘上,在第三张盘上.rpm包名分别为:
ttfonts-zh_CN-2.12-1.noarch.rpm(简体中文)
ttfonts-zh_TW-2.11-19.noarch.rpm (繁体中文)


0086 终端下抓屏(tsgx)
cat /dev/vcsX >screenshot 其中,X表示第X个终端
还可以运行script screen.log,记录屏幕信息到screen.log里。一会记录到你exit为此。这也是抓屏的

好方法。
这是在debian的cookbook上看到的。在RH9上能用。没有在其它的系统上测试过。

0087 让一个程序在退出登陆后继续运行(NetDC,双眼皮的猪)
#nohup 程序名 &
或者使用disown命令也可以

0088 man命令不在路径中,如何查看非标准的man文件(bjchenxu)
nroff -man /usr/man/man1/cscope.1 | more

0089 以不同的用户身份运行程序(bjchenxu)
su – username -c "/path/to/file"
有时候需要运行特殊身份的程序…就可以让su来做…

0090 编辑/etc/inittab后直接生效(bjchenxu)
#init q

0091 让linux连续执行几个命令,出错停止(bjchenxu)
command1 && command2 && command3

0092 如何将grub安装到mbr(bjchenxu, NetDC)
grub> root (hd0, 0)
grub> setup (hd0)
也可以用#grub-install /dev/hda来安装grub。

0093 安装时把grub(lilo)写到linux分区的引导区还是主引导扇区(MBR)(bjchenxu)
如果你想电脑一启动就直接进入操作系统启动菜单就把grub(lilo)写到MBR上,如果写到linux分区的引导

区则要用引导盘引导。建议写到 MBR,方便点,至于说写到MBR不安全,该怎么解释呢?每装一次win98,

MBR都会被修改一次,大家觉得有什么不安全的吗?

0094 如何让多系统共存(bjchenxu)
98系统的话用lilo(grub)引导,2k/nt则使用osloader引导多系统

0095 如何在图形界面和控制台(字符界面)之间来回切换(bjchenxu)
a.图形界面到控制台:Ctr+Alt+Fn(n=1,2,3,4,5,6)。
b.各控制台之间切换:Alt+Fn(n=1,2,3,4,5,6)。
c.控制台到图形:Alt+F7

0096 Redhat linux常用的命令(bjchenxu)
<1>ls:列目录。
用法:ls或ls dirName,参数:-a显示所有文件,-l详细列出文件。
<2>mkdir:建目录。
用法:mkdir dirName,参数:-p建多级目录,如:mkdir a/b/c/d/e/f -p
<3>mount:挂载分区或镜像文件(.iso,.img)文件。
用法:
a.磁盘分区:mount deviceName mountPoint -o

options,其中deviceName是磁盘分区的设备名,比如/dev/hda1,/dev/cdrom,/dev/fd0,mountPoint 是

挂载点,它是一个目录,options是参数,如果分区是linux分区,一般不用-o options,如果是windows

分区那options可以是iocharset=cp936,这样windows分区里的中文文件名就能显示出来了。用例:比如/

dev/hda5是linux分区,我要把它挂到目录a上(如没目录a那就先mkdir a),mount /dev/hda5 a,这样

目录a里的东西就是分区hda5里的东西了,比如hda1是windows分区,要把它挂到b上,mount /dev/hda1 b

-o iocharset=cp936。
b.镜像文件:mount fileName mountPoint -o loop,fileName是镜像文件名(*.iso,*.img),其它的不用

说了,跟上面一样。用例:如我有一个a.iso光盘镜像文件,mount a.iso a -o loop,这样进入目录a你

就能浏览a.iso的内容了,*.img文件的用法一样。
<4>find:查找文件。
用法:find inDir -name filename,inDir是你要在哪个目录找,filename是你要找的文件名(可以用通

配符),用通配符时filename最好用单引号引起来,否则有时会出错,用例:find . -name test*,在当

前目录查找以test开头的文件。
<5>grep:在文件里查找指定的字符串。
用法:grep string filename,在filename(可用通配符)里查找string(最好用双引号引起来)。参数:-r

在所有子目录里的filename里找。用例:grep hello *.c -r在当前目录下(包括子目录)的所有.c文件

里查找hello。
<5>vi:编辑器。
用法:vi filename。filename就是你要编辑的文本文件。用了执行vi filename后,你可能会发现你无法

编辑文本内容,不要着急,这是因为vi还没进入编辑状态,按a或i就可以进入编辑状态了,进入编辑状态

后你就可以编辑文本了。要退出编辑状态按Esc键就可以了。以下操作均要在非编辑状态下。查找文本:

输入/和你要查找的文本并回车。退出:输入: 和q并回车,如果你修改了文本,那么你要用:q!回车才能

退出。保存:输入: w回车,如果是只读文件要用: w!。保存退出:输入: wq回车,如果是只读就: wq!回

车。取消:按u就可以了,按一次就取消一步,可按多次取消多步。复制粘贴一行文本:把光标移到要复

制的行上的任何地方,按yy(就是连按两次 y),把光标移到要粘贴地方的上一行,按p,刚才那行文本

就会被插入到光标所在行的下一行,原来光标所在行后面所有行会自动下移一行。复制粘贴多行文本:跟

复制一行差不多,只是yy改成先输入要复制的行数紧接着按yy,后面的操作一样。把光标移到指定行:输

入:和行号并回车,比如移到123行:123回车,移到结尾:$回车。

0097 linux文本界面下如何关闭pc喇叭(labrun)
将/etc/inputrc中的set bell-style none 前的#去掉,或echo "set bell-style none" >> ~/.bashrc

0098 重装windows导致linux不能引导的解决办法(好好先生)
如果没有重新分区,拿linux启动盘(或者第一张安装光盘)引导,进入rescue模式。首先找到原来的/分区

mount在什么地方。 redhat通常是/mnt/sysimage. 执行"chroot /mnt/sysimage".

如果是grub,输入grub-install /dev/hd*(根据实际情况);如果是lilo,输入lilo -v,然后重新启动。

如果分区有所改变,对应修改/etc/lilo.conf和/boot/grub/grub.conf然后再执行上述命令。

0099 为什么装了LINUX后win2K很慢(lnx3000,好好先生)
老问题了,你在2000是不是能看见Linux的逻辑盘,但不能访问?
在磁盘管理里,选中这个盘,右击->更改"驱动器名和路径"->"删除"就可以了,注意不是删除这个盘!

0100 将linux发布版的iso文件刻录到光盘的方法(bjchenxu)
借用windows中的nero软件,选择映象文件刻录,选择iso文件,刻录即可! 1101 linux中刻录iso的方法

(hutuworm)
方法一:使用xcdroast,选择制作光碟,选择ISO文件,刻录!
参见http://www.xcdroast.org/xcdr098/faq-a15.html#17
方法二:找刻录机的命令:
cdrecord –scanbus
输出结果为:
0,0,0 0) ‘ATAPI ‘ ‘CD-R/RW 8X4X32 ‘ ‘5.EZ’ Removable CD-ROM
刻录的命令:
cdrecord -v speed=8 dev=0,0,0 hutuworm.iso
方法三:使用k3b可以刻录CD/DVD
k3b主页:http://www.k3b.org/
(实际上k3b是个图形界面,刻录CD利用了cdrecord,刻录DVD利用了dvd+rw-tools

http://fy.chalmers.se/~appro/linux/DVD+RW/ )

1102 屏幕变花时怎么办(双眼皮的猪)
当您一不小心cat了一个并不是文本的文件的时候,这时屏幕会变花,那么您可以按两下"Enter"键,再敲

"reset",那么屏幕就恢复正常了….

1103 卸载软件包时如何得知具体包名(diablocom)
大家知道删除软件包的命令是rpm -e XXX,但是当我们不知道这个XXX的确切拼写时,可以用rpm -q -a查

询所有安装的软件包或者用rpm -qa |grep xxxx查询出名字

1104 使用内存作linux下的/tmp文件夹(yulc)
在/etc/fstab中加入一行:
none /tmp tmpfs default 0 0
或者在/etc/rc.local中加入
mount tmpfs /tmp -t tmpfs -o size=128m
注:size=128m 表示/tmp最大能用128m
不管哪种方式,只要linux重启,/tmp下的文件全部消失

1105 用ls只列出目录(yulc)
ls -lF | grep ^d
ls -lF | grep /$
ls -F | grep /$

1106 在命令行下列出本机IP地址,而不是得到网卡信息(yulc)
ifconfig |grep "inet" |cut -c 0-36|sed -e ’s/[a-zA-Z: ]//g’
hostname -i

1107 修改/etc/profile或者$HOME/.profile文件后如何立即生效(peter333)
#source /etc/profile (或者source .profile)

1108 bg和fg的使用(bjchenxu)
输入ctrl+z,当前一个任务会被挂起并暂停, 同时屏幕上返回进程号,此时用 "bg %进程号",会把这个

进程放到后台执行,而用" fg %进程号 "就能让这个进程放到前台来执行。另外,job命令用来查看当前

的被bg的进程

1109 ctrl+s与ctrl+q(bjchenxu)
ctrl-s用来暂停向终端发送数据的,屏幕就象死了一样,可以用ctrl-q来恢复

1110 目录统计脚本(bjchenxu)
保存成total.sh,然后用total.sh 绝对路径,就能统计路径下目录的大小了
代码:
#!/bin/sh
du $1 –max-depth=1 | sort -n|awk ‘{printf "%7.2fM —-> %s\n",$1/1024,$2}’|sed

’s:/.*/\([^/]\{1,\}\)$:\1:g’

1111 grep不显示本身进程(bjchenxu)
#ps -aux|grep httpd|grep -v grep
grep -v grep可以取消显示你所执行的grep本身这个进程,-v参数是不显示所列出的进程名

1112 删除目录中含输入关键字的文件(WongMokin)
find /mnt/ebook/ -type f -exec grep "在此输入关键字" {} \; -print -exec rm {} \;

1113 让cron中的任务不回馈信息, 本例5分钟检查一次邮件(WongMokin)
0-59/5 * * * * /usr/local/bin/fetchmail > /dev/null 2>&1

1114 在当前目录下解压rpm文件(bjchenxu)
cat kernel-ntfs-2.4.20-8.i686.rpm | rpm2cpio | pax -r

1115 合并两个Postscript或PDF文件(noclouds)
$ gs -q -dNOPAUSE -dBATCH -sDEVICE=pswrite \
-sOutputFile=bar.ps -f foo1.ps foo2.ps
$ gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite \
-sOutputFile=bar.pdf -f foo1.pdf foo2.pdf

1116 去掉apache的manual目录中的所有.en的后缀名(bjchenxu)
进入到manual目录
代码:find ./ -regex .*\.en|awk -F. ‘{ printf "mv %s.%s.%s.%s

%s.%s.%s\n",$1,$2,$3,$4,$1,$2,$3}’|sh

1117 如何起多个X(noclouds)
startx默认以display :0.0起第一个X,通过传递参数给Xserver可以起多个X:
# startx — :1.0
# startx — :2.0

然后用Ctrl-Alt-F7/F8…切换。

1118 让一个程序在退出登陆后继续运行(noclouds,bjchenxu)
#
# disown
或者是
nohup command &

1119 看Linux启动时屏幕的显示信息(bjchenxu)
在启动完后用命令dmesg查看

1120 让vi不响铃(sakulagi)
echo "set vb t_vb=" >> ~/.vimrc

1121 让fedora开机后自动login(dzho002)
1) rpm -ihv autologin-1.0.0-7mdk.i586 rpm
2) 建立文件 /etc/sysconfig/autologin
在里面加上一行.
USER = root

1122 如何配置让哪些服务启动(天外闲云,q1208c)
方法1 运行ntsysv或者setup命令,进入菜单进行配置
方法2 chkconfig –list 显示服务
chkconfig name on/off 打开/关闭“name”服务

1123 安全删除linux(天外闲云)
步骤1 Dos下使用fdisk /mbr或者用win2000/xp的光盘启动进入故障恢复控制台,使用命令fixmbr
步骤2 格式化linux分区为windows分区即可。

1124 用grub引导进文本界面(天外闲云)
进入grub之后,按a,输入 空格 3 就可以引导进入文本界面,但是不修改系统的运行级,只在当次有效

1125 先测试patch是否运行正常,暂不将更改应用到kernel(jiadingjun)
patch –dry-run

1126 redhat和debian上的文件安装删除用法(NetDC)
删除一个软件包:
rpm -e
dpkg -r
显示一个软件包的内容:
rpm -qvl
dpkg -c
显示所有已经安装的软件包:
rpm -qvia
dpkg -l
打印一个包的信息:
rpm -qpi
dpkg -I
检验包characteristics:
rpm -Va
debsums -a
检验一个文件属于哪个包:
rpm -qf
dpkg -S
安装新软件包:
rpm -Uvh
dpkg -i

1127 如何使新用户首次登陆后强制修改密码(猫小)
#useradd -p ” testuser; chage -d 0 testuser

1128 日志维护工具logrotate(hotbox)
在/etc/logrotate.conf中配置,作用:定义log文件达到预定的大小或时间时,自动压缩log文件

1129 Linux中默认的管理员叫什么(bjchenxu)
root

1130 如何产生一个长度固定(例如文件长度为1M)字节的空文件,即每个字节的值全为0×00(sakulagi)
dd if=/dev/zero of=/tmp/zero_file bs=1024 count=1024

1131 RedHat Linux里修改时间的步骤(hutuworm)
1. 设置你的时区: timeconfig里选择Asia/Shanghai (如果你位于GMT+8中国区域)
2. 与标准时间服务器校准: ntpdate time.nist.gov
2.5 当然,如果你是李嘉诚,也可以跟自己的手表校准: date -s STRING (STRING格式见man date)
3. 写回硬件时钟: hwclock –systohc

1132 查找当前目录下文件并更改扩展名(零二年的夏天)
更改所有.ss文件为.aa
# find ./ -name "*.ss" -exec rename .ss .aa ‘{}’ \;

1133 patch的使用(天才※樱木)
语法是patch [options] [originalfile] [patchfile]
例如:
patch -p[num] -p参数决定了是否使用读出的源文件名的前缀目录信息,不提供-p参数,则忽略所有目录

信息,-p0(或者-p

0)表示使用全部的路径信息,-p1将忽略第一个"/"以前的目录,依此类推。如/usr/src/linux-2.4.16/M

akefile这样的文件名,在提供-p3参数时将使用linux-2.4.16/Makefile作为所要patch的文件。
对于刚才举的Linux内核源码2.4.16升级包的例子,假定源码目录位于/usr/src/linux中,则在当前目录

为/usr/src 时使用"patch -p0
1134 将file.txt里的123改为456(hutuworm)
方法1
sed ’s/123/456/g’ file.txt > file.txt.new
mv -f file.txt.new file.txt
方法2
vi file.txt
输入命令:
:%s/123/456/g
icon_mad.gif

1135 将一个分区格式化为ext3日志文件系统(hutuworm)
mkfs -j /dev/xxxx

1136 开启硬盘ATA66 (laixi781211)
/sbin/hdparm -d1 -X68 -c3 -m16 /dev/hda

1137 查看当前运行级别(双眼皮的猪)
runlevel

1138 查看当前登陆身份(双眼皮的猪)
(1)who am i
(2)whoami
(3)id
注意(1)跟(2)的小区别

1139 删除rpm -e删除不了的包(wwwzc)
1、如果在删除包之前删除了包的目录
rpm -e –noscripts
2、如果系统里一个包被装两次(由于某些异常引起的)
rpm -e multi-installed-pkgs –allmatches

1140 如何定制用户登录时显示的信息(jiadingjun)
在/etc目录下放一个名字叫motd的文本文件实现的,例如,建立自己的/etc/motd:
$cat /etc/motd
welcome to my server !
那么,当用户登录系统的时候会出现这样的信息:
Last login: Thu Mar 23 15:45:43 from *.*.*.*
welcome to my server !

1141 用命令清空Root回收站中的文件(dtedu)
cd /var/.Trash-root
rm -rf *

1142 在Red Hat上加Simsun.ttc字体(bjchenxu)
以Red Hat

7.3为例,安装时选取简体中文安装,先复制一个simsun.ttc到/usr/X11R6/lib/X11/font/TrueType,改

名为 simsun.ttf;然后进入/usr/X11R6/lib/X11/font/TrueType目录下,运行ttmkfdir > fonts.dir命

令;接着用vi编辑fonts.dir文件,把有simsun.ttf行修改如下:
simsun.ttf -misc-SimSun-medium-r-normal–0-0-0-0-c-0-ascii-0
simsun.ttf -misc-SimSun-medium-r-normal–0-0-0-0-c-0-iso10646-1
simsun.ttf -misc-SimSun-medium-r-normal–0-0-0-0-p-0-iso8859-15
simsun.ttf -misc-SimSun-medium-r-normal–0-0-0-0-p-0-iso8859-1
simsun.ttf -misc-SimSun-medium-r-normal–0-0-0-0-c-0-gb2312.1980-0
simsun.ttf -misc-SimSun-medium-r-normal–0-0-0-0-p-0-gb2312.1980-0
simsun.ttf -misc-SimSun-medium-r-normal–0-0-0-0-m-0-gb2312.1980-0
simsun.ttf -misc-SimSun-medium-r-normal–0-0-0-0-p-0-gbk-0
接着运行cat fonts.dir > fonts.scale命令,修改/etc/X11/XF86config-4, 在Section“Files”加上下

面这一行:
FontPath “/usr/X11R6/lib/X11/fonts/TrueType”
最后回到KDE桌面里, 在“开始”→“选项”→“观感”→“字体”,将所有字体改为Simsun。

1143 Unicon和Zhcon的区别和作用(bjchenxu)
Unicon是内核态的中文平台,基于修改Linux FrameBuffer和Virtual Console(fbcon)实现的。由于是

在系统底层实现的,所以兼容性极好,可以直接支持gpm鼠标。但是相对比较危险,稍有漏洞就可能会危

及系统安全。Zhcon是用户态的中文平台,有点像UCDOS。

1144 如何卸载tar格式安装的软件(bjchenxu)
进入安装该软件的原代码目录,运行make uninstall。如果不行,也可以查看一下Makefile文件,主要是

看install部分,从其中找出tar格式的文件被复制到了什么路径,然后进入相应的目录进行删除即可。

1145 定制linux提示符 (bjchenxu)
在bash中提示符是通过一个环境变量$PS1指定的。用export $PS1查看现在的值,比较直观常用的提示符

可以设定为export PS1=“[\u@\h \W]\$”。其中\u代表用户名,\h代表主机名,\W代表当前工作目录的

最后一层,如果是普通用户\$则显示$,root用户显示#。

1146 在vi中搜索了一个单词,该单词以高亮显示,看起来很不舒服,怎么能将它去掉(bjchenxu)
在vi的命令模式下输入:nohlsearch就可以了。另外可以在~/.vimrc中写上下面的语句就会有高亮显示:
set hlsearch
加上下面的语句就不会有高亮显示:
set nohlsearch

1147 如何找出系统中所有的*.cpp、*.h文件(bjchenxu)
用find命令就可以了。不过如果从根目录查找消耗资源较高,使用下面的命令就可以:
find / -name "*.cpp" -o -name "*.h"

1148 如安装Debian需要几张盘就够了?7张盘全部都要下载吗?(bjchenxu)
如果经常有网络环境的话,下载第一张就可以了。要是没有网络环境的话不推荐使用Debian,因为Debian

主要依赖网络来更新软件。实在要安装的话,要下载全部7张盘,否则可能会出现需要的软件包找不到的

问题。

1149

Debian第一张光盘为什么有两个版本?debian-30r1-i386-binary-1.iso和debian-30r1-i386-binary-1_N

ONUS.iso该下载哪一个呢?它们有什么区别?(bjchenxu)
因为含有“non-US”(不属美国)的软件不能合法地存放在架设于美国境内的服务器中。以前,其原因通

常是因为软件含有严密的密码编码,而今天,则是因为程序使用了美国专利保护的演算法。每个人应该取

用“non-US”来供私人用途所用;而没有这个标识的iso则只对架设在美国的镜像及供应商才有用处。其

它二进制的光盘则不会含有任何“US-sensitive”(与美国相关的)软件,它们和其它种binary-1光盘一

样运作得很好。因此,个人使用还是下载debian-30r1-i386-binary-1_NONUS.iso版本。

1150 为何我使用umount /mnt/cdrom命令的时候出现device is busy这样的语句,不能umount(bjchenxu)
在使用umount的时候一定要确保已退出/mnt/cdrom这个目录,退出这个目录就可以使用umount

/mnt/cdrom了。

1151 我使用的是笔记本电脑,怎么才能在控制台下显示现在还剩多少电量呢? (bjchenxu)
使用apm -m就可以看到还有多少分钟了,具体参数可以用man apm查看。

1152 为什么我进入Linux的终端窗口时,man一条命令出来的都是乱码呢? (bjchenxu)
这是因为你的字符集设置有问题。临时解决办法可以使用export LANG=“en_US”。要想不必每次都修改

的话,在/etc/sysconfig/i18n文件里面修改LANG=“en_US”就可以了。也可以针对某个用户来做,这样

就可以改变个人的界面语言,而不影响别的用户。命令如下:# cp /etc/sysconfig/i18n $HOME/.i18n。

1153 编译内核的时候出错,提示“Too many open files”,请问怎么处理 (bjchenxu)
这是因为file-max默认值(8096)太小。要解决这个问题,可以root身份执行下列命令(或将它们加入/e

tc/rcS.d/*下的init脚本):
# echo "65536" > /proc/sys/
最后进入解压后的目录,运行安装命令。
# cd vmware-linux-tools
# ./install.pl

1154 本来装有Linux与Windows XP,一次将Windows XP重装后,发现找不到Linux与Windows XP的启动选

单,请问如何解决(bjchenxu)
首先光盘启动,进入rescue模式,运行GRUB,进入grub提示符grub>,然后敲入下面的语句,重启就好了


root (hd0,2),setup (hd0)

1155 安装了一台Linux服务器,想自己编译内核,一步一步做下来,GRUB也添加进去了,但出现“kernel

Panic:VFS:Unable to mount root fs on 0:00”的错误,请问是怎么回事?(bjchenxu)
一般情况下initrd这个文件在台式机上不是必须的,但是在有SCSI设备的服务器上却是必须的。有可能因

为编译内核的时候没有产生 initrd那个文件,所以会有上面的错误提示。用户可以使用mkinitrd命令来

生成一个initrd.img文件,然后加入GRUB,重启试一试。

1156 如何设置用户登录后的欢迎信息?(bjchenxu)
修改/etc/motd文件,往里面写入文本,就能使用户通过Telnet正确登录后,执行Shell之前得到相应的提

示信息。
motd就是“messages of the day”,也就是当日信息的意思。管理员可以往里面写一些需要注意的事项

或通知等来提醒正式用户。

1157 我下载了rcs5.7,用./configure && make && make install时报错如下:./conf.sh: testing

permissions … ./conf.sh: This command should not be run with superuser permissions. 我是以

root用户身份登录编译安装的,为什么会这样?(bjchenxu)
有些软件确实因为考虑到安全等其它原因不能用root用户编译。这时只要用其它用户编译,到make

install这步时,如果该软件安装在不属于编译时的用户的主目录下时,需要使用su命令转换为root用户

再执行make install。

1158 我在安装USBView时失败,具体情况如下: #rpm -ivh usbview-1.0-9.src.rpm

warning:usbview-1.0-9.src.rpm:V3 DSAsignature:NOKEY,key IDab42a60e (bjchenxu)
这行代码说明安装失败是因为你的系统上没有安装合适的钥匙来校验签名。要使该软件包通过校验,可以

通过导入Red Hat的公匙来解决,具体的方式是在Shell下运行如下命令:
#rpm -import /usr/share/rhn/RPM-GPG-KEY
(注意大小写)

1159 如何防止某个关键文件被修改?(bjchenxu)
在Linux下,有些配置文件是不允许任何人(包括root)修改的。为了防止被误删除或修改,可以设定该

文件的“不可修改位(immutable) ”。命令如下:
# chattr +i /etc/fstab
如果需要修改文件则采用下面的命令:
# chattr -i /etc/fstab

1160 怎样限制一个用户可以启动的进程数?(bjchenxu)
先确定一下/etc/pam.d/login文件中下面一行的存在:
session required /lib/security/pam_limits.so
然后编辑/etc/security/limits.conf,在里面可以设置限制用户的进程数、CPU占用率和内存使用率等,

如hard nproc 20就是指限制20个进程,具体可以看man。

1161 如何限制Shell命令记录大小 ?(bjchenxu)
默认情况下,bash会在文件$HOME/.bash_history中存放多达500条命令记录。有时根据具体的系统不同,

默认记录条数不同。系统中每个用户的主目录下都有一个这样的文件。为了系统的安全,在此强烈建议用

户限制该文件的大小。用户可以编辑/etc/profile文件,修改其中的选项如下:
HISTFILESIZE=30 或 HISTSIZE=30
这样就将记录的命令条数减少到30条。

1162 我想将开机时显示的信息保留下来,以检查电脑出了问题的地方,请问怎么办?(bjchenxu)
可输入下面的命令:
#dmesg >bootmessage
该命令将把开机时显示的信息重定向输出到一个文件bootmessage中。

1163 我想在注销时删除命令记录,请问怎么做?(bjchenxu)
编辑/etc/skel/.bash_logout文件,增加如下行:
rm -f $HOME/.bash_history
这样,系统中的所有用户在注销时都会删除其命令记录。
如果只需要针对某个特定用户,如root用户进行设置,则可只在该用户的主目录下修改/$HOME/.bash_his

tory文件,增加相同的一行即可。

1164 编译内核,支持ntfs的步骤(platinum,bjchenxu)
1. # cd /usr/src/linux-2.4
2. # make menuconfig
3. 选中File System下的NTFS file system support (read only)为M
4. # uname -a
2.4.21-27.0.2.EL
5. # vi Makefile
确保前几行为
VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 21
EXTRAVERSION = -27.0.2.EL
6. # make dep
7. # make modules SUBDIRS=fs/ntfs
8. # mkdir /lib/moduels/2.4.21-27.0.2.EL/kernel/fs/ntfs
9. # cp -f fs/ntfs/*.o /lib/moduels/2.4.21-27.0.2.EL/kernel/fs/ntfs/
10. # depmod -a
11. # modprobe ntfs
12. # lsmod
确保有ntfs在里面

1165 如何使用ssh通道技术(bjchenxu)
本文讨论所有机器均为Linux操作系统。
比如说我的机器是A,中间服务器为B,目标服务器是C。
从A可以ssh到B,从B可以ssh到C,但是A不能直接ssh到C。
现在展示利用ssh通道技术从A直接传输文件到C。
1. ssh -L1234:C:22 root@B
input B’s password
2. scp -P1234 filename root@localhost:
input C’s password

1166 使用rpm命令时没有任何响应,如何解决 (初学摄影)
rm -rf /var/lib/rpm/__db.*

1167 向登陆到同一台服务器上的所有用户发一条信息(bjchenxu)
1)输入wall并回车
2)输入要发送的消息
3)结束时按“Control-d”键,消息即在用户的控制窗口中显示

1168 输入短消息到单个用户(bjchenxu)
1)输入write username,当用户名出现在多个终端时,在用户名后可加tty,以表示在哪个tty下的用户。
2)输入要发送的消息。
3)结束时按“Control-d”键,消息即在用户的控制窗口中显示。
4)对于接收消息方,可以设定是否允许别人送消息给你。
指令格式为:mesg n[y]
%write liuxhello! Everybody, I’llcome.
%
用户控制窗口中显示的消息:Message from liux on ttyp1 at 10:00…hello! Everybody,

I’llcome.EOF
当使用CDE或OpenWindows等窗口系统时,每个窗口被看成是一次单独的登录;如果用户登录次数超过一次

则消息直接发送到控制窗口。

1169 发送文件中的消息到单个用户(bjchenxu)
如果有一个较长的消息要发送给几个用户,用文件方式:
1)创建要发送的消息文本的文件filename.
2)输入write username<filename回车,用cat命令创建包含短消息的文件:
% cat>messagehello! Everybody, I’llcome.
% write liux<messagewrite:liux logged in more than once…write to console
% 用户在一个以上窗口登录,消息显示在控制窗口中Message from liux on ttyp1 at 10:00…hello!

Everybody, I’llcome.EOF

1170 向远程机器上的所有用户发送消息(bjchenxu)
使用rwall(向所有人远程写)命令同时发送消息到网络中的所有用户。
rwall hostname file
当使用CDE或OpenWindows等窗口系统时,每个窗口被看成是一次单个的登录;
如果用户登录次数超过一次则消息直接发送到控制窗口。

1171 向网络中的所有用户发送消息(bjchenxu)
发送消息到网络中的所有用户
1)输入rwall -n netgroup并回车
2)输入要发送的消息
3)结束时按“Control-d”键,消息即在系统每个用户的控制窗口中显示,下面是系统管理员发消息到网

络组Eng每个用户的例子:
% rwall -n EngSystem will be rebooted at 11:00.(Control-d)
%
用户控制窗口中的消息:Broadcast message from root on console…System will be rebooted at

11:00.EOF
注意:也可以通过rwall hostname(主机名)命令到系统的所有用户。

—————————-网络相关篇————————–
2001 让apache的默认字符集变为中文(bjchenxu)
vi httpd.conf,找到 AddDefaultCharset ISO-8859-1 一行
apache版本如果是1.*,改为 AddDefaultCharset GB2312
如果是2.0.1-2.0.52,改为 AddDefaultCharset off
然后运行/etc/init.d/httpd restart重启apache即可生效。
注意:对于2.0.53以上版本,不需要修改任何配置,即可支持中文。

2002 永久更改ip(bjchenxu)
ifconfig eth0 新ip
然后编辑/etc/sysconfig/network-scripts/ifcfg-eth0,修改ip

2003 从Linux上远程显示Windows桌面(lnx3000)
安装rdesktop包

2004 手动添加默认网关(bjchenxu)
以root用户,执行: route add default gw 网关的IP
想更改网关
1 vi /etc/sysconfig/network-scripts/ifcfg-eth0
更改GATEWAY
2 /etc/init.d/network restart

2005 redhat 8.0上msn和qq(bjchenxu)
下载Gaim 0.58版:
gaim-0.58-2.i386.rpm
下载QQ插件 for gcc2.9版:
libqq-0.0.3-ft-0.58-gcc296.so.gz
将下载的文件放入/temp目录,然后将系统中已有的Gaim删除,即在终端仿真器中键入命令:rpm -e gaim


开始安装
打开终端仿真器,继续执行下列命令安装Gaim 0.58版,即:
cd /temp         (进入temp目录)
rpm -ivh gaim-0.58-2.i386.rpm (安装软件)
当安装成功后,你就可以在GNOME或KDE桌面建立Gaim图标了。
继续安装QQ插件,即键入命令:
gunzip libqq-0.0.3-ft-0.58-gcc296.so.gz (解压缩文件)
cp libqq-0.0.3-ft-0.58-gcc296.so /usr/lib/gaim (复制插件到gaim库目录中)
软件设置
首次启动Gaim

0.85版时,会出现的登录界面。先选择“插件”,在插件对话框中点击“加载”,分别将libmsn.so和lib

qq-0.0.3-ft-0.58- gcc296.so文件装入,确认后关闭。然后再选择“所有帐号”,在出现的帐号编辑器

中继续点击“增加”,当出现的修改帐号页面时,我们就可以输入自己的QQ或MSN号了,登录名填写QQ号

码或MSN邮箱,密码填写对应的QQ或MSN密码,Alias填写自己的昵称,协议选择相应的QQ或MSN,其他的设

置按默认的即可。当全部设置完成后就可以登录使用了。
由于MS对msn的协议经常升级,导致linux上的gaim和msn插件必须升级,目前尚无万无一失的解决方案,

请见谅

2006 查出22端口现在运行什么程序(bjchenxu)
lsof -i :22

2007 查看本机的IP,gateway, dns(bjchenxu)
IP:
以root用户登录,执行ifconfig。其中eth0是第一块网卡,lo是默认的设备
Gateway:
以root用户登录,执行netstat -rn,以0.0.0.0开头的一行的Gateway即为默认网关
也可以查看/etc/sysconfig/network文件,里面有指定的地址!
DNS:
more /etc/resolv.conf,内容指定如下:
nameserver 202.96.69.38
nameserver 202.96.64.38

2008 RH8.0命令行下改变ping 的TTL值(cgweb,lnx)
方法1(重启后有效):
#sysctl -w net.ipv4.ip_default_ttl=N
(N=0~255),若N>255,则ttl=0
方法2(重启后无效):
#echo N(N为0~255) > /proc/sys/net/ipv4/ip_default_ttl

2009 开启LINUX的IP转发(houaq)
编辑/etc/sysctl.conf, 例如,将
net.ipv4.ip_forward = 0
变为
net.ipv4.ip_forward = 1
重启后生效,用sysctl -a查看可知

2010 mount局域网上其他windows机器共享出的目录(bjchenxu)
mount -t smbfs -o username=guest,password=guest //machine/path /mnt/cdrom

2011 允许|禁止root通过SSH登陆(Fun-FreeBSD)
修改sshd_config:PermitRootLogin no|yes

2012 让root直接telnet登陆(bjchenxu,platinum)
方法1:
编辑/etc/pam.d/login,去掉
auth required /lib/security/pam_securetty.so 这句话
方法2:
vi /etc/securetty
添加
pts/0
pts/1

2013 在linux接adsl设备(wind521)
需要一个运转正常的Linux + 至少一块网卡 + 宽带设备已经申请完毕,同时已经开通。目前市场上大概

有几种ADSL设备,他们工作的方式有一些细微的差别。
就是通过虚拟拨号来完成上网的这一过程,也就是利用pppoe设备来进行虚拟拨号的叫作全向猫,就是一

种加电后自动的进行拨号的工作,然后留给我们的接口是RJ45,大连地区一般留给我们的网关都是10.0.0

.2,这种设备最容易对付,最后是直接分配给用户一个固定的IP,相对大家来说也比较容易对付
1.第一种需要进行拨号:
这几种设备都是通过eth接口与计算机进行通讯的,所以先将硬件设备的连接作好,尤其是宽带猫的,一

定要确认无误(否则一会儿要不去可不算我的事情)
然后启动系统,确认系统上是否安装rp-pppoe这个软件(通过rpm -qa|grep pppoe来查找),如没有安装

的用户,在光盘里或是到网上去down一个来,安装上后,以root用户执行adsl-setup,这样就进入了adsl

的资料的设定状态,要求输入申请宽带的用户名以及其他一些信息,确认没有问题,接受直至最后(里面

都是E文,但是一看即能懂,比较简单,有关一个防火墙的设置,我一般都不用,选0,大家可以具体考虑

)。
配置完成后,以root用户执行adsl-start,这样将进行adsl的拨号工作,正常就会一下上线,如有什么具

体问题,去看一下日志(/var/log/messages)里面告诉你什么了。
停掉adsl,执行adsl-stop就可以了(很简单的)
2.另外两种比较容易对付:
全向猫:只要将你的网卡的IP设置成一个10网段的IP,然后网关指到全向猫的IP,上(10.0.0.2),基本

上不有太大的问题
 固定IP:就像配置本地儿的网卡一样,将IP,网关,DNS都按申请来的填写上就可以搞定了

2014 让linux自动同步时间(shunz)
vi /etc/crontab
加上一句:
00 0 1 * * root rdate -s time.nist.gov

2015 linux的网上资源有哪些(bjchenxu)
国外
http://lwn.net/
http://www.tldp.org/
http://www.yolinux.com/(flying-dance big big pig)
http://www.justlinux.com/
http://www.linuxtoday.com/
http://www.linuxquestions.org/
http://www.fokus.gmd.de/linux/
http://www.linux-tutorial.info/
http://public.www.planetmirror.com/
http://www.freebsdforums.org/forums/
http://www.netfilter.org/documentation/
http://www-106.ibm.com/developerworks/linux/

国内
http://www.linuxmine.com/
http://www.fanqiang.com/
http://www.linuxsir.com/
http://www.chinaunix.net/
http://www.linuxfans.org/(deadcat)
http://www.linuxeden.com/
http://www.linuxforum.net/
http://www.linuxaid.com.cn/
http://freesoft.online.sh.cn/
http://www-900.ibm.com/developerWorks/cn/linux/index.shtml
http://www.neweasier.com/software.html
http://www.blueidea.com/bbs/archivecontent.asp?id=635906(sqh)
http://westlinux.ywzc.net/(onesun)

2016 改变sshd的端口(bjchenxu)
在/etc/ssh/sshd_config中加入一行:Port 2222,/etc/init.d/sshd restart重启守护进程

2017 改变telnet的端口(bjchenxu)
将/etc/services文件中telnet对应的端口号21改为你想要的值,/etc/init.d/xinetd restart重启守护

进程

2018 终端模式有问题(sakulagi)
export TERM=vt100

2019 模仿超级终端,LINUX里什么程序连接路由器和交换机(alstone)
minicom

2020 ssh上来能不能不自动断线(wind521,双眼皮的猪)
修改自己HOME目录下的.bash_profile文件,加上
export TMOUT=1000000 (以秒为单位)
然后运行source .bash_profile

2021 用什么工具做入侵检测(bjchenxu)
snort

2022 Linux下检测程序内存泄漏的工具(bjchenxu)
cchecker或是efence库都可以

2023 linux下如何监视所有通过本机网卡的数据(bjchenxu)
tcpdump或者iptraf

2024 为什么root执行好多命令都说command not found(bjchenxu)
你是telnet上来,然后su成root的吧,改改你的su命令格式,应该是su – root

2025 关闭用户的POP3权限(tiansgx)
把POP3的端口关了就可以了。 在文件/etc/services中找到这一行 pop-3 110/tcp 把这一行前加个’#',

把它注释掉就可以了。

2026 linux下播放flash动画(myxfc)
linux下播放flash动画用这个东西,不会造成浏览器的关闭(其他的插件不好用)
首先下载flash播放动画在linux的插件
http://www.collaborium.org/onsite/jos2000/related/soft/flash_linux.tar.gz
tar zxvf flash_linux.tar.gz
打开包之后,会看到Linux文件夹
在linux文件颊里有两个文件libflashplayer.so 和shockwaveflash.class,把这两个文件拷贝到你的浏览

器里的插件里(浏览器不一样,插件的位置可能也不一样)
/usr/lib/mozilla-1.0.1/plugins,就可以了

2027 锁定wu-ftp用户目录(wangla)
编辑ftpaccess文件
restricted-uid *
这一句很重要,限制了ftp用户在自己的目录里。

2028 服务器怎么不让telnet(知秋一叶)
服务器上必须启动telnet服务 && 服务器的防火墙优先级应该设为低

2029 防止任何人使用su命令成为root(xiaohu0)
1.vi /etc/pam.d/su
auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/pam_wheel.so group=wheel
2.在/etc/pam. d/su配置文件中定义了wheel组.

2030 如何使lynx浏览器能够浏览中文网页(Ghost_Vale)
浏览简体中文网页就的修改如下设置
Save options to disk: [X]
Display and Character Set
Display character set : [Chinese________________________]
Assumed document character set(!): [iso-8859-1______]
CJK mode (!) : [ON_]
然后移到最下面的 Accept Changes 按下 Enter 保存就可以了
当然你的系统要支持简体中文才可以

2031 网卡激活了,却上不了网,怎么办?(Slock,双眼皮的猪)
traceroute,看看到底是在那一块被阻住的。
1.ping自己
2.ping网关
3.ping DNS
4.traceroute DNS
如果一切正常
nslookup www.sina.com.cn
ping sina的address
traceroute sina的address
基本上就可以知道结果了

2032 在redhat9下配samba,win2000能访问,win98不能访问?(squall2003)
如果是wind98必需修改注册表:HKEY_LOCAL_MACHINE/system/correntcontrolset/services/Vxd/VNETSUP

下建个D值:EnablePlainTextpasswd,键值1

2033 如何得到网卡的MAC地址(bjchenxu,hutuworm)
arp -a | awk ‘{print $4}’
ifconfig eth0 | head -1 | awk ‘{print $5}’

2034 如何得到网卡的IP地址(mb)
ifconfig eth0 |awk ‘/inet addr/ {split($2,x,":");print x[2]}’

2035 如何修改Linux机器所在的工作组(hutuworm)
vi /etc/samba/smb.conf,修改workgroup = 一行,将组名写在后面。

2036 一块网卡如何绑定两个ip(linuxloveu)
#cd /etc/sysconfig/network-scripts
#cp ifcfg-eth0 ifcfg-eth0:1
#vi ifcfg-eth0:1
修改IP和设备名
Debian下一个网卡绑定多个ip的方法(NetDC)
修改/etc/network/interfaces
auto eth0
iface eth0 inet static
address 172.16.3.123
netmask 255.255.255.0
network 172.16.3.0
broadcast 172.16.3.255
gateway 172.16.3.1

auto eth0:1
iface eth0:1 inet static
address 10.16.3.123
netmask 255.255.0.0
network 10.16.0.0
broadcast 10.16.255.255
修改/etc/network/ifstate
lo=lo
eth0=eth0
eth0:1=eth0:1
然后/etc/init.d/networking restart就可以了。
一个网卡绑定多ip另一法(hotbox)
在/etc/sysconfig/network-scripts/下创建一个文件:ifcfg-ethX-rangeX ("X"为网卡号)
文件内容:
IPADDR_START=
IPADDR_END=
CLONENUM=0
可以有256个ip

2037 一个ip如何绑定两块网卡(hutuworm)
假设192.168.0.88是ip,192.168.0.1是网关:
/sbin/modprobe bonding miimon=100 mode=1
/sbin/ifdown eth0
/sbin/ifdown eth1
/sbin/ifconfig bond0 192.168.0.88
/sbin/ifenslave bond0 eth0 eth1
/sbin/route add default gw 192.168.0.1

2038 192.168.1.0/24(双眼皮的猪)
它与192.168.1.0/255.255.255.0是等价的,只是表示方式不同….

2039 linux下清空arp表的命令(NetDC)
#arp -d -a(适用于bsd)
for HOST in `arp | sed ‘/Address/d’ | awk ‘{ print $1}’` ; do arp -d $HOST; done

2040 使用ntp协议从服务器同步时间(NetDC)
ntpdate NTP-SERVER 例:ntpdate 172.16.2.1

2041 host命令的用法(bjchenxu)
host能够用来查询域名,它还能得到更多的信息
host -t mx example.com可以查询出example.com的MX记录,以及处理mail的host的名字
host -l example.com会返回所有注册在example.com下的域名
host -a example.com则会显示这个主机的所有域名信息.

2042 立刻让LINUX支持NAT(platinum)
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -I POSTROUTING -j MASQUERADE

2043 rh8.0下rcp的用法设置(zhqh1)
只对root用户生效
1、在双方root用户根目录下建立.rhosts文件,并将双方的hostname加进去.在此之前应在双方的/etc/hos

ts文件中加入对方的IP和hostname
2、把rsh服务启动起来,redhat默认是不启动的。方法:用执行ntsysv命令,在rsh选项前用空格键选中

,确定退出。 然后执行:service xinetd restart即可。
3、到/etc/pam.d/目录下,把rsh文件中的auth required /lib/security/pam_securetty.so一行用“#”

封掉即可。

2044 在ethX设备上,使LINUX支持网络广播功能(默认是不支持的)(platinum)
ip route add 255.255.255.255 dev ethX

2045 路由设置手册(NetDC)
查看路由信息:
netstat -rn
route -n
手工增加一条路由:
route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1
手工删除一条路由:
route del -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1
好了,下面到了重要的了,让系统启动的时候自动启用路由设置。
在redhat中添加一条路由,修改文件/etc/sysconfig/static-routes
any net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1
在debian中添加一条路由,

方法一:修改/etc/network/interfaces
代码:
auto eth0
iface eth0 inet static
address 172.16.3.222
netmask 255.255.0.0
network 172.16.0.0
broadcast 172.16.255.255
gateway 172.16.2.1
up route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1
down route del -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1
方法二:在/etc/network/if-up.d目录下建立一个简单的脚本文件,如static-route$(记得以$符号结尾

,要不有个run-parts会跑出来告诉你一些东西)脚本最简单的就好啦,如:
代码:
#!/bin/bash
route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1
嘿嘿,你也可以猜到/etc/network/目录下的其他目录的作用了吧。
发觉在debian中这个route的设置其实只是它的那些配置文件的一个比较简单的应用而已,你完全可以做

更复杂的应用。

2046 利用ssh复制文件(platinum)
假如A、B都有SSH服务,现在在A的SSH里
1、从A复制B(推过去)
scp -rp /path/filename username@remoteIP:/path
2、从B复制到A(拉过来)
scp -rp username@remoteIP:/path/filename /path
如果其中一个不是LINUX系统,可以在WINDOWS上用SecureFX软件

2047 samba3.0中文显示问题的解决办法(linuxzfp, jiadingjun)
在samba 3.0的配置文件中(/etc/samba/smb.conf)的[global]中加入下面两句:
unix charset=cp936
重启服务
service smb restart

2048 临时修改网卡MAC地址的方法
关闭网卡:/sbin/ifconfig eth0 down
然后改地址:/sbin/ifconfig eth0 hw ether 00:AA:BB:CCD:EE
然后启动网卡:/sbin/ifconfig eth0 up

2049 conntrack 表满的处理方法(cgweb)
前段时间配置的iptables+squid做的proxy server ,一直工作正常。今天我上控制台上发现
Jun 18 12:43:36 red-hat kernel: ip_conntrack: table full, dropping packet.
Jun 18 12:49:51 red-hat kernel: ip_conntrack: table full, dropping packet.
Jun 18 12:50:57 red-hat kernel: ip_conntrack: table full, dropping packet.
Jun 18 12:57:38 red-hat kernel: ip_conntrack: table full, dropping packet.

IP_conntrack表示连接跟踪数据库(conntrack database),代表NAT机器跟踪连接的数目,连接跟踪表能

容纳多少记录是被一个变量控制的,它可由内核中的ip- sysctl函数设置。每一个跟踪连接表会占用350

字节的内核存储空间,时间一长就会把默认的空间填满,那么默认空间时多少?我以redhat为例在内存为

64MB的机器上时4096,内存为128MB是

8192,内存为256MB是16376,那末就能在/proc/sys/net/ipv4/ip_conntrack_max里查看、设置。
例如:增加到81920,可以用以下命令:
echo "81920" > /proc/sys/net/ipv4/ip_conntrack_max

那样设置是不会保存的,要重启后保存可以在/etc/sysctl.conf中加:
net.ipv4.ip_conntract_max =81920
按照此方法改变后一切正常,要是在满了可以加大其值.

2050 Linux下怎么使用BT(atz0001)
azureus,http://azureus.sourceforge.net/

2051 Linux下查看光纤网卡的工作模式(sakulagi)
主板上PCI—X插槽中插入一块64位的光纤网卡,在LINUX9.0的环境下,要知道它是否工作在64位模式下,

可使用getconf WORD_BIT

2052 在线更新RHEL的另类途径(hutuworm)
1.安装相应的APT包:
Red Hat EL 2.1 – i386
rpm -ihv http://dag.wieers.com/packages/apt/apt-0.5.15cnc6-3.0.el2.dag.i386.rpm
Red Hat EL 3 – i386
rpm -ihv http://dag.wieers.com/packages/apt/apt-0.5.15cnc6-3.1.el3.dag.i386.rpm
Red Hat EL 3 – x86_64
rpm -ihv http://dag.wieers.com/packages/apt/apt-0.5.15cnc6-3.1.el3.dag.x86_64.rpm
2.在线更新
apt-get update
apt-get upgrade

2053 SOCKS5启动后一段时间停止工作。用命令ps auxw | grep socks5查看,发现有很多SOCKS defunct

进程,为什么(bjchenxu)
主要是打补丁的问题。如果socks5-tar.gz是没打过补丁的版本,必须下一个带补丁的v1.0-r11版本,重

新安装、运行问题就可以解决了。

2054 在VMware WorkStation 4.0.5中安装Debian 3.0时,提示找不到硬盘,需要SCSI的驱动。但是我用

的是IDE硬盘,请问该怎么办? (bjchenxu)
由于VMware将用户划分的硬盘空间虚拟成SCSI硬盘,而Debian安装盘中没有对应的驱动,而安装其它Linu

x版本时,有的在一开始会加载SCSI驱动,所以没有这个问题。用户可以修改VMware的配置,将其改为模

拟IDE硬盘就可以了。

2055 如何让Linux网关后面的WIN32下的用户直接点击FTP连接下载?(platinum)
modprobe ip_nat_ftp

2056 请问用户的IP是动态的,如何在Squid中限定在同一时间内同一账户在线的数量?(bjchenxu)
例如限制单个用户只能打开12个HTTP连接,采用下面的方法:
acl all src 0.0.0.0/0.0.0.0
acl limit maxconn 12
acl localnet src 192.168.0.0/24
http_access deny localnet maxconn
http_access allow localnet
http_access deny all

2057 如果我用Squid代理的代理服务器在192.168.1.0这个网段里,例如它的IP是192.168.1.1,我有一些

客户端在192.168.2.0这个网段内,怎样设置才能通过这个代理服务器出去?(bjchenxu)
如果不用透明代理,直接在浏览器的代理选项里设置就可以了。否则首先是在代理服务器的网卡上再挂一

个IP为192.168.2.1,添加相应的路由,再修改Squid的squid.conf文件里的监听地址和端口等,最后在19

2.168.2.0网段的客户端设置其网关为 192.168.2.1,再直接在浏览器的代理选项里设置一下就可以了。

2058 如何使用netrc文件进行自动FTP?(bjchenxu)
在自己的home目录下建立一个权限为600,后缀名为.netrc的文件,内容如下:
machine 172.168.15.1 login admin password admin
这样用户以后每次登录FTP服务器172.168.15.1的时候,系统都会帮用户以用户名admin、密码admin登录

。用户利用这个特征可以实现自动FTP。例如用户想要每天6:00到172.168.15.1机器上面获得/admin目录

下的文件admin.txt,可以按如下方法做。
建立一个文件ftp_cmd,内容如下:
cd admin
get amin.txt
bye
然后使用crontab -e设置定时任务:
0 6 * * * ftp 172.168.15.1 < ftp_cmd

2059 怎样得到ipchains的日志?(bjchenxu)
用户设置规则的时候必须加入-l参数才会在/etc/messages里面做记录。不过建议还是不加的好,不然用

户的/etc/messages会变得非常大。

2060 如何不显示其它用户的消息?(bjchenxu)
用户可以使用mesg n来禁止别人给自己发送信息,其实就是禁止别人往自己的终端上面的写的权限。当别

人试图再使用write给自己发送信息时,发送者将会看见提示如下:
write: user has messages disabled on pts/n

2061 minicom彩色显示(双眼皮的猪)
minicom -s进行serial port配置,然后配置好以后,
minicom -o -c on
-o表示不初始化
-c on表示color on

2062 启用SELinux的Apache的配置文件httpd.conf里面修改DocumentRoot无用或者出现403 Forbidden错

误(arbor)
# chcon -u system_u -t httpd_sys_content_t -R website目录

2063 apache2 的log文件位置如何自定义目录(tomi)
编辑httpd.conf里的
ErrorLog /var/log/http/error_log <== 这是管errorlog的
CustomLog /var/log/http/access_log common <== 这是管accesslog的

2064 更改eth0是否混杂模式(wwy)
网卡eth0改成混杂模式:
ifconfig eth0 promisc
关闭混杂模式:
ifconfig eth0 -promisc

2065 字符界面下的ftp中,下载整个文件夹(bjchenxu)
1. lftp IP
2. > user username
password
3. > mirror -c –parallel=number remotedir localdir
3a. > help mirror
2066 如何让ssh只允许指定的用户登录(xinyv,好好先生,wolfg,我爱钓鱼)
方法1:在/etc/pam.d/sshd文件中加入
auth required pam_listfile.so item=user sense=allow file=/etc/sshusers onerr=fail
然后在/etc下建立sshusers文件,编辑这个文件,加入你允许使用ssh服务的用户名,重新起动sshd服务即可


方法2:pam规则也可以写成deny的
auth required pam_listfile.so item=user sense=deny file=/etc/sshusers onerr=succeed
方法3:在sshd_config中设置AllowUsers,格式如
AllowUsers a b c
重启sshd服务,则只有a/b/c3个用户可以登陆。

—————————-程序开发篇————————–
3001 linux下调试core文件(bjchenxu)
gdb
:出错产生core dump的可执行程序。
: core dump的文件名,缺省是“core”

3002 gcc abc.c得到的a.out不能运行(bjchenxu)
./a.out

3003 c++ 编译时为什么出错信息说cout没定义(bjchenxu)
include头文件完后加入 using namespace std;

3004 新编译生成的gcc ,使用的标准连接库都在/usr/local/lib 下了,但使用的缺省的连接路径是

/usr/lib 怎样添加?(除了在每次编译时 增加 -L /usr/local/lib 以外)(sakulagi, hutuworm)
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
写到~/.bash_profile里面。
增加一种简便办法:
将/usr/local/lib加入/etc/ld.so.conf,然后运行一次ldconfig

3005 RH9下GCC的安装(一起走过的日子,hutuworm)
三种方法选一:
(1)利用CD上rpm安装
CD-1:compat-gcc-7.3-2.96.118.i386.rpm
CD-1:compat-gcc-c++-7.3-2.96.118.i386.rpm
CD-1:libgcc-3.2.2-5.i386.rpm
CD-2:compat-gcc-g77-7.3-2.96.118.i386.rpm
CD-2:compat-gcc-java-7.3-2.96.118.i386.rpm
CD-2:compat-gcc-objc-7.3-2.96.118.i386.rpm
CD-2:gcc-3.2.2-5.i386.rpm
CD-2:gcc-c++-3.2.2-5.i386.rpm
CD-2:gcc-g77-3.2.2-5.i386.rpm
CD-2:gcc-gnat-3.2.2-5.i386.rpm
CD-2:gcc-java-3.2.2-5.i386.rpm
CD-2:gcc-objc-3.2.2-5.i386.rpm
比如碰到系统提示:
warning : gcc-3.2.2-5.i386.rpm : V3 DSA signature :MOKEY key ID db42a60e
error : Failed dependencies :
binutils >=2.13.90.0.18-9 is needed by gcc-3.2.2-5
glibc-devel >=2.3.2-11.9 is needed by gcc-3.2.2-5…
就先安裝glibc-devel包,依此类推
(2)更好的方法就是在X-window下选“主菜单”──>“系统设置”──>“添加/删除应用程序”──>“

开发工具”中的gcc并安装它
(3) up2date gcc便可自动解决dependency问题

3006 shell脚本为何无法运行(GOD_Father)
第一,脚本权限要为可执行 #chmod +x test.sh
第二,脚本所在的目录在环境变量PATH中,或者直接执行 #./test.sh

3007 查看某个文件被哪些进程在读写(bjweiqiong)
lsof 文件名

3008 查看某个进程打开了哪些文件(bjweiqiong)
lsof –c 进程名
lsof –p 进程号

3009 lsof是什么意思(bjweiqiong)
list open files

3010 lsof用法小全(bjweiqiong)
lsof abc.txt 显示开启文件abc.txt的进程
lsof -i :22 知道22端口现在运行什么程序
lsof -c nsd 显示nsd进程现在打开的文件
lsof -g gid 显示归属gid的进程情况
lsof +d /usr/local/ 显示目录下被进程开启的文件
lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长
lsof -d 4 显示使用fd为4的进程
lsof -i [i] 用以显示符合条件的进程情况
语法: lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
46 –> IPv4 or IPv6
protocol –> TCP or UDP
hostname –> Internet host name
hostaddr –> IPv4位置
service –> /etc/service中的 service name (可以不只一個)
port –> 埠號 (可以不只一個)
例子: TCP:25 – TCP and port 25
@1.2.3.4 – Internet IPv4 host address 1.2.3.4
tcp@ohaha.ks.edu.tw:ftp – TCP protocol host:ohaha.ks.edu.tw service name:ftp
lsof -n 不将IP转换为hostname,预设是不加上-n参数
例子: lsof -i tcp@ohaha.ks.edu.tw:ftp -n
lsof -p 12 看进程号为12的进程打开了哪些文件
lsof +|-r [t] 控制lsof不断重复执行,缺省是15s刷新
-r,lsof会永远不断的执行,直到收到中断讯号
+r,lsof会一直执行,直到没有档案被显示
例子:不断查看目前ftp连接的情况:lsof -i tcp@ohaha.ks.edu.tw:ftp -r
lsof -s 列出打开文件的大小,如果没有大小,则留下空白
lsof -u username 以UID,列出打开的文件

—————————-经典图书篇————————–
4001 GNU/Linux高级网络应用服务指南(bjchenxu)
linuxaid网站
机械工业出版社
优点:又全又精,全都是实战之作
缺点:针对版本较低,为redhat 6.2

4002 Linux Apache Web Server管理指南(Linux Apache Web Server Administration)(bjchenxu)
Charles Aulds 马树奇/金燕译
电子工业出版社
优点:目前我还没有发现哪个关于apache的问题这本书没有讲过
缺点:针对1.3.x,最新的针对2.0.*的英文版已出,中文版待出

4003 Linux内核情景分析(bjchenxu)
毛德操/胡希明
浙江大学出版社
优点:太透彻了,没法不懂
缺点:还是版本问题,内核更新太快了,不过还是必读

4004 Unix环境高级编程(bjchenxu)
Richard Stevens
机械工业出版社
优点:博大精深
缺点:初学者是很难理解的,否则怎么叫《高级编程》呢?

4005 编程精粹–Microsoft编写优质无错c程序秘诀(bjchenxu)
Steve Maguire
电子工业出版社
优点:不说了,作者是微软的资深工程师
缺点:很难找了,1994年出的

4006 Understanding the Linux Kernel, 2nd Edition(hutuworm)
Daniel P. Bovet & Marco Cesati
O’Reilly出版社
读了这本书之后,你就会明白在什么情况下Linux具有最佳的性能,以及它如何面对挑战,在各种环境中

提供进程调度、文件访问和内存管理时的优良的系统响应。作者通过解释其重要性来引入每一个题目,并

将内核操作与Unix程序员和用户熟悉的系统调用或实用程序联系起来。

4007 UNIX操作系统教程(英文版)(弱智)
Syed Mansoor Sarwar等
机械工业出版社
特点:浅显易懂,着重unix基础概念和整体理解,顺便复习英语。
另外:机械工业出版社已经出版了中文版,名称:UNIX 教程

4008 UNIX编程环境(弱智)
Brian W.Kernighan, Rob Pike 陈向群等译
机械工业出版社
特点:浅显,深入浅出讲解如何使用UNIX及各种工具,简单介绍Unix编程环境;对比“UNIX环境高级编程

”,此书适合新手入门。

4009 The Art of UNIX Programming(hutuworm)
Eric Steven Raymond
http://catb.org/~esr/writings/taoup/html/
优点: E.S. Raymond的经典著作

4010 unix网络编程–卷一 套接口API和X/Open传输接口API(slg1972)
Richard Stevens
清华大学出版社
优点:详细地讲解unix网络的编程

4011 unix网络编程–卷二 进程间通讯(slg1972)
Richard Stevens
清华大学出版社
优点:详细讲解unix的进程之间,线程之间的关系,及各种不同标准的进程编程的异同

4012 unix网络编程–卷三 应用程序(slg1972, hutuworm)
未出,因为Richard

Stevens大师英年早逝,再也不可能完成这计划中的第三卷了。据说其未竟稿可能由Gary R. Wright整理

续写出来,但是自大师驾鹤以来一直杳无音信

4013 基于C++ CORBA高级编程(slg1972)
Michi Henning,Steve Vinoski
清华大学出版社
优点:中间件的好书,通向corba应用的必备资料。

4014 unix linux网管通鉴(odin_free)
电子版的,包括本版精华
优点:我见过关于unix知识最全面、最实用的chm文档,相当于一个小型网站,里面支持全文检索,推荐

所有还没有的兄弟姐妹们下载

4015 www.chinaoy.com(aomin5555)
不错,挺全的,图书下载的好网址:
redhat linux9.0 官方入门指南
·redhat linux9.0 官方安装指南
·redhat linux9.0 官方定制设置手册
·redhat linux基础教程
·Linux 参考大全
·清华论坛linux精华
·Linux系统管理员指南中文手册
·Linux网站建设和维护全攻略
·redhat linux8.0 安装手册
·Linux环境database管理员指南

4016 Linux Advanced Routing & Traffic Control(hutuworm)
专门讲LINUX IPROUTE2的书,大概100页左右,www.lartc.org
中文版在:http://www.lartc.org/LARTC-zh_CN.GB2312.pdf

4017 Debian User强烈推荐看的书(NetDC)
Debian Reference (Debian参考手册)
http://qref.sourceforge.net/
简体中文版的pdf文档。
http://qref.sourceforge.net/Debian/reference/reference.zh-cn.pdf

4018 Advanced Bash-Scripting Guide(hutuworm)
An in-depth exploration of the art of shell scripting.
Mendel Cooper. .
http://www.tldp.org/LDP/abs/abs-guide.pdf
优点:是Bash编程的圣经,而且该书作者不断在更新其内容,一两个月就会翻新一个版本,值得一读,一

读再读。

4019 JAVA完美经典(bjchenxu)
江义华 编著 林彩瑜 文编
中国铁道出版社
定价:65元
优点:不愧是台湾同胞的力作,讲解清楚,知识全面,我看了之后,感到很有收获


—————————-mysql相关篇————————–
5001 mysql的数据库存放在什么地方(bjchenxu)
1. 如果使用rpm包安装,应该在/var/lib/mysql目录下,以数据库名为目录名
2. 如果源码安装在/usr/local/mysql中,应该在/usr/local/mysql/var中,以数据库名为目录名

5002 从mysql中导出和导入数据(bjchenxu)
导出数据库
mysqldump 数据库名 > 文件名
导入数据库
mysqladmin create 数据库名
mysql 数据库名 < 文件名

5003 忘了mysql的root口令怎么办(bjchenxu)
# service mysql stop
# mysqld_safe –skip-grant-tables &
# mysqladmin -u user password ‘newpassword”
# mysqladmin flush-privileges

5004 快速安装php/mysql(bjchenxu)
确保使用系统自带的apache,从安装光盘中找出所有以mysql及php-mysql开头的rpm包,然后运行#rpm

-ivh mysql*.rpm php-mysql*.rpm; mysql_install_db; service mysql start

5005 修改mysql的root口令(bjchenxu)
# mysqladmin -uroot -p password ‘你的新密码’

——————————-杂项篇——————————–
感谢allan0909指正
请不要做浮躁的人
http://www.chinaunix.net/forum/viewtopic.php?t=93113
欢迎转载本文,请注明来自www.chinaunix.net,转载本文的网址如下:
a. linuxsir网站
http://www.linuxsir.com/bbs/showthread.php?s=&threadid=46279
b. 阿叶的小屋
http://hylinux.3322.org/showarticle.php?action=showarticle&id=2794
c. csdn
http://expert.csdn.net/expert/FAQ/FAQ_Index.asp?id=175651
d. dev-club
http://www.dev-club.com/club/bbs/showAnnounce.asp?page=1&id=2175595
e. 聚贤庄
http://www.ncn.cn/linux/2003001.htm
f. linux伊甸园
http://www.linuxeden.com/edu/doctext.php?docid=3020
g. 风雨人生技术网
http://www.guomin.net/index.php?showtopic=220
http://www.guomin.net/index.php?showtopic=219
http://www.guomin.net/index.php?showtopic=218

全文结束 

2005年10月21日

来源:www.hackbase.com         

         这里收集了 HTML 的所有语法〈当然并不是全部,但也差不多是这样了〉。希望对网友查询时比较方便。 注:按英文字母顺序排列  
卷标 , 属性名称 简介  

  <! - - … - -> 批注  

  <A HREF TARGET> 指定超级链接的分割窗口  

  <A HREF=#锚的名称> 指定锚名称的超级链接  

  <A HREF> 指定超级链接  

  <A NAME=锚的名称> 被连结点的名称  

  <ADDRESS>….</ADDRESS> 用来显示电子邮箱地址  

  <B> 粗体字  

  <BASE TARGET> 指定超级链接的分割窗口  

  <BASEFONT SIZE> 更改预设字形大小  

  <BGSOUND SRC> 加入背景音乐  

  <BIG> 显示大字体  

  <BLINK> 闪烁的文字  

  <BODY TEXT LINK VLINK> 设定文字颜色  

  <BODY> 显示本文  

  <BR> 换行  



  <CAPTION ALIGN> 设定表格标题位置  

  <CAPTION>…</CAPTION> 为表格加上标题  

  <CENTER> 向中对齐  

  <CITE>…<CITE> 用于引经据典的文字  

  <CODE>…</CODE> 用于列出一段程序代码  

  <COMMENT>…</COMMENT> 加上批注 



  <DD> 设定定义列表的项目解说  

  <DFN>…</DFN> 显示"定义"文字  

  <DIR>…</DIR> 列表文字卷标  

  <DL>…</DL> 设定定义列表的卷标  

  <DT> 设定定义列表的项目  



  <EM> 强调之用  



  <FONT FACE> 任意指定所用的字形  

  <FONT SIZE> 设定字体大小  

  <FORM ACTION> 设定户动式窗体的处理方式  

  <FORM METHOD> 设定户动式窗体之资料传送方式  

  <FRAME MARGINHEIGHT> 设定窗口的上下边界  

  <FRAME MARGINWIDTH> 设定窗口的左右边界  

  <FRAME NAME> 为分割窗口命名  

  <FRAME NORESIZE> 锁住分割窗口的大小  

  <FRAME SCROLLING> 设定分割窗口的滚动条  

  <FRAME SRC> 将HTML文件加入窗口  

  <FRAMESET COLS> 将窗口分割成左右的子窗口  

  <FRAMESET ROWS> 将窗口分割成上下的子窗口  

  <FRAMESET>…</FRAMESET> 划分分割窗口  



  <H1>~<H6> 设定文字大小  

  <HEAD> 标示文件信息  

  <HR> 加上分网格线  

  <HTML> 文件的开始与结束  



  <I> 斜体字  

  <IMG ALIGN> 调整图形影像的位置  

  <IMG ALT> 为你的图形影像加注  

  <IMG DYNSRC LOOP> 加入影片  

  <IMG HEIGHT WIDTH> 插入图片并预设图形大小  

  <IMG HSPACE> 插入图片并预设图形的左右边界  

  <IMG LOWSRC> 预载图片功能  

  <IMG SRC BORDER> 设定图片边界  

  <IMG SRC> 插入图片  

  <IMG VSPACE> 插入图片并预设图形的上下边界  

  <INPUT TYPE NAME VALUE> 在窗体中加入输入字段  

  <ISINDEX> 定义查询用窗体  


  

  <KBD>…</KBD> 表示使用者输入文字  


  

  <LI TYPE>…</LI> 列表的项目 ( 可指定符号 )  


  

  <MARQUEE> 跑马灯效果  

  <MENU>…</MENU> 条列文字卷标  

  <META NAME="REFRESH" CONTENT URL> 自动更新文件内容  

  <MULTIPLE> 可同时选择多项的列表栏  


  

  <NOFRAME> 定义不出现分割窗口的文字  


  

  <OL>…</OL> 有序号的列表  

  <OPTION> 定义窗体中列表栏的项目  


  

  <P ALIGN> 设定对齐方向  

  <P> 分段  

  <PERSON>…</PERSON> 显示人名  

  <PRE> 使用原有排列  


  

  <SAMP>…</SAMP> 用于引用字  

  <SELECT>…</SELECT> 在窗体中定义列表栏  

  <SMALL> 显示小字体  

  <STRIKE> 文字加横线  

  <STRONG> 用于加强语气  

  <SUB> 下标字  

  <SUP> 上标字  


  

  <TABLE BORDER=n> 调整表格的宽线高度  

  <TABLE CELLPADDING> 调整数据域位之边界  

  <TABLE CELLSPACING> 调整表格线的宽度  

  <TABLE HEIGHT> 调整表格的高度  

  <TABLE WIDTH> 调整表格的宽度  

  <TABLE>…</TABLE> 产生表格的卷标  

  <TD ALIGN> 调整表格字段之左右对齐  

  <TD BGCOLOR> 设定表格字段之背景颜色  

  <TD COLSPAN ROWSPAN> 表格字段的合并  

  <TD NOWRAP> 设定表格字段不换行  

  <TD VALIGN> 调整表格字段之上下对齐  

  <TD WIDTH> 调整表格字段宽度  

  <TD>…</TD> 定义表格的数据域位  

  <TEXTAREA NAME ROWS COLS> 窗体中加入多少列的文字输入栏  

  <TEXTAREA WRAP> 决定文字输入栏是自动否换行  

  <TH>…</TH> 定义表格的标头字段  

  <TITLE> 文件标题  

  <TR>…</TR> 定义表格美一行  

  <TT> 打字机字体  


  <U> 文字加底线  

  <UL TYPE>…</UL> 无序号的列表 ( 可指定符号 )  

  <VAR>…</VAR> 用于显示变量 

Linux集群技术简介

 

 

(来源:转载自http://www.cnw.com.cn)

者: 于潇洋

Turbolinux(中国)软件有限公司

 

 

目前,越来越多的网站采用Linux操作系统,提供邮件、Web、文件存储、数据库等服务。也有非常多的公司在企业内部网中利用Linux服务器提供这些服务。随着人们对Linux服务器依赖的加深,对其可靠性、负载能力和计算能力也倍加关注。Linux集群技术应运而生,可以以低廉的成本,很好地满足人们的这些需要。

Linux竞争力很强的原因之一,是它可以运行于极为普及的PC机上,不需要购买昂贵的专用硬件设备。在几台运行LinuxPC机上,只要加入相应的集群软件,就可以组成具有超强可靠性、负载能力和计算能力的Linux集群。集群中的每台服务器称为一个节点。

按照侧重点的不同,可以把Linux集群分为三类。一类是高可用性集群,运行于两个或多个节点上,目的是在系统出现某些故障的情况下,仍能继续对外提供服务。高可用性集群的设计思想就是要最大限度地减少服务中断时间。这类集群中比较著名的有Turbolinux TurboHAHeartbeatKimberlite等。第二类是负载均衡集群,目的是提供和节点个数成正比的负载能力,这种集群很适合提供大访问量的Web服务。负载均衡集群往往也具有一定的高可用性特点。Turbolinux Cluster ServerLinux Virtual Server都属于负载均衡集群。另一类是超级计算集群,按照计算关联程度的不同,又可以分为两种。一种是任务片方式,要把计算任务分成任务片,再把任务片分配给各节点,在各节点上分别计算后再把结果汇总,生成最终计算结果。另一种是并行计算方式,节点之间在计算过程中大量地交换数据,可以进行具有强耦合关系的计算。这两种超级计算集群分别适用于不同类型的数据处理工作。有了超级计算集群软件,企业利用若干台PC机就可以完成通常只有超级计算机才能完成的计算任务。这类软件有Turbolinux EnFusionSCore等。

高可用性集群与负载均衡集群的工作原理不同,适用于不同类型的服务。通常,负载均衡集群适用于提供静态数据的服务,如HTTP服务;而高可用性集群既适用于提供静态数据的服务,如HTTP服务,又适用于提供动态数据的服务,如数据库等。高可用性集群之所以能适用于提供动态数据的服务,是由于节点共享同一存储介质,如RAIDBox。也就是说,在高可用性集群内,每种服务的用户数据只有一份,存储在共用存储设备上,在任一时刻只有一个节点能读写这份数据。

Turbolinux TurboHA为例,集群中有两个节点AB,设这个集群只提供Oracle服务,用户数据存放于共用存储设备的分区/dev/sdb3上。在正常状态下,节点A提供Oracle数据库服务,分区/dev/sdb3被节点A加载在/mnt/oracle上。当系统出现某种故障并被TurboHA软件检测到时,TurboHA会将Oracle服务停止,并把分区/dev/sdb3卸载。之后,节点B上的TurboHA软件将在节点B上加载该分区,并启动Oracle服务。对于Oracle服务有一个虚拟的IP地址,当Oracle服务从节点A切换到节点B上时,虚拟的IP地址也会随之绑定到节点B上,因此用户仍可访问此服务。

由以上分析可以看出,高可用性集群对一种服务而言不具有负载均衡功能,它可以提高整个系统的可靠性,但不能增加负载的能力。当然,高可用性集群可以运行多种服务,并适当分配在不同节点上,比如节点A提供Oracle服务,同时节点B提供Sybase服务,这也可以看成是某种意义上的负载均衡,不过这是对多种服务的分配而言。

负载均衡集群适用于提供相对静态的数据的服务,比如HTTP服务。因为通常负载均衡集群的各节点间通常没有共用的存储介质,用户数据被复制成多份,存放于每一个提供该项服务的节点上。

下面以Turbolinux Cluster Server为例简要介绍一下负载均衡集群的工作机制。在集群中有一个主控节点,称为高级流量管理器(ATM)。假设这一集群仅被用来提供一项HTTP服务,其余各节点均被设定为HTTP的服务节点。用户对于页面的请求全部发送到ATM上,因为ATM上绑定了这项服务对外的IP地址。ATM把接受到的请求再平均发送到各服务节点上,服务节点接收到请求之后,直接把相应的Web页面发送给用户。这样一来,假如在1秒内有1000HTTP页面请求,而集群中有10个服务节点,则每个节点将处理100个请求。这样,在外界看来,好象有一台10倍速度的高速计算机在处理用户的访问。这也就是真正意义上的负载均衡。

但是ATM要处理所有1000个页面请求,它会不会成为集群处理速度的瓶颈呢?由于对于页面的请求的数据量相对较少,返回页面内容的数据量相对较大,因此这种方式还是很有效率的。ATM发生故障,也不会导致整个系统无法工作。Turbolinux Cluster Server可以设置一台或多台计算机为后备ATM节点,当主ATM节点故障时,在后备ATM中会产生出一个新的主ATM,接替它的工作。可以看出,这种负载均衡集群也具有一定的高可用性。

HTTP页面相对是静态的,但有时也需要改动。Turbolinux Cluster Server提供了数据同步工具,可以很方便的把对页面的改动同步到所有提供该项服务的节点上。

下面介绍一下对于高可用性集群与负载均衡集群的组合使用。如果用户有一个由两个节点组成的最小集群,是否可以同时获得高可用性集群和负载均衡集群的效益呢?答案是肯定的。由于高可用性集群适用于提供动态数据的服务,而负载均衡集群适用于提供静态数据的服务,所以我们不妨假设要同时提供OracleHTTP服务。用户要在节点AB上安装TurbolinuxTurboHATurbolinuxClusterServer软件。把节点A作为Oracle正常工作的节点,节点B作为Oracle服务的后备节点,这是对TurboHA软件而言。对于ClusterServer软件而言,要设置节点B为主ATM节点,节点A为后备ATM节点,而节点A和节点B同时又都是HTTP的服务节点。

这样一来,节点A和节点B都是身兼两职,而用户同时得到了一个具有高可用性的Oracle服务和一个具有负载均衡功能的HTTP服务。即使有一个节点发生故障,Oracle服务和HTTP服务都不会因此而中断。

但对于同一种服务,是不能同时获得高可用性与负载均衡能力的。对一种服务,要么是只有一份数据,放在共用存储设备上,一次被一个节点访问,获得高可用性;要么是把数据复制为多份,存储于每个节点的本地硬盘上,用户的请求同时发送到多个节点上,获得负载均衡能力。

对于高可用性集群,由于它在设计时的目的就是为了最大可能地减少服务中断时间,因此服务的切换受到很大的关注。当一个节点上的服务故障时,会被很快地检测到并被切换到其他节点上。但在切换时,不能忽略对数据完整性的保护。

在什么情况下数据完整性会被破坏呢?由于高可用性集群中至少有两个节点,连接在一个共用的存储设备上,对于非裸分区而言,如果被两个节点同时读写,就会造成文件系统被破坏。因此就需要利用I/O屏障来防止这一事件的发生。

I/O屏障的目的是为了保证故障节点不能再继续读写某一服务的共用分区,实现的方式有多种。Kimberlite使用硬件开关来实现,当一个节点发生故障时,另一节点如果能侦测到,就会通过串行口发出命令,控制连接在故障节点电源上的硬件开关,通过暂时断电,而后又上电的方式使得故障节点被重启动。

I/O屏障有多种形式。对于支持SCSI Reserve/Release命令的存储设备,也可以用SG命令实现I/O屏障。正常节点应使用SCSI Reserve命令“锁住”共用存储设备,保证其不被故障节点读写。如果故障节点上的集群软件仍在运行,如发现共用存储设备已被对方锁住,就应把自己重启动,以恢复正常工作状态。

以上介绍了Linux集群技术的基本原理,也介绍了几种著名的软件。总之,Linux集群技术最大的发挥了PC机和网络的优势,可以带来可观的性能,是一种大有前途的技术。

2005年10月13日

来源:黑基论坛

一,路由器访问控制的安全配置
1,严格控制可以访问路由器的管理员。任何一次维护都需要记录备案。
2,建议不要远程访问路由器。即使需要远程访问路由器,建议使用访问控制列表和高强度的密码控制。
3,严格控制CON端口的访问。具体的措施有:
A,如果可以开机箱的,则可以切断与CON口互联的物理线路。
B,可以改变默认的连接属性,例如修改波特率(默认是96000,可以改为其他的)。
C,配合使用访问控制列表控制对CON口的访问。
如:Router(Config)#Access-list 1 permit 192.168.0.1
    Router(Config)#line con 0
    Router(Config-line)#Transport input none
    Router(Config-line)#Login local
    Router(Config-line)#Exec-timeoute 5 0
    Router(Config-line)#access-class 1 in
    Router(Config-line)#end
D,给CON口设置高强度的密码。
4,如果不使用AUX端口,则禁止这个端口。默认是未被启用。禁止如:
  Router(Config)#line aux 0
  Router(Config-line)#transport input none
  Router(Config-line)#no exec
5,建议采用权限分级策略。如:
Router(Config)#username BluShin privilege 10 G00dPa55w0rd
Router(Config)#privilege EXEC level 10 telnet
Router(Config)#privilege EXEC level 10 show ip access-list
6,为特权模式的进入设置强壮的密码。不要采用enable password设置密码。而要采用enable secret命令设置。并且要启用Service password-encryption。
7,控制对VTY的访问。如果不需要远程访问则禁止它。如果需要则一定要设置强壮的密码。由于VTY在网络的传输过程中为加密,所以需要对其进行严格的控制。如:设置强壮的密码;控制连接的并发数目;采用访问列表严格控制访问的地址;可以采用AAA设置用户的访问控制等。
8,IOS的升级和备份,以及配置文件的备份建议使用FTP代替TFTP。如:
Router(Config)#ip ftp username BluShin
Router(Config)#ip ftp password 4tppa55w0rd
Router#copy startup-config ftp:
9,及时的升级和修补IOS软件。

二,路由器网络服务安全配置
1,禁止CDP(Cisco Discovery Protocol)。如:
  Router(Config)#no cdp run
  Router(Config-if)# no cdp enable
2,禁止其他的TCP、UDP Small服务。
  Router(Config)# no service tcp-small-servers
  Router(Config)# no service udp-samll-servers
3,禁止Finger服务。
  Router(Config)# no ip finger
  Router(Config)# no service finger
4,建议禁止HTTP服务。
  Router(Config)# no ip http server
如果启用了HTTP服务则需要对其进行安全配置:设置用户名和密码;采用访问列表进行控制。如:
Router(Config)# username BluShin privilege 10 G00dPa55w0rd
Router(Config)# ip http auth local
Router(Config)# no access-list 10
Router(Config)# access-list 10 permit 192.168.0.1
Router(Config)# access-list 10 deny any
Router(Config)# ip http access-class 10
Router(Config)# ip http server
Router(Config)# exit
5,禁止BOOTp服务。
  Router(Config)# no ip bootp server
禁止从网络启动和自动从网络下载初始配置文件。
  Router(Config)# no boot network
  Router(Config)# no servic config
6,禁止IP Source Routing。
  Router(Config)# no ip source-route
7,建议如果不需要ARP-Proxy服务则禁止它,路由器默认识开启的。
  Router(Config)# no ip proxy-arp
  Router(Config-if)# no ip proxy-arp
8,明确的禁止IP Directed Broadcast。
  Router(Config)# no ip directed-broadcast
9,禁止IP Classless。
  Router(Config)# no ip classless
10,禁止ICMP协议的IP Unreachables,Redirects,Mask Replies。
  Router(Config-if)# no ip unreacheables
  Router(Config-if)# no ip redirects
  Router(Config-if)# no ip mask-reply
11,建议禁止SNMP协议服务。在禁止时必须删除一些SNMP服务的默认配置。或者需要访问列表来过滤。如:
  Router(Config)# no snmp-server community public Ro
  Router(Config)# no snmp-server community admin RW
  Router(Config)# no access-list 70
  Router(Config)# access-list 70 deny any
  Router(Config)# snmp-server community MoreHardPublic Ro 70
  Router(Config)# no snmp-server enable traps
  Router(Config)# no snmp-server system-shutdown
  Router(Config)# no snmp-server trap-anth
  Router(Config)# no snmp-server
  Router(Config)# end
12,如果没必要则禁止WINS和DNS服务。
  Router(Config)# no ip domain-lookup
  如果需要则需要配置:
  Router(Config)# hostname Router
  Router(Config)# ip name-server 202.102.134.96
13,明确禁止不使用的端口。
  Router(Config)# interface eth0/3
  Router(Config)# shutdown

三,路由器路由协议安全配置
1,首先禁止默认启用的ARP-Proxy,它容易引起路由表的混乱。
Router(Config)# no ip proxy-arp 或者
Router(Config-if)# no ip proxy-arp
2,启用OSPF路由协议的认证。默认的OSPF认证密码是明文传输的,建议启用MD5认证。并设置一定强度密钥(key,相对的路由器必须有相同的Key)。
  Router(Config)# router ospf 100
Router(Config-router)# network 192.168.100.0 0.0.0.255 area 100
! 启用MD5认证。
! area area-id authentication 启用认证,是明文密码认证。
!area area-id authentication message-digest
Router(Config-router)# area 100 authentication message-digest
Router(Config)# exit
Router(Config)# interface eth0/1
!启用MD5密钥Key为routerospfkey。
!ip ospf authentication-key key 启用认证密钥,但会是明文传输。
!ip ospf message-digest-key key-id(1-255) md5 key
Router(Config-if)# ip ospf message-digest-key 1 md5 routerospfkey
3,RIP协议的认证。只有RIP-V2支持,RIP-1不支持。建议启用RIP-V2。并且采用MD5认证。普通认证同样是明文传输的。
Router(Config)# config terminal
! 启用设置密钥链
Router(Config)# key chain mykeychainname
Router(Config-keychain)# key 1
!设置密钥字串
Router(Config-leychain-key)# key-string MyFirstKeyString
Router(Config-keyschain)# key 2
Router(Config-keychain-key)# key-string MySecondKeyString
!启用RIP-V2
Router(Config)# router rip
Router(Config-router)# version 2
Router(Config-router)# network 192.168.100.0
Router(Config)# interface eth0/1
! 采用MD5模式认证,并选择已配置的密钥链
Router(Config-if)# ip rip authentication mode md5
Router(Config-if)# ip rip anthentication key-chain mykeychainname
4,启用passive-interface命令可以禁用一些不需要接收和转发路由信息的端口。建议对于不需要路由的端口,启用passive-interface。但是,在RIP协议是只是禁止转发路由信息,并没有禁止接收。在OSPF协议中是禁止转发和接收路由信息。
! Rip中,禁止端口0/3转发路由信息
Router(Config)# router Rip
Router(Config-router)# passive-interface eth0/3
!OSPF中,禁止端口0/3接收和转发路由信息
Router(Config)# router ospf 100
Router(Config-router)# passive-interface eth0/3
5,启用访问列表过滤一些垃圾和恶意路由信息,控制网络的垃圾信息流。
Router(Config)# access-list 10 deny 192.168.1.0 0.0.0.255
Router(Config)# access-list 10 permit any
! 禁止路由器接收更新192.168.1.0网络的路由信息
Router(Config)# router ospf 100
Router(Config-router)# distribute-list 10 in
!禁止路由器转发传播192.168.1.0网络的路由信息
Router(Config)# router ospf 100
Router(Config-router)# distribute-list 10 out
6,建议启用IP Unicast Reverse-Path Verification。它能够检查源IP地址的准确性,从而可以防止一定的IP Spooling。但是它只能在启用CEF(Cisco Express Forwarding)的路由器上使用。
Router# config t
! 启用CEF
Router(Config)# ip cef
!启用Unicast Reverse-Path Verification
Router(Config)# interface eth0/1
Router(Config)# ip verify unicast reverse-path
四,路由器审核安全配置

五,路由器其他安全配置
1,及时的升级IOS软件,并且要迅速的为IOS安装补丁。
2,要严格认真的为IOS作安全备份。
3,要为路由器的配置文件作安全备份。
4,购买UPS设备,或者至少要有冗余电源。
5,要有完备的路由器的安全访问和维护记录日志。
6,要严格设置登录Banner。必须包含非授权用户禁止登录的字样。
7,IP欺骗得简单防护。如过滤非公有地址访问内部网络。过滤自己内部网络地址;回环地址(127.0.0.0/8);RFC1918私有地址;DHCP自定义地址(169.254.0.0/16);科学文档作者测试用地址(192.0.2.0/24);不用的组播地址(224.0.0.0/4);SUN公司的古老的测试地址(20.20.20.0/24;204.152.64.0/23);全网络地址(0.0.0.0/8)。
Router(Config)# access-list 100 deny ip 192.168.0.0 0.0.0.255 any log
Router(Config)# access-list 100 deny ip 127.0.0.0 0.255.255.255 any log
Router(Config)# access-list 100 deny ip 192.168.0.0 0.0.255.255 any log
Router(Config)# access-list 100 deny ip 172.16.0.0 0.15.255.255 any log
Router(Config)# access-list 100 deny ip 10.0.0.0 0.255.255.255 any log
Router(Config)# access-list 100 deny ip 169.254.0.0 0.0.255.255 any log
Router(Config)# access-list 100 deny ip 192.0.2.0 0.0.0.255 any log
Router(Config)# access-list 100 deny ip 224.0.0.0 15.255.255.255 any
Router(Config)# access-list 100 deny ip 20.20.20.0 0.0.0.255 any log
Router(Config)# access-list 100 deny ip 204.152.64.0 0.0.2.255 any log
Router(Config)# access-list 100 deny ip 0.0.0.0 0.255.255.255 any log
8,建议采用访问列表控制流出内部网络的地址必须是属于内部网络的。如:
Router(Config)# no access-list 101
Router(Config)# access-list 101 permit ip 192.168.0.0 0.0.0.255 any
Router(Config)# access-list 101 deny ip any any log
Router(Config)# interface eth 0/1
Router(Config-if)# description “internet Ethernet”
Router(Config-if)# ip address 192.168.0.254 255.255.255.0
Router(Config-if)# ip access-group 101 in
9,TCP SYN的防范。如:
A: 通过访问列表防范。
Router(Config)# no access-list 106
Router(Config)# access-list 106 permit tcp any 192.168.0.0 0.0.0.255 established
Router(Config)# access-list 106 deny ip any any log
Router(Config)# interface eth 0/2
Router(Config-if)# description “external Ethernet”
Router(Config-if)# ip address 192.168.1.254 255.255.255.0
Router(Config-if)# ip access-group 106 in
B:通过TCP截获防范。(这会给路由器产生一定负载)
Router(Config)# ip tcp intercept list 107
Router(Config)# access-list 107 permit tcp any 192.168.0.0 0.0.0.255
Router(Config)# access-list 107 deny ip any any log
Router(Config)# interface eth0
Router(Config)# ip access-group 107 in
10,LAND.C 进攻的防范。
Router(Config)# access-list 107 deny ip host 192.168.1.254 host 192.168.1.254 log
Router(Config)# access-list permit ip any any
Router(Config)# interface eth 0/2
Router(Config-if)# ip address 192.168.1.254 255.255.255.0
Router(Config-if)# ip access-group 107 in
11,Smurf进攻的防范。
Router(Config)# access-list 108 deny ip any host 192.168.1.255 log
Router(Config)# access-list 108 deny ip any host 192.168.1.0 log
12,ICMP协议的安全配置。对于进入ICMP流,我们要禁止ICMP协议的ECHO、Redirect、Mask request。也需要禁止TraceRoute命令的探测。对于流出的ICMP流,我们可以允许ECHO、Parameter Problem、Packet too big。还有TraceRoute命令的使用。
! outbound ICMP Control
Router(Config)# access-list 110 deny icmp any any echo log
Router(Config)# access-list 110 deny icmp any any redirect log
Router(Config)# access-list 110 deny icmp any any mask-request log
Router(Config)# access-list 110 permit icmp any any
! Inbound ICMP Control
Router(Config)# access-list 111 permit icmp any any echo
Router(Config)# access-list 111 permit icmp any any Parameter-problem
Router(Config)# access-list 111 permit icmp any any packet-too-big
Router(Config)# access-list 111 permit icmp any any source-quench
Router(Config)# access-list 111 deny icmp any any log
! Outbound TraceRoute Control
Router(Config)# access-list 112 deny udp any any range 33400 34400
! Inbound TraceRoute Control
Router(Config)# access-list 112 permit udp any any range 33400 34400
13,DDoS(Distributed Denial of Service)的防范。
! The TRINOO DDoS system
Router(Config)# access-list 113 deny tcp any any eq 27665 log
Router(Config)# access-list 113 deny udp any any eq 31335 log
Router(Config)# access-list 113 deny udp any any eq 27444 log
! The Stacheldtraht DDoS system
Router(Config)# access-list 113 deny tcp any any eq 16660 log
Router(Config)# access-list 113 deny tcp any any eq 65000 log
! The TrinityV3 System
Router(Config)# access-list 113 deny tcp any any eq 33270 log
Router(Config)# access-list 113 deny tcp any any eq 39168 log
! The SubSeven DDoS system and some Variants
Router(Config)# access-list 113 deny tcp any any range 6711 6712 log
Router(Config)# access-list 113 deny tcp any any eq 6776 log
Router(Config)# access-list 113 deny tcp any any eq 6669 log
Router(Config)# access-list 113 deny tcp any any eq 2222 log
Router(Config)# access-list 113 deny tcp any any eq 7000 log
13,建议启用SSH,废弃掉Telnet。但只有支持并带有IPSec特征集的IOS才支持SSH。并且IOS12.0-IOS12.2仅支持SSH-V1。如下配置SSH服务的例子:
Router(Config)# config t
Router(Config)# no access-list 22
Router(Config)# access-list 22 permit 192.168.0.22
Router(Config)# access-list deny any
Router(Config)# username BluShin privilege 10 G00dPa55w0rd
! 设置SSH的超时间隔和尝试登录次数
Router(Config)# ip ssh timeout 90
Router(Config)# ip ssh anthentication-retries 2
Router(Config)# line vty 0 4
Router(Config-line)# access-class 22 in
Router(Config-line)# transport input ssh
Router(Config-line)# login local
Router(Config-line)# exit
!启用SSH服务,生成RSA密钥对。
Router(Config)# crypto key generate rsa
The name for the keys will be: router.blushin.org
Choose the size of the key modulus in the range of 360 to 2048 for your General Purpose Keys .Choosing a key modulus greater than 512 may take a few minutes.
How many bits in the modulus[512]: 2048
Generating RSA Keys…
[OK]
Router(Config)#

2005年10月05日

GDI程序结构

A.计算和刷新整个客户区的代码全部安排在WM_PAINT消息中完成。这种结构适合功能模块很短小且执行速度

    很快的情况。

B.功能模块和客户区刷新模块分别在不同的子程序中实现,功能模块单独一个子程序完成,这个子程序可以由

    用户通过选择菜单项在WM_COMMAND消息中执行,也可以新建另外一个线程来完成。这种结构适合功能模

    块有些复杂的时候。

设备环境

不同设备的不同属性就构成了一个绘图的“环境”,这个绘图的“环境”就是WIN32编程中图形操作的对象,把它叫做“设备环境”。设备环境实际上是一个数据结构,结构中保存的就是设备的属性,当对设备环境进行图形操作的时候,Windows可以根据这些属性找到对应的设备进行相关的操作。

需要注意的是,“设备环境”只是一个环境,使设备属性的一组定义,程序输出的图形数据透过“设备环境”被定向到了具体的设备上,“设备环境”本身并不存储这些数据。

获取设备环境的句柄

BeginPaintEndPaint函数只能用在WM_PAINT消息中,因为只有这时才存在无效区域。

非WM_PAINT消息中主动绘画客户区,这时必须用另外的方法获取hDC,GetDCReleaseDC

; DcCopy.asm
; 测试设备环境的代码,将一个窗口 DC 对应的象素拷贝到另一个窗口中
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 使用 nmake 或下列命令进行编译和链接:
; ml /c /coff DcCopy.asm
; Link /subsystem:windows DcCopy.obj
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  .386
  .model flat,stdcall
  option casemap:none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include  windows.inc
include  gdi32.inc
includelib gdi32.lib
include  user32.inc
includelib user32.lib
include  kernel32.inc
includelib kernel32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ID_TIMER equ 1
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  .data?
hInstance dd  ?
hWin1  dd  ?
hWin2  dd  ?

  .const
szClass1 db ’SourceWindow’,0
szClass2 db ’DestWindow’,0
szCaption1 db ’请尝试用别的窗口覆盖本窗口!’,0
szCaption2 db ’本窗口图像拷贝自另一窗口’,0
szText  db ’Win32 Assembly, Simple and powerful !’,0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  .code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 定时器过程
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ProcTimer proc _hWnd,uMsg,_idEvent,_dwTime
  local @hDc1,@hDc2
  local @stRect:RECT

  invoke GetDC,hWin1
  mov @hDc1,eax
  invoke GetDC,hWin2
  mov @hDc2,eax
  invoke GetClientRect,hWin1,addr @stRect
  invoke BitBlt,@hDc2,0,0,@stRect.right,@stRect.bottom,\
   @hDc1,0,0,SRCCOPY
  invoke ReleaseDC,hWin1,@hDc1
  invoke ReleaseDC,hWin2,@hDc2
  ret

_ProcTimer endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 窗口过程
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ProcWinMain proc uses ebx edi esi,hWnd,uMsg,wParam,lParam
  local @stPs:PAINTSTRUCT
  local @stRect:RECT
  local @hDc

  mov eax,uMsg
  mov ecx,hWnd
;********************************************************************
  .if eax == WM_PAINT && ecx == hWin1
   invoke BeginPaint,hWnd,addr @stPs
   mov @hDc,eax
   invoke GetClientRect,hWnd,addr @stRect
   invoke DrawText,@hDc,addr szText,-1,\
    addr @stRect,\
    DT_SINGLELINE or DT_CENTER or DT_VCENTER
   invoke EndPaint,hWnd,addr @stPs
;********************************************************************
  .elseif eax == WM_CLOSE
   invoke PostQuitMessage,NULL
   invoke DestroyWindow,hWin1
   invoke DestroyWindow,hWin2
;********************************************************************
  .else
   invoke DefWindowProc,hWnd,uMsg,wParam,lParam
   ret
  .endif
;********************************************************************
  xor eax,eax
  ret

_ProcWinMain endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_WinMain proc
  local @stWndClass:WNDCLASSEX
  local @stMsg:MSG
  local @hTimer

  invoke GetModuleHandle,NULL
  mov hInstance,eax
  invoke RtlZeroMemory,addr @stWndClass,sizeof @stWndClass
;********************************************************************
  invoke LoadCursor,0,IDC_ARROW
  mov @stWndClass.hCursor,eax
  push hInstance
  pop @stWndClass.hInstance
  mov @stWndClass.cbSize,sizeof WNDCLASSEX
  mov @stWndClass.style,CS_HREDRAW or CS_VREDRAW
  mov @stWndClass.lpfnWndProc,offset _ProcWinMain
  mov @stWndClass.hbrBackground,COLOR_WINDOW + 1
  mov @stWndClass.lpszClassName,offset szClass1
  invoke RegisterClassEx,addr @stWndClass
  invoke CreateWindowEx,WS_EX_CLIENTEDGE,offset szClass1,offset szCaption1,\
   WS_OVERLAPPEDWINDOW,\
   450,100,300,300,\
   NULL,NULL,hInstance,NULL
  mov hWin1,eax
  invoke ShowWindow,hWin1,SW_SHOWNORMAL
  invoke UpdateWindow,hWin1
;********************************************************************
  mov @stWndClass.lpszClassName,offset szClass2
  invoke RegisterClassEx,addr @stWndClass
  invoke CreateWindowEx,WS_EX_CLIENTEDGE,offset szClass2,offset szCaption2,\
   WS_OVERLAPPEDWINDOW,\
   100,100,300,300,\
   NULL,NULL,hInstance,NULL
  mov hWin2,eax
  invoke ShowWindow,hWin2,SW_SHOWNORMAL
  invoke UpdateWindow,hWin2
;********************************************************************
; 设置定时器
;********************************************************************
  invoke SetTimer,NULL,NULL,100,addr _ProcTimer
  mov @hTimer,eax
;********************************************************************
; 消息循环
;********************************************************************
  .while TRUE
   invoke GetMessage,addr @stMsg,NULL,0,0
   .break .if eax == 0
   invoke TranslateMessage,addr @stMsg
   invoke DispatchMessage,addr @stMsg
  .endw
;********************************************************************
; 清除定时器
;********************************************************************
  invoke KillTimer,NULL,@hTimer
  ret

_WinMain endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:
  call _WinMain
  invoke ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  end start

2005年10月01日

         SetTimer 以55ms为精度,当指定一个时间间隔的时候,windows以和这个间隔最接近的55ms的整数倍来触发定时器。

         WM_TIMER是一条低级别的消息,不能依赖于他来规定某个事件必须在某个时刻被处理,另外,也不能依赖对定时器消息计数来确定已经过去了多少时间。

; Timer.asm
; 定时器的使用例子
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 使用 nmake 或下列命令进行编译和链接:
; ml /c /coff Timer.asm
; rc Timer.rc
; Link /subsystem:windows Timer.obj Timer.res
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  .386
  .model flat,stdcall
  option casemap:none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include 文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include  windows.inc
include  user32.inc
includelib user32.lib
include  kernel32.inc
includelib kernel32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ID_TIMER1 equ 1
ID_TIMER2 equ 2
ICO_1  equ 1
ICO_2  equ 2
DLG_MAIN equ 1
IDC_SETICON equ 100
IDC_COUNT equ 101
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  .data?
hInstance dd  ?
hWinMain dd  ?
dwCount  dd  ?
idTimer  dd  ?
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  .code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 定时器过程
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ProcTimer proc _hWnd,_uMsg,_idEvent,_dwTime

  pushad
  invoke GetDlgItemInt,hWinMain,IDC_COUNT,NULL,FALSE
  inc eax
  invoke SetDlgItemInt,hWinMain,IDC_COUNT,eax,FALSE
  popad
  ret

_ProcTimer endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; 窗口过程
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ProcDlgMain proc uses ebx edi esi,hWnd,uMsg,wParam,lParam

  mov eax,uMsg
;********************************************************************
  .if eax == WM_TIMER
   mov eax,wParam
   .if eax == ID_TIMER1
    inc dwCount
    mov eax,dwCount
    and eax,1
    inc eax
    invoke LoadIcon,hInstance,eax
    invoke SendDlgItemMessage,hWnd,IDC_SETICON,STM_SETIMAGE,IMAGE_ICON,eax
   .elseif eax == ID_TIMER2
    invoke MessageBeep,-1
   .endif
;********************************************************************
  .elseif eax == WM_INITDIALOG
   push hWnd
   pop hWinMain
   invoke SetTimer,hWnd,ID_TIMER1,250,NULL
   invoke SetTimer,hWnd,ID_TIMER2,2000,NULL
   invoke SetTimer,NULL,NULL,1000,addr _ProcTimer
   mov idTimer,eax
;********************************************************************
  .elseif eax == WM_CLOSE
   invoke KillTimer,hWnd,ID_TIMER1
   invoke KillTimer,hWnd,ID_TIMER2
   invoke KillTimer,NULL,idTimer
   invoke EndDialog,hWnd,NULL
;********************************************************************
  .else
   mov eax,FALSE
   ret
  .endif
  mov eax,TRUE
  ret

_ProcDlgMain endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:
  invoke GetModuleHandle,NULL
  mov hInstance,eax
  invoke DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULL
  invoke ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  end start