IBM AIX操作系统基础教程与AIX命令介绍

教程发布:风哥 教程分类:ITPUX技术网 更新日期:2022-02-12 浏览学习:1051

本帖最后由 paulyi 于 2014-1-25 13:36 编辑

IBM AIX操作系统基础教程与AIX命令介绍

**********************************************************************************************/
--AIX基本命令:
/**********************************************************************************************/ /************************************************************
--basic info:
************************************************************/
uname -Mu
uname -p # 显示芯片名称,例如:powerpc
uname -r # 显示操作系统的发行号
uname -s # 显示系统名,例如:AIX
uname -n # 显示节点名
uname -a # 显示系统名、节点名、版本、机器ID
uname -M # 显示型号,例如:IBM,7046-B50
uname -v # 显示操作系统版本
uname -m # 显示机器ID
hostname
df -k
which java
java -version
lsfs
smit chlicense 操作系统用户数
lsdev -CHc adapter 适配卡 (Adapter)
sysdumpdev -l Dump 设备
lsvg -p 逻辑卷 (Logical Volume)
lsdev -CHc disk 硬盘(7133硬盘pdiskIBM)
lsattr -El hdisk0
lspv -l hdisk0
查看当前系统的详细配置:
lscfg -pv
也可以显示某一设备的配置:
lscfg -vl rmt0
改变文件系统大小,例如:将/usr文件系统增加1000000字节:
chfs -a size=+1000000 /usr
mount CD:
mount -V cdrfs -o ro /dev/cd0 /cdrom
显示属于rootvg的所有硬盘:
lsvg -p rootvg
查看本机的IP地址:
Ifconfig -a

host Fully_Qualified_Host_Name
例如:host cyclop.austin.ibm.com
查找哪一个文件集(fileset)包含特定的文件,
例如:查找/usr/bin/vmstat属于哪一个文件集。
lslpp -w /usr/bin/vmstat
显示哪一个文件集包含/usr/bin/svmon:
Which_fileset svmon
显示哪些文件集需要安装或修改:
lppchk -v
/************************************************************
--os version,release,ML,package,patch:
--PTF用installp安装,APAR用instfix安装
************************************************************/
oslevel -s
lslpp -h bos.rte
instfix -i |grep ML
smitty installp
lslpp -ciq 列出系统上安装的IBM软件
lslpp -l | grep 'bos.adt.base'
lslpp -l | grep 'bos.adt.lib'
lslpp -l | grep 'bos.adt.libm'
lslpp -l | grep 'bos.perf.libperfstat'
lslpp -l | grep 'bos.perf.perfstat'
lslpp -l | grep 'bos.perf.proctools'
echo "#lslpp -l | grep 'rsct.'"
lslpp -l | grep 'rsct.basic.rte'
lslpp -l | grep 'rsct.compat.clients.rte'
lslpp -l | grep 'xlC.aix50.rte'
lslpp -l | grep 'xlC.rte'
lslpp -l | grep cluster
instfix -i | grep 'All filesets for IY' | grep 'IY58143'
instfix -i | grep 'All filesets for IY' | grep 'IY59386'
instfix -i | grep 'All filesets for IY' | grep 'IY60930'
instfix -i | grep 'All filesets for IY' | grep 'IY66513'
instfix -i | grep 'All filesets for IY' | grep 'IY70159'
instfix -i | grep 'All filesets for IY' | grep 'IY68989'
instfix -i | grep 'All filesets for IY' | grep 'IY68874'
instfix -i | grep 'All filesets for IY' | grep 'IY70031'
安装补丁集:
#/usr/sbin/instfix -a -ivk IY22854
查看哪些文件集没有打到相应的maitenance level:
instfix -icqk 5100-02_AIX_ML |grep ":-:" 或
oslevel -rl 5100-02
installp命令
安装在bos.net 软件包中的所有的filesets到/usr/sys/inst.images:
#installp avX d /usr/sys/inst.images bos.net
清除一个中断的安装和删除所有没有完成的安装
installp C
提交安装(commit):
installp cgx 或 smitty install_commit
删除所有未committed的在./reject.list中的updates,同时将系统带回到以前的maintenance level:
installp rBfx ./reject.lis 或 smitty install_reject
删除一个安装的软件:
installp ugp V2 bos.net.ipsec.rte 或 smitty install_remove
列示介质上的所有软件:
installp L d /dev/cd0

/************************************************************
--paging space info:
--other related commands:mkps、chps、rmps、swapon
************************************************************/
/usr/sbin/lsps -s
/usr/sbin/lsps -a
/************************************************************
--cpu:
************************************************************/
lsdev -C | grep -i processor|wc -l
lsattr -El proc0
lsattr -El proc*
lscfg | grep proc
prtconf | more
prtconf -c
prtconf -s
#pmcycles命令仅仅在被bos.pmapi支持的处理器上才被支持。从aix 5.1开始在bos.pmapi.pmsvcs包中。
pmcycles
pmcycles -m
/************************************************************
--memory:
************************************************************/
bootinfo -r
lsdev -C |grep mem
lsdev -CHc memory
lsattr -El mem0
lsattr-Elmem*
/usr/sbin/lsattr -E -l sys0 -a realmem
getconf REAL_MEMORY
prtconf | more
prtconf -m
svmon -P -t n -i m 每m秒钟按降序列出前n个最耗内存进程;有利于找出内存泄露的应用。
/************************************************************
--aio:
************************************************************/
#lslpp -l bos.rte.aio AIX的异步IO需要bos.rte.aio文件集的支持
lsdev -Cc aio
如何启用AIO:
mkdev -l posix_aio
#mkdev -l aio0
aio0 Available
#chdev -P -l aio0 -a autoconfig='available'
aio0 changed
如果需要将POSIX AIO 核心扩展函数库在系统启动时自动加载,可用:
smit chgposixaio
将菜单中的选项"State to be configured at system restart" 由 "defined"改为 "available",按下回车键后即可生效。
对于AIX传统的AIO,可通过
smit chgaio
以相同方法修改菜单中的选项。
查看aio的配置信息:
#lsattr -El aio0
autoconfig available STATE to be configured at system restart True
fastpath enable State of fast path True
kprocprio 39 Server PRIORITY True
maxreqs 4096 Maximum number of REQUESTS True
maxservers 10 MAXIMUM number of servers per cpu True
minservers 1 MINIMUM number of servers True
其中,maxreqs表示同一时刻所允许的异步 I/O 请求,包括已经在处理的异步 I/O 请求和等待处理的异步 I/O 请求。
maxservers和minservers参数指定了用于处理异步IO的进程数。默认的maxservers=10对于大多数系统来说,应该已经
足够了,这两个参数都是针对文件系统等的aio的,而raw设备的异步IO直接由内核进程完成,不依赖aioserver。
autoconfig必须设置为available才会在下次启动时自动激活AIO。
通过如下命令可以查询系统当前aioserver的个数,如果已经达到或者接近maxservers,则需要考虑增加该参数。
#pstat -a | grep aios | wc -l
从AIX5.2开始,支持两种模式的AIO,一种是传统模式的,一种是posix的
#pstat -a | grep aio
40 a 28088 1 28088 0 0 1 posix_aioserver
67 a 43002 1 43002 0 0 1 aioserver

Oracle在AIX平台上安装的时候要求必须开启AIO,在rootpre.sh脚本中包含了启动AIO的代码
# Asynchronous I/O
echo "Configuring Asynchronous I/O..." | tee -a $LOG
aio=`lsdev -C -t aio|awk '{print $2}'`
case $aio in
*Available*) echo "Asynchronous I/O is already defined" | tee -a $LOG
;;
*Defined*) mkdev -l aio0 | tee -a $LOG
chdev -P -l aio0 -a autoconfig='available'
;;
*) echo "Asynchronous I/O is not installed on this system." >> $LOG
cat << END Asynchronous I/O is not installed on this system. You will need to install it, and either configure it yourself using 'smit aio' or rerun the Oracle root installation procedure. END ;; esac 如何删除AIO: AIO是由内核提供支持的,首先将autoconfig改为defined然后重启系统 #chdev -P -l aio0 -a autoconfig='defined' 如果使用rmdev -dl aio0彻底删除了aio0的定义,则再次使用mkdev -l aio0的时候可能遭遇以下错误: mkdev: 0514-519 The following device was not found in the customized device configuration database: name = 'aio0' 这时需要先定义设备,才能添加设备,定义aio0设备可以通过smit aio选择Configure Defined Asynchronous I/O。 /************************************************************ --user resource limitation: ************************************************************/ pg /etc/security/limits ulimit -Ha ulimit -a lsattr -El sys0|grep maxuproc chdev -l sys0 -a maxuproc='5000' /************************************************************ --kernel info: ************************************************************/ /usr/sbin/bootinfo -b 检测上次正确引导的设备 /usr/sbin/bootinfo -K 查看系统内核 操作系统内核(ls -l /boot/unix) /usr/sbin/bootinfo -y 查看系统硬件所能支持的内核,处理器位数 /usr/sbin/bootinfo -p 查看机器是否支持64位内核,如果返回的是chrp,则表示硬件是64位的机器 /usr/sbin/bootinfo -r 查看系统内存 /usr/sbin/bootinfo -e 查看系统能否从磁带启动,1为可以,0为不能 /unix文件连接到一个可引导的映像。通过命令ls -l /unix查看: /unix -> /usr/lib/boot/unix_up # 32 bit uniprocessor kernel
/unix -> /usr/lib/boot/unix_mp # 32 bit multiprocessor kernel
/unix -> /usr/lib/boot/unix_64 # 64 bit multiprocessor kernel
prtconf -k 系统内核
prtconf -c cpu位数 硬件位数
getconf HARDWARE_BITMODE
getconf KERNEL_BITMODE
lslpp -L | grep 64bit
genkex | grep call
genkex | grep 64

[sj85_1][/]#bootinfo -y
64
[sj85_1][/]#bootinfo -K
32
[sj85_1][/]#lsattr -El proc0
state enable Processor state False
type PowerPC_RS64-III Processor type False

-y 显示的是硬件的位数
-K 显示的是操作系统的位数

上面的输出例子是64位的机器用了32位的内核的操作系统
可以把64位ENABLE起来,不过轻易不要这么做!

1.需要的文件集
bos.64bit是基本操作系统中构成64位运行环境的文件集。如果系统中未安装bos.64bit文件集,将没有/etc/methods/cfg64文件。
若/etc/methods/cfg64文件不存在,则SMIT菜单中将没有允许或禁止64位环境的选项。 可使用命令lslpp -l bos.64bit查看该
文件集是否已被安装。若未安装,则可从AIX4.3.3的安装盘中加装该文件集。但安装了该文件集并不能保证系统就能够运行64
位应用,系统是否能运行64位应用还取决于硬件环境。安装了bos.64bit文件集的32位机器上,虽然能够编译64位应用程序,但
却不能运行该应用。

2.硬件要求
要运行64位应用,必须要具备64位的硬件环境。在AIX4.3.3中,使用下述步骤确定系统是32位还是64位的硬件结构:
(1)以root用户身份登录
(2)执行命令:
# bootinfo -y
上述命令返回32或64,对应系统硬件结构为32位或64位。
另外,可以在任何版本的AIX中使用命令:
# lsattr -El proc0
该命令将返回系统处理器的类型。64位处理器的类型列示如下:
PowerPC_RS64
PowerPC_RS64 II
PowerPC_RS64 III
PowerPC_Power3
PowerPC_Power3 II
可以对应上面的类型列表确定系统的硬件结构是32位还是64位。

3.内核扩展与64位内核
确定系统是否加载了64位的内核扩展,使用命令:
# genkex |grep 64
若系统加载了64位的内核扩展,将返回类似下一行的信息:
149bf58 a3ec /usr/lib/drivers/syscalls64.ext
但加载了64位的内核扩展并不说明该系统的内核为64位,只有从AIX5.1开始才有64位内核。64位内核扩展只是允许在32位内核中
编译64位应用。如果32位内核具有64位处理器,则syscalls64.ext文件集将允许运行64位应用。但在AIX5.1中,64位的内核和64位
的处理器将使64位的应用具有更好的性能。

在AIX5.1中,将32位的内核改为64位的内核,可以执行下述命令:
# ln -sf /usr/lib/boot/unix_64 /unix
# ln -sf /usr/lib/boot/unix_64 /usr/lib/boot/unix
# lslv -m hd5
# bosboot -ad /dev/<启动硬盘名>
# shutdown -Fr

在AIX5.1中,将64位的内核改为32位的内核,可以执行下述命令:
# ln -sf /usr/lib/boot/unix_mp /unix
# ln -sf /usr/lib/boot/unix_mp /usr/lib/boot/unix
# lslv -m hd5
# bosboot -ad /dev/<启动硬盘名>
# shutdown -Fr

4.32位与64位的兼容性
大多数情况下,在64位的硬件结构上运行32位的应用是没有问题的,因为64位的硬件兼容64位及32位的软件。但是,32位的硬件上不能运行64位的软件。
而且,AIX 4.3.3上的32位应用可直接运行于AIX 5.1上,但AIX 4.3.3上的64位应用必须在AIX 5.1上经过重新编译后才可运行。

vmtune/vmo -a | grep 'perm'
vmtune/vmo -a | grep 'client'
#vmtune/vmo -p 15 -P 30
vmo:
minfree = "1440″
maxfree = "1536″
maxperm% = "20″
maxclient% = "20″
minperm% = "5″
v_pinshm = "1″
ioo:
j2_nBufferPerPagerDevice = "512″
vmtune 样本程序正在逐渐淘汰,将来的发行版将不支持该样本程序。它会被 vmo 命令(对于所有的纯 VMM 参数)和 ioo 命令(对于所有与 I/O 有关的参数)
所替代,这两个命令能用于设置先前由 vmtune 设置的大部分参数。-v 标志已经添加到 vmstat 以替换 -A标志,-A 标志显示计数器值而不是调整参数。
对于AIX 5.2,为了帮助过渡提供了一个调用 vmo 和 ioo 的兼容性脚本。

/************************************************************
--network configuration:
************************************************************/
no -a | grep 'rfc1323'
no -a | grep 'ipqmaxlen'
no -a | grep 'sb_max'
no -a | grep 'udp_sendspace'
no -a | grep 'udp_recvspace'
no -a | grep 'tcp_sendspace'
no -a | grep 'tcp_recvspace'
routerevalidate = "1″
tcp_finwait2 = "240″
tcp_recvspace = "262144″
tcp_sendspace = "262144″
rfc1323 = "1″
netstat -s | grep "socket buffer overflows"

/************************************************************
--raw device:
************************************************************/
# sar -b 1 3
AIX 6f1 3 4 00023A0F4C00 06/19/02
18:16:30 bread/s lread/s %rcache bwrit/s lwrit/s %wcache pread/s pwrit/s
18:16:31 0 0 0 0 0 0 0 0
18:16:32 0 0 0 0 0 0 0 0
18:16:33 0 0 0 0 0 0 0 0
Average 0 0 0 0 0 0 0 0
其中bread/s 和bwrit/s显示了块裸设备(block raw device)I/O操作的数目。pread/s 和pwrit/s显示了字符裸设备(character raw device)I/O操作的数目。

/****************************************************************************************************/
/*********************************************installation*******************************************/
/****************************************************************************************************/
/usr/sbin/lsattr -E -l sys0 -a realmem
/usr/sbin/lsps -a
oslevel -r
5.1(5L) required patches/packages:
instfix -i | grep 'All filesets for IY' | grep 'IY26778'
instfix -i | grep 'All filesets for IY' | grep 'IY28766'
instfix -i | grep 'All filesets for IY' | grep 'IY28949'
instfix -i | grep 'All filesets for IY' | grep 'IY29965'
instfix -i | grep 'All filesets for IY' | grep 'IY30150'
instfix -i | grep 'All filesets for IY' | grep 'IY59082'
instfix -i | grep 'All filesets for IY' | grep 'IY22854'
lslpp -l | grep 'bos.adt.base'
lslpp -l | grep 'bos.adt.lib'
lslpp -l | grep 'bos.adt.libm'
lslpp -l | grep 'bos.perf.perfstat'
lslpp -l | grep 'bos.perf.libperfstat'
set AIXTHREAD_SCOPE=S in the environment:
export AIXTHREAD_SCOPE=S
IY26778(5100-01)
IY28766(5100-01)
IY28949(5100-01)
IY29965(5100-02)
IY30150(5100-02)
IY59082 refer to Note 285158.1
Maint Level 1 and IY22854
bos.adt.base
bos.adt.lib
bos.adt.libm
bos.perf.perfstat
bos.perf.libperfstat

Oracle Environment ORACLE_BASE=/u01/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/9.2; export ORACLE_HOME
ORACLE_SID=ora9; export ORACLE_SID
ORACLE_TERM=vt100; export ORACLE_TERM
NLS_LANG=american_america.zhs16gbk; export NLS_LANG
ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data; export ORA_NLS33
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib; export LD_LIBRARY_PATH
LIBPATH=$ORACLE_HOME/lib:$ORACLE_HOME/ctx/lib; export LIBPATH
CLASSPATH=$ORACLE_HOME/JRE/lib:$ORACLE_HOME/JRE/lib/rt.jar:$ORACLE_HOME/jlib
CLASSPATH=$CLASSPATH:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
PATH=/usr/java14/jre/bin:$ORACLE_HOME/bin:$PATH; export PATH
AIXTHREAD_SCOPE=S;export AIXTHREAD_SCOPE #aix 4.3以及5.1;在Aix 5.2以上,Note 259983.1
NUM_SPAREVP=1;export NUM_SPAREVP #aix 4.3以及5.1;在Aix 5.2以上,Note 259983.1

1、需要修改用户能打开的最大进程数目
默认每个用户最大只能打开128个进程数目,而oracle用户一般需要打开上千个进程。
#chdev -l sys0 -a maxuproc=’2000′
sys0 changed
以上修改,可以通过如下命令来查看
#lsattr -El sys0

2、修改用户限制
主要是Oracle用户,可以通过如下命令查看当前限制
$ulimit -a
time(seconds) unlimited
file(blocks) 4194302
data(kbytes) unlimited
stack(kbytes) 4194304
memory(kbytes) unlimited
coredump(blocks) 4194302
nofiles(descriptors) 4000
具体信息可以参考如下文件
#more /etc/security/limits
……
default:
fsize = 2097151
core = 2097151
cpu = -1
data = 262144
rss = 65536
stack = 65536
nofiles = 2000
……
oracle:
fsize = 4194302
core = 4194302
data = -1
rss = -1
stack = -1
nofiles=4000
注意,-1是无限制
要修改如上限制,可以采用命令如
#chuser data=’-1′ rss=’-1′ stack=’-1′ oracle
#chuser nofiles=4000 oracle
或者是smit chuser来操作

3、修改系统参数
主要是性能需要内存管理
#vmo -p -o v_pinshm=1 #Oracle需要,pin住SGA的需要
#vmo -p -o minperm%=5 #百分比% ,文件系统cache最小内存使用
#vmo -p -o maxclient%=20 #百分比% ,jfs2与nfs最大文件系统cache使用
#vmo -p -o maxperm%=20 #百分比% ,普通文件系统最大文件系统cache使用
#vmo -p -o minfree=1200 #120*cpu个数 ,内存空闲
#vmo -p -o maxfree=1280 #128*cpu个数 ,内存空闲

内存管理可选
#vmo -p -o strict_maxperm=0 #默认是0,建议不要改到1,1为硬限制,可能会触发bug
#vmo -p -o strict_maxclient=0 #默认1,可以改为0,一般不改
文件系统
#ioo -p -o j2_nBufferPerPagerDevice=512
ha的需求,HA情况下建议修改,但也不是一定要求

#no -p -o routerevalidate=1
#no -p -o tcp_finwait2=240
#no -p -o tcp_recvspace=262144
#no -p -o tcp_sendspace=262144
#no -p -o rfc1323=1
其中,-p表示修改对当前与重新启动生效,如果只能重新启动或者重新连接生效的,将提示重起或者重新连接后生效,
如果是-r参数,则表示只是重新启动后生效。修改结果可以参考文件

#more /etc/tunables/nextboot

vmo:
minfree = "1440″
maxfree = "1536″
maxperm% = "20″
maxclient% = "20″
minperm% = "5″
v_pinshm = "1″

ioo:
j2_nBufferPerPagerDevice = "512″
no:
routerevalidate = "1″
tcp_finwait2 = "240″
tcp_recvspace = "262144″
tcp_sendspace = "262144″
rfc1323 = "1″

4、设置AIXTHREAD_SCOPE=S
控制争用作用域。P 意味着基于进程的争用作用域(M:N)。S 意味着基于系统的争用作用域(1:1)。
echo $AIXTHREAD_SCOPE(这是由内部打开的,因此初始的缺省值不可以由命令 echo 看到)
AIXTHREAD_SCOPE={P|S},用命令export AIXTHREAD_SCOPE = {P|S} 更改会在 shell 中立即生效。在退出这个 shell 之前一直有效。
当加上命令 AIXTHREAD_SCOPE={P|S} 到文件 /etc/environment 时会产生持久的变化。
在ORACLE 9i Aix 4.3 or Aix 5.1的环境下,设置该变量可以大幅度的减少进程内存的使用量,在Aix 5.2以上,请参考另外一种方法,
IY49415 Oracle patch p3028673,详细信息参考oracle bug 3028673,Note 259983.1。

本文标签:
网站声明:本文由风哥整理发布,转载请保留此段声明,本站所有内容将不对其使用后果做任何承诺,请读者谨慎使用!
【上一篇】
【下一篇】