Chinaunix首页 | 论坛 | 博客
  • 博客访问: 452509
  • 博文数量: 191
  • 博客积分: 10987
  • 博客等级: 上将
  • 技术积分: 1924
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-22 09:52
文章分类

全部博文(191)

文章存档

2014年(10)

2011年(11)

2010年(38)

2009年(132)

分类: LINUX

2009-06-05 12:44:37

声明:下面的知识点滴是本人转载的,也有自己总结和原创的。集成了大家的智慧和自己的拙见而做了这个linux知识点滴,因为是知识点滴,数量又很多,所以没有写出来源或转载地址,非常抱歉。但您的辛勤劳动不会被遗忘。
 
1,问题:  找出系统所有软连接及的起始和最终目的
   答案:  find / -type l | xargs file
2,问题:  将字体加入到linux的可使用字体中
   答案:  首先把字体文件链接到存放字体的目录中
          cd /usr/share/fonts
          ln -s /home/fwolf/tools/fonts xpfonts
          cd xpfonts
          mkfontscale
          mkfontdir
          这样作和把字体拷贝到/usr/share/fonts的一个目录下的效果是一样的,后面的两个mkfont命令        是生成xpfonts目录下所包含的字体的索引信息。然后运行fc-cache命令更新字体缓存:
           fc-cache
3:问题   sudo 的使用方法
  答案   修改配置文件sudoers  执行命令visudo即可
         3.1 单个用户使用root 的权限 如: apple用户
             添加
             apple   ALL=(ALL)   ALL
            
             使用方法:
              [apple@localhost/]$sudo touch testfile
              password:         ####输入apple用户的密码
               即可创建所有者和所有组都为root的文件testfile
        3.2  组使用root权限  如:     apple组
             首先在/etc/group里修改
             在系统预设组wheel添加apple组
             然后visudo进入配置文件
             修改:
             #%wheel   ALL=(ALL)   ALL             ####拿掉注释即可
 4:yum
文件: yum.pdf
大小: 188KB
下载: 下载
5:禁止root远程登录
         
    
修改/etc/ssh/sshd_config文件。找如下的一句

#PermitRootLogin yes
改为如下的;

PermitRootLogin no

注意,要把前面的#号去掉。

重启sshd服务器

[root@linuxsir001 root]# service sshd restart
 
6:
Linux系统下MBR分区表的备份与恢复

      备份MBR分区
1.使用fdisk -l 确定MBR位置
2.备份MBR
dd if=/dev/sda of=/root/mbr bs=512 count=1
3.恢复MBR
dd if=/root/mbr of=/dev/sda bs=512 count=1
4.恢复分区表
dd if=/root/mbr of=/dev/sda bs=512 skip=446 count=66
注:mbr大小512 所以bs=512 count=1
bs=512 skip=446 count=66 用来确定分区表在备份文件中的位置

7:
      
查看linux硬件信息
  1, 主板信息  .查看主板的序列号  --------------------------------------------------  #使用命令  dmidecode | grep -i 'serial number'  #查看板卡信息  cat /proc/pci  ------------- ...
  1, 主板信息
  .查看主板的序列号
  --------------------------------------------------
  #使用命令
  dmidecode | grep -i 'serial number'
  #查看板卡信息
  cat /proc/pci
  --------------------------------------------------
  2, cpu信息
  --------------------------------------------------
  #通过/proc文件系统
  1) cat /proc/cpuinfo
  #通过查看开机信息
  2) dmesg | grep -i 'cpu'
  #
  3)dmidecode -t processor
  --------------------------------------------------
  3, 硬盘信息
  --------------------------------------------------
  #查看分区情况
  fdisk -l
  #查看大小情况
  df -h
  #查看使用情况
  du -h
  #
  hdparm -I /dev/sda
  #
  dmesg | grep sda
  --------------------------------------------------
  4, 内存信息
  --------------------------------------------------
  1) cat /proc/meminfo
  2) dmesg | grep mem
  3) free -m
  4) vmstat
  5) dmidecode | grep -i mem
  --------------------------------------------------
  5, 网卡信息
  --------------------------------------------------
  1) dmesg | grep -i 'eth'
  2) cat /etc/sysconfig/hwconf | grep -i eth
  3) lspci | grep -i 'eth'
  --------------------------------------------------
  6, 鼠标键盘和USB信息
  查看键盘和鼠标:cat /proc/bus/input/devices
  查看USB设备:cat /proc/bus/usb/devices
  查看各设备的中断请求(IRQ):cat /proc/interrupts
  7, 显卡信息
  --------------------------------------------------
  1)lspci |grep -i 'VGA'
  2)dmesg | grep -i 'VGA'
  --------------------------------------------------
  8, 声卡信息
  --------------------------------------------------
  1)lspci |grep -i 'VGA'
  2)dmesg | grep -i 'VGA'
  --------------------------------------------------
  7, 其他命令
  .用硬件检测程序kuduz探测新硬件:service kudzu start ( or restart)
  .dmesg (查看所有启动时检测到的硬件信息)
  .lspci (显示外设信息, 如usb,网卡等信息)
  .cat /etc/sysconfig/hwconf
  .mpstat
  8, 需要手动安装的工具
  lshw,hwinfo,hal-device-manager
8:正则表达式快速学习
正则表达式对于初学者来说有很大难度,简单的说一下它的概念,正则表达式就是符合某些复杂规则的字符串,记录文本规则的代码,我把自己做的一个概述笔记发布出来,以供大家分享.如题只是一个快捷的学习,深度不敢期求达到,只是起到一个抛砖引玉的作用.
1.^  $
"^a" 以a开头
"b$" 以b结尾
"^abc%"  以abc开头,以abc结尾的字符串
^$就表示是空行,中间什么都没有.
2.
"abc" 匹配包含abc的字符串
3.*    +     ?
这三个字符只管它前面的一个字符
* 前面的字符0个1个或者多个
+ 前面的字符1个或者多个,至少1个
? 前面的字符0个或者1个
"ab*" 匹配以a开头,以0个b;1个b或者多个b结尾的字符串
"ab+" 匹配以a开头,以1个b或者多个b结尾的字符串
"ab?" 匹配以a开头,以0个b或者1个b结尾的字符串
"a?b+$" 匹配以0个a或者1个a再加上一个以上b结尾的字符串
可以在大括号里面限制字符出现的个数:
"ab{2}" a后面要跟2个b
"ab{2,}" a后面跟2个b或者2个以上的b
"ab{2,5}" a后面跟2到5个b
--------------------------------------有的书写到,需要验证比如:----------------------------------------
g后面跟两个或者5个o,写为 g\{2,5\}
g后面跟两个以上的o,写为g\{2,\}
加上小括号的情况:
"a(bc)*" a后面跟0个1个或者多个bc
"a(bc){1,5}" a后面跟1个到5个bc
4.|  类似于or,或关系
"hi | hello"  匹配包含有hi或者hello的字符串
"(b | cd)ef" 匹配bef或者cdef的字符串
"(a | b)*c" 匹配包含有N个(包含0)a或者b以c结尾的字符串
5.   .
.代表所有的单一字符,但不代表"\n",如果要匹配"\n",那么使用"[\n.]"
"a.[0-9]"  1个a加上0到9间的任意一个数字
"^.{3}$"  3个任意字符结尾
所以假设要表达good  grtd gttd等时候,使用g..d就可以来表示
6.  []
中括号括住的只代表单一的字符
"[ab]"  匹配1个a或者1个b,等同于 "a | b"
"[a-d]"  匹配a到d的单一字符,等同于"a | b | c | d"或者[abcd]
"^[a-zA-Z]" 匹配大小写开头的字符串
"[0-9]%"  匹配形如x%的字符串
",[a-zA-Z0-9]$" 匹配以一个逗号加一个大小写字母或者数字结尾的字符串
在[]中使用^,就是将^后面所跟的字符排除.
"%[^a-zA-Z]%" 匹配含有两个%中间非字母的字符串
"[^a-z\.!^ -]" 表示没有小写字母,没有. 没有! 没有空格 没有-
7.总结
\< 匹配任何词开头的空字符串。
\> 匹配任何词结尾的空字符串。
当匹配类似于邮箱用户名的正则表达式时候,邮箱名中间可能会有-或者_,那么_和-的表达只能放在整个正则表达式的最前面或者最后面,放到中间不行,那样的话就会引起错误. 如果含有'-', 最好把它放在最前面或者最后面, or 或者一个范围的第二个结束点[a-d-0-9]中间的‘-’将有效.
()将部分内容合成一个单元组.比如 要搜索 glad 或 good 可以这样 'g(la|oo)d'
8.grep与正则表达式
grep
-a   以文本文件方式搜索
-c   计算找到的符合行的次数
-i   忽略大小写
-n   顺便输出行号
-v  反向输出,输出没有"搜寻字符串"的内容
-i  忽略大小写
-E, --extended-regexp 采用规则表示式去解释样式,等同于egrep,egrep是grep -E的别名.
-F  如果想在文件中找到包含星号字符的行,则需要使用此参数
[root@localhost tmp]# grep -F '*' /tmp/*
/tmp/123:*
[root@localhost tmp]# grep -F "*" /tmp/*
/tmp/123:*
/tmp/123:1*2
/tmp/123:1111*77
9.   \.  和 //
\.代表.
//在正则表达式中是特殊符号,所以要用\来转义
在windows DOS下生成的文本文件,换行会加上^M字符,处理windows的文本时候需要注意,将^M删除.在linux中^M等同于\r
比如:
cat dos_file | tr -d "\r" > linux_file
9:
 问:
 在Linux下,有两种方式设置ip地址

静态方式: 1.用ifconfig命令(暂时修改)2.直接修改配置文件/etc/sysconfig/networking/ifcfg-eth1指定静态ip

dhcp方式:修改配置文件/etc/sysconfig/networking/ifcfg-eth1    指定ip获取方式为dhcp

那如果我想在这两种方式之间进行切换,应该怎样实现了?除了修改上述配置文件外有没有其他的方法
答:
 
或者写三个配置文件,一个是静态的ifcfg-eth1.static、一个是dhcp的ifcfg-eth1.dhcp、一个就是ifcfg-eth1了。
想使用静态的,cp ifcfg-eth1.static ifcfg-eth1   service network restart
想使用动态的,cp ifcfg-eth1.dhcp ifcfg-eth1    service network restart

 

10:

  SSH显示中文乱码的解决方法

(1) 打开/etc/sysconfig/i18n
设置为:
LANG="zh_CN.GB2312"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.GB18030:zh_CN.GB2312:zh_CN.UTF-8:zh:en_US.UTF-8:en_US:en:ja_JP.UTF-8:ja_JP:ja"
SYSFONT="lat0-sun16"
SYSFONTACM="8859-15"

其中LANG="zh_CN.GB2312" 是必须的(如果你不想让中文乱码的话!!!)
其它的可以按照自已的需求来改变。
(2) 打开smb.conf
添加:

   display charset=cp936
    unix charset=cp936
    doc  charset=cp936

11:  MBR简单构成

   硬盘的前512Byte,MBR是前446byte,447-510共计64个字节是DPT(Disk Partition Table)分区表.因为总共只能有4个分区,每个分区占用16个字节,4个分区就是4*16=64。最后2位是奇偶校验,校验这个MBR和DPT是否完整.

    引导扇区在每个分区里都存在,但是我们常说的*主引导扇区*是硬盘的第一物理扇区。它由两个部分组成:即主引导记录MBR和硬盘分区表DPT

   MBR(Main Boot Record)--“主引导记录区”位于硬盘0磁道0柱面1扇区

   

12:netstat命令常用的可选项:
 
选项 说明
-r或--route 显示路由表
-a或--all 显示所有连接信息
-t或--tcp 显示TCP传输协议的连接状况
-u或--udp 显示UDP传输协议的连接状况
-c或--continuous 持续列出网络状态,监控连接情况
-i或--interfaces 显示网络界面信息表单
-l或--listening 显示监控中的服务器的Socket
-n或--numeric 使用数字方式显示地址和端口号
-p或--programs 显示正在使用Socket的程序识别码和程序名称
-s或--statistice 显示网络工作信息统计表
13:ACL
 
ACL可以对某个文件设置该文件具体的某些用户的权限,意思就是通过ACL可以对一个文件权限做扩展,可以不同的用户对某个文件有不同的权限。
语法
getfacl <文件名>
获取文件的访问控制信息
setfacl设置文件的acl
-m 修改文件的acl
-x  取消对文件的设置
setfacl –m  u:用户名:权限   文件名
setfacl –m  g:组    名:权限   文件名
setfacl –x 用户名 文件名
setfacl –x g:组名 文件名
大家新建一个文件,然后使用getfacl来查看这个文件 :getfacl file
一个文件的标准权限就这这样,没有ACL的情况下
 
现在我们把redhat用户加上一个RWX的权限:setfacl -m u:redhat:rwx file
 
和设置ACL前有哪些区别? 
用ll看,权限后面有个+就可能是设置了文件权限,所以没必要没个文件都用gefacl 去看
在查看acl的内容时候,我们看见多了行,redhat 用户有了rwx的权限 
有兴趣的可以测试. 
然后我们用相似的命令把redhat组也加进去.给他RW的权限:setfacl -m g:redhat:rw file
 
现在我们取消redhat用户的权限:setfacl -x redhat file
 
我们发现user:redhat:rwx这一行已经没有了哈~
现在我们也取消redhat组的权限:setfacl -x g:redhat file
 
现在group:redhat:rw-这一行也没有了哈。
注意,撤消ACL操作:
对用户直接加用户名字就可以了
对组,在前面加g:组名
14:终端类型

由于在很多朋友对终端的概念一直不是很清楚,因此写了这个FAQ,希望能够帮助大家理解这些概念。不妥之处,还请大家来信指出。

Q:/dev/console 是什么?

A:/dev/console即控制台,是与操作系统交互的设备,系统将一些信息直接输出到控制台上。目前只有在单用户模式下,才允许用户登录控制台。


Q:/dev/tty是什么?

A:tty设备包括虚拟控制台,串口以及伪终端设备。
/dev/tty代表当前tty设备,在当前的终端中输入 echo “hello” > /dev/tty ,都会直接显示在当前的终端中。


Q:/dev/ttyS*是什么?

A:/dev/ttyS*是串行终端设备。


Q:/dev/pty*是什么?

A:/dev/pty*即伪终端,所谓伪终端是逻辑上的终端设备,多用于模拟终端程序。例如,我们在X Window下打开的终端,以及我们在Windows使用telnet 或ssh等方式登录Linux主机,此时均在使用pty设备(准确的说应该pty从设备)。

Q:/dev/tty0与/dev/tty1 …/dev/tty63是什么?它们之间有什么区别?

A:/dev/tty0代表当前虚拟控制台,而/dev/tty1等代表第一个虚拟控制台,例如当使用ALT+F2进行切换时,系统的虚拟控制台为/dev/tty2 ,当前的控制台则指向/dev/tty2

Q:如何确定当前所在的终端(或控制台)?

A:使用tty命令可以确定当前的终端或者控制台。

Q:/dev/console是到/dev/tty0的符号链接吗?

A: 目前的大多数文本中都称/dev/console是到/dev/tty0的链接(包括《Linux内核源代码情景分析》),但是这样说是不确切的。根据内核文档,在2.1.71之前,/dev/console根据不同系统的设定可以链接到/dev/tty0或者其他tty*上,在2.1.71版本之后则完全由内核控制。目前,只有在单用户模式下可以登录/dev/console(可以在单用户模式下输入tty命令进行确认)。

Q:/dev/tty0与/dev/fb*有什么区别?

A: 在Framebuffer设备没有启用的系统中,可以使用/dev/tty0访问显卡。
15:ssh 指定登陆用户,如何让ssh只允许指定的用户登陆
如何让ssh只允许指定的用户登录
方法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个用户可以登陆
16:

日志远程备份小测
日志服务器:192.168.1.220【系统平台:Red Hat Enterprise Linux Server release 5.2 (Tikanga)】
测试机:192.168.2.206【系统平台:Red Hat Enterprise Linux Server release 5.3 (Tikanga)】
 
日志服务器:
1、编辑/etc/sysconfig/syslog:
SYSLOGD_OPTIONS="-m 0"
SYSLOGD_OPTIONS="-m 0 -r"
2、重启syslog服务,会发现UDP的514端口处于监听状态。
 
测试机:
1、编辑/etc/syslog.conf:
cron.*                                                  /var/log/cron
cron.*                                                  @192.168.1.220
2、重启syslog服务;
3、在crond处于启动状态的情况下,crontab -e
*/5 * * * * /usr/bin/free >> ~/free.log
4、逢5、逢10的时候,会发现/root/free.log在不断增大,但是/var/log/cron并没有任何的变化.
 
测试效果:
查看192.168.1.220的/var/log/cron,会发现:
Feb  8 16:20:01 192.168.2.206 crond[2328]: (root) CMD (/usr/bin/free >> ~/free.log)
Feb  8 16:25:08 192.168.2.206 crond[2341]: (root) CMD (/usr/bin/free >> ~/free.log)
Feb  8 16:30:01 192.168.2.206 crond[2345]: (root) CMD (/usr/bin/free >> ~/free.log)
 
17:
LINUX下的21个特殊符号
                 LINUX下的21个特殊符号
1. > 重定向输出符号。 
 
2. >>重定向输出符号,但有追加的功能。
 
3. 2>错误重定向输出符号,覆盖原文件内容。
 
4. 2>>错误重定向输出符号,有文件内容追加的功能。
 
5. * 匹配任意字符。
 
6. ?匹配任意一个字符。
 
7. | 管道符号。
 
8. & 后台进程符。
 
9. &&l逻辑与符号。用法:命令1 && 命令2 表示如果命令1执行成功,继续执行命令2。
 
10.|| 逻辑或符号。用法:命令1 | | 命令2 表示如果命令1执行成功,不执行命令2;但如果命令1执行失败才执行命令2。
 
11.逻辑非符号。排除指定范围。
 
12.[x-y]表示一定的范围。
 
13.# 注释符。
 
14.” ” 双引号表示把它所包含的内容作为普通字符,但` ` $ \ ‘ ‘ 几个符号除外。
 
15.’ ’ 单引号表示把它所包含的内容作为普通的字符,无特殊例外。
 
16.$ 变量符。
 
17.\ 转义字符。
 
18.’ ’倒引号,表示它所包含的内容。
 
19.;命令分隔符。
 
20.< 重定向输入符。
 
21.()表示整体执行命令。

17: linux下怎样查看硬盘型号和硬盘序列号

hdparm -i /dev/hda
 
18:netstat命令
 
 
 
netstat(network  statistics)主要用于检测主机的网络配置和状况, 可以查看显示网络连接 (进
站和出站)、系统路由表、网络接口状态。netstat 支持 Unix、Linux 及Windows 系统,功能也
是非常滴强大哈。
netstat 命令格式: 
netstat [可选项]
netstat 常用的可选项:
选项  说明
-r 或--route  显示路由表
-a 或--all  显示所有连接信息
-t 或--tcp  显示TCP传输协议的连接状况
-u 或--udp  显示UDP传输协议的连接状况
-c 或--continuous 持续列出网络状态,监控连接情况 
-i 或--interfaces 显示网络界面信息表单
-l 或--listening  显示监控中的服务器的 Socket
-n 或--numeric  使用数字方式显示地址和端口号
-p 或--programs  显示正在使用 Socket 的程序识别码和程序名称
-s 或--statistice 显示网络工作信息统计表


19:

Apache2.0 的DSO功能简要说明:

  1. 编译并安装已发布的Apache模块,比如编译mod_foo.cmod_foo.so的DSO模块:

    $ ./configure --prefix=/path/to/install --enable-foo=shared
    $ make install

  2. 编译并安装第三方模块,比如编译mod_foo.cmod_foo.so的DSO模块:

    $ ./configure --add-module=module_type:/path/to/3rdparty/mod_foo.c --enable-foo=shared
    $ make install

  3. 配置Apache以便以后安装共享模块:

    $ ./configure --enable-so
    $ make install

  4. apxs在Apache源码树以外编译并安装第三方模块,比如编译mod_foo.cmod_foo.so的DSO模块:

    $ cd /path/to/3rdparty
    $ apxs -c mod_foo.c
    $ apxs -i -a -n foo mod_foo.la

  5. 共享模块编译完毕后,必须在httpd.conf中用LoadModule指令使Apache启用该模块

20:有关于DSO和Apache

Apache HTTP服务器是一个模块化的软件,管理员可以通过选择服务器中包含的模块进行功能增减。

1:模块可以在编译时被静态包含进httpd二进制文件,

2:也可以编译成独立于httpd二进制文件的动态共享对象(DSO)。

DSO模块可以与服务器一起编译,也可以用Apache扩展工具(apxs)单独编译。

21: 关于安装源码安装php后,在启动apache时候报的一个错误,报错原因,解决方法。

bigb89: Hi, I am trying to install PHP and configure it to work with Apache. So far I have Apache 2 and MySQL 5 working just fine, but after intalling PHP I tried to restart Apache and I get the following error:(报错Cannot load /www/modules/libphp5.so into server: /www/modules/libphp5.so: cannot restore segment prot after reloc: Permission denied What's causing this error is the following line on my httpd.conf file: LoadModule php5_module        modules/libphp5.so. Could anyone explain to me what's causing this error and how can I fix it? Thanks in advance!

rlee923: Hi, I assume you are using one of those linux with Selinux enabled. The problem is caused by the security system - (原因selinux, blocking it's access to libph5.so. (解决方法chcon -t texrel_shlib_t /usr/local/apache/modules/libphp5.so )This is the magic line of the code, change the path so it points to the directory where you've installed apache2 if necessary.

22:

理解端口,系统服务,系统进程概念

端口

计算机“端口”是英文port的义译,可以认为是计算机与外界通讯交流的出口。其中硬件领域的端口又称接口,如:USB端口、串行端口等。软件领域的端口一般指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区。

在网络技术中,端口(Port)大致有两种意思:一是物理意义上的端口,比如,ADSL Modem、集线器、交换机、路由器用于连接其他网络设备的接口,如RJ-45端口、SC端口等等。二是逻辑意义上的端口,一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。

系统服务

在Windows 2000/XP/2003系统中,服务是指执行指定系统功能的程序、例程或进程,以便支持其他程序,尤其是低层(接近硬件)程序。通过网络提供服务时,服务可以在Active Directory(活动目录)中发布,从而促进了以服务为中心的管理和使用。

服务是一种应用程序类型,它在后台运行。服务应用程序通常可以在本地和通过网络为用户提供一些功能,例如客户端/服务器应用程序、Web服务器、数据库服务器以及其他基于服务器的应用程序。

系统服务的作用

(1)启动、停止、暂停、恢复或禁用远程和本地计算机服务。

(2)管理本地和远程计算机上的服务。

(3)设置服务失败时的故障恢复操作。例如,重新自动启动服务或重新启动计算机。

(4)为特定的硬件配置文件启用或禁用服务。

(5)查看每个服务的状态和描述。

进程

进程是指在系统中正在运行的一个应用程序;线程是系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元。对于操作系统而言,其调度单元是线程。一个进程至少包括一个线程,通常将该线程称为主线程。一个进程从主线程的执行开始进而创建一个或多个附加线程,就是所谓基于多线程的多任务。

系统服务和系统进程之间有些关系。有的进程要依靠系统服务才可以运行的。

系统服务和系统进程有的会打开一些端口,以取得某些功能。

"服务"是一种后台处理(或帮助)程序,主要是用来协调系统的某项或某些功能,以使系统更好用。进程是维持服务运行的程序组件,一个服务可能需要多个进程来支持,同样一个进程也可能同时支持多个服务运行。

23:

sun官网jdk各版本下载链接

每次要找一个jdk的版本的时候, 总是在sun的官网转得晕头转向也找不到,其它网站的又不敢下,终于不知道在那里点到了archrive(档案库),记录下来,sun的各java产品的各个版本都全
 
 

   
              
             
 
阅读(1197) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-06-30 02:00:36

GOOD