AIX命令详解:小型机运维与安全加固实战指南
2026/9/6 17:45:40 网站建设 项目流程

简介:面向 IBM Power Systems 服务器运维工程师与系统管理员的 AIX 5L V5.3 命令参考手册,定位为日常维护、系统管理及故障排查的速查工具书。全书 3756 页,按字母顺序收录了 accept/reject、acct 系列、acl 系列、adb、aixpert、alt_disk_install 等命令,覆盖 TCP/IP 连接管理、会计审计、访问控制列表、系统自动配置诊断、逻辑卷及备份恢复等关键功能;存储相关部分还涉及磁盘管理、RAID 配置与 LVM 操作,可辅助管理员完成从基础文件操作到复杂网络与存储规划的全流程工作。包内为单个 PDF 文件,大小 17.92MB,便于检索和跨设备阅读。已有 213 人学习下载,适合希望快速上手 AIX 命令并提升 Power 服务器运维水平的初中级工程师。 前阵子整理手头的 AIX 运维笔记,发现零散的 AIX 操作系统命令记录已经攒了不少。不少刚接触小型机的朋友总是问我:AIX 和 Linux 看起来差不多,命令是不是也差不多?这话只对了一半。AIX 作为 UNIX 家族里的商业系统,很多命令的用法、参数和输出风格跟 Linux 有相当大的差异。比如lsattrlscfgsmitty这些命令在 Linux 里根本没有;ps命令的参数风格也完全不同。如果直接拿着 Linux 的思维去敲 AIX,轻则命令报错,重则把系统配置改出问题。这也是为什么我特别想把 AIX 命令单独整理成“详解”级别的内容,而不是把 Linux 命令大全换个名字就完事。这篇博文适合小型机运维、Oracle DBA、系统集成工程师,以及刚从 Linux 转过来的同学,目标是帮你快速掌握最常用的 AIX 命令,覆盖巡检、排障、扩容、安全加固这些真实场景。

1. 为什么 AIX 命令值得单独整理一份详解

1.1 AIX 与 Linux 命令的差异到底有多大

AIX 和 Linux 虽然在很多基础命令上长得像,但骨子里差别很大。拿最常见的进程查看来说,Linux 里大家习惯用ps aux,在 AIX 上会直接报错或不完整,正确姿势是ps -ef。再看系统资源监控,Linux 用top,AIX 自带的是topas,功能更强但参数和交互方式不一样。文件系统层面,Linux 常见 ext4、xfs,AIX 默认是 jfs2,相关操作命令自然也不同。软件安装上,Linux 有 yum、apt,AIX 用installp和 RPM。

这些差异意味着不能靠“感觉”去敲 AIX 命令,尤其是涉及到系统配置和存储的命令,一旦用错,影响可能不可逆。比如在 AIX 中删除逻辑卷,rmlv不会像 Linux 的lvremove那样反复确认,一个回车可能就把数据卷删了。另外,AIX 的在线帮助体系也多了一层smitty菜单工具,很多人忽略它,但它在故障场景里反而比记命令更可靠。

1.2 这份命令详解适合谁、能解决什么问题

如果你是刚接手 AIX 小型机,或者公司里有一批 Power 服务器需要维护,这份内容就是给你准备的。阅读完你会掌握三件事:第一,日常巡检该敲哪些命令,怎么看输出;第二,系统报错、空间不足、性能变慢时,用什么命令快速定位;第三,等保、Oracle 数据库巡检里经常要执行的账号安全命令,具体怎么用。

我不打算把所有命令从头到尾罗列一遍,那样反而没有重点。真正的做法是把高频命令挑出来,结合我在实际服务器上踩过的坑,告诉你每条命令解决什么问题、有哪些容易忽略的细节。下面开始进入正题。

2. 系统信息与硬件、用户管理:从登入到排查的基础

2.1 一次看清算力配置:系统版本与硬件信息命令

登录 AIX 后第一件事,建议先确认当前系统版本和硬件配置。因为后续很多补丁、软件安装都依赖版本信息。常看的命令有下面这些:

命令作用示例输出
oslevel -s查看系统技术包版本(TL/SP)7100-05-06-2145
uname -a查看内核、主机名、机器架构AIX hostname 1 7 powerpc
prtconf查看内存、CPU、系统配置包含 Memory 大小、Processor 信息
lsdev -C列出系统已定义设备设备名+状态
lscfg -vp查看设备详细属性,含序列号、固件一长串 device 信息

举个例子,判断机器有多少颗物理 CPU,可以执行lsdev -Cc processor,它会列出 processor0、processor1 等,数量就是物理处理器个数。查询内存大小用prtconf | grep "Memory Size"。此外,lscfg -vp用在售后报修、核对序列号时非常关键,很多机型没有单独的序列号查询命令,用它最靠谱。

需要提醒的是,AIX 中查看设备状态要看lsdev -C输出里的AvailableDefinedAvailable表示设备可用,Defined表示系统认到但尚未配置,如果在设备列表里看到很多Defined,要注意是否驱动或资源没配好。

2.2 用户与资源限制:limits -a 到底怎么用

很多运维搜“aix查看用户限制limits -a”,其实ulimit -a只是查看当前 shell 进程的资源限制,并不是查看“系统用户配置”的最终途径。AIX 中资源限制的完整链路是:/etc/security/limits文件定义默认值,用户属性(如lsuser -f)可能覆盖它,当前登录 shell 的ulimit又会受启动脚本影响。

先看临时限制,直接执行:

$ ulimit -a time(seconds) unlimited file(blocks) 2097151 data(kbytes) 131072 stack(kbytes) 32768 memory(kbytes) 32768 coredump(blocks) 2097151 nofiles(descriptors) 2000 threads(per process) unlimited processes(per user) unlimited

每一行含义:time是 CPU 时间;file是单个文件大小上限;data是数据段大小;nofiles是最多打开文件数;processes是最多进程数。Oracle 安装时,经常要求把nofiles调大,否则会报 “unable to create semaphore” 或文件描述符不够。

但注意,ulimit -a只是当前会话值。要看系统里某个用户的完整限制,应该用lsuser -f <username>

$ lsuser -f oracle oracle: id=201 pgrp=oinstall ... fsize=2097151 cpu=-1 data=131072 stack=32768 core=2097151 nofiles=2000 processes=-1

修改用户限制,推荐用smitty chuser进入菜单操作,或者用chuser nofiles=65535 oracle。如果想全局改,编辑/etc/security/limits里的default段落。改完必须让用户完全注销再重新登录,不能只开一个新终端,因为登录会话启动时会读取这些配置。这里也体现了一个常见误区:直接执行ulimit -n 65535只对当前 shell 有效,换个连接就没了,永久生效一定要改用户属性或/etc/security/limits

3. 存储与文件系统:LVM 和日常空间维护命令

3.1 认识 AIX 的 LVM 命令体系

AIX 的 LVM 概念和 Linux 类似,都是 PV(物理卷)、VG(卷组)、LV(逻辑卷),但命令完全不同。Linux 用pvcreatevgcreatelvcreate,AIX 用mkvgmklv,并且多了 PP(物理分区)的概念。PP 的大小在创建卷组时通过-s指定,常用 64MB 或 256MB。

先熟悉查看命令:

  • lspv:列出所有物理卷,能看到 PV 属于哪个 VG。
  • lsvg:列出所有卷组名。
  • lsvg -l rootvg:查看 rootvg 内逻辑卷列表和挂载点。
  • lslv <lvname>:查看某个逻辑卷的详细属性,比如 PP 数、是否可镜像。

举个例子,新增一块磁盘并创建一个用于数据库备份的卷组datavg,挂载到/backup。实操步骤大致是:

  1. lspv确认新盘盘符,假设是hdisk1
  2. mkvg -y datavg -s 256 hdisk1-s 256表示 PP 大小为 256MB。
  3. crfs -v jfs2 -g datavg -a size=20G -m /backup,创建 JFS2 类型文件系统并挂载到/backup
  4. mount /backup或直接写入/etc/filesystems设置自动挂载。

这里的关键点是crfs会自动更新/etc/filesystems,但mount前要先确认挂载目录已创建。如果目录不存在,crfs会报错或创建失败。另外,在线扩容推荐chfs -a size=+2G /backup,JFS2 支持在线扩展,但不能在线收缩,所以扩容前务必确认好需求,别拍脑袋加空间。

3.2 文件系统扩容与空间排查

日常运维中,最常见的告警就是“文件系统使用率超过 80%”。AIX 上排查空间,第一步是df -k

$ df -k Filesystem 1024-blocks Free %Used Iused %Iused Mounted on /dev/hd4 5242880 1234567 76% 1234 1% / /dev/hd1 2621440 2100000 20% 33 1% /home /dev/hd9var 10485760 3000000 72% 5678 2% /var

%Iused是 inode 使用率,如果这个数字到 100%,即使空间有余也可能提示“文件系统忙”或无法创建新文件。排查大文件用du -kx /路径 | sort -rn | head-x表示不跨文件系统。

当发现某个文件系统空间不足时,如果 PV 有剩余空间,直接chfs -a size=+1G /var即可。如果没有剩余空间,需要先用extendvg rootvg hdiskX将新盘加入卷组,再执行chfs。注意,扩容根目录/时尤其要小心,别一次性加太多,最好用smitty chfs菜单,它会检查参数合法性。

曾经遇到过一个很隐蔽的问题:磁盘空间明明df显示满了,但du找不出大文件。最后发现是某个进程删除了日志文件但未释放句柄,导致空间一直被占用。AIX 下排查办法是fuser -u /var/log/messages,它会显示正在占用该文件的进程,或者用fuser -kx /var/log/messages强制杀死占用进程。这个思路比单纯删文件有效得多。

4. 网络、启动引导与系统安全加固

4.1 网络配置与连通性排查命令

网络排查在 AIX 上也是基本功。先看接口 IP 和状态:

  • ifconfig -a:查看所有网卡 IP、掩码、状态。
  • lsdev -Cc if:列出系统识别的网络接口,如en0en1
  • netstat -in:按接口显示收发包数量,用来判断丢包。
  • netstat -rn:显示路由表。
  • entstat -d ent0:查看物理网卡详细状态,包括速率、双工、错包。

如果你看到接口状态是DOWN,可以先ifconfig en0 up,或者用smitty tcpip配置。AIX 中修改 IP 很不建议直接改文件,用smitty tcpip最安全,它会同步更新网络配置文件和路由。

很多人搜“telnet命令怎么用”,在 AIX 上telnet通常是用来测试端口连通性的。比如要测数据库服务器 1521 端口通不通:

$ telnet 10.0.0.1 1521 Trying 10.0.0.1... Connected to 10.0.0.1. Escape character is '^]'.

出现Connected就说明端口通,输入quit退出。如果端口不通,会提示connect failed。不过我还是建议任何远程管理都改用ssh,telnet 明文传输密码,在生产环境风险很大。即使做端口测试,也可以改用nc -zv 10.0.0.1 1521

4.2 小型机启动引导与故障排查

AIX 小型机的启动引导和 x86 服务器不太一样,它有一套 SMS(系统管理服务)菜单。正常启动流程是:加电自检 -> 进入 SMS 或自动引导 -> 加载/boot-> 启动内核 -> 执行/etc/inittab里的服务。如果系统无法正常引导,可以看到主机的 LCD 操作面板上有错误代码,比如B181这类。

查看和修改启动顺序的命令是bootlist

# 查看当前正常模式启动序列 bootlist -m normal -o # 修改为 hdisk0 优先,hdisk1 作为备选 bootlist -m normal hdisk0 hdisk1

修改前一定记录原始序列,否则如果引导设备设置错误,机器可能直接起不来。如果系统已经起不来,需要接串口终端或 HMC,在开机自检时按1进入 SMS 菜单,选择正常模式引导设备和引导选项。

系统层面的故障排查要看错误日志:errpt -a显示所有错误详细信息;errpt -d H只看硬件相关错误;errpt -t PERM按类型过滤。比如:

$ errpt -d H IDENTIFIER TIMESTAMP T C RESOURCE_NAME DESCRIPTION F1234567 T0309150700 H S hdisk0 DISK OPERATION ERROR

出现硬件错误时,可以运行diag进入在线诊断工具,对内存、CPU、磁盘做测试。如果测试结果出现错误,优先检查硬件和微码版本,再考虑是否是驱动问题。

4.3 安全基线检查与等保相关命令

做 Oracle 数据库服务器等保测评或内部安全加固时,AIX 上常需要检查账号口令策略、用户权限和开放端口。常用的命令如下:

  • lsuser -f ALL:导出所有用户的属性,用于核对是否存在空密码、长期未改密。
  • lssec -f /etc/security/user -a minlen -a maxage:查看全局密码最小长度和最大有效期。
  • chsec -f /etc/security/user -s default -a minlen=8 -a maxage=5:设置密码最短 8 位、5 周内必须更换。
  • pwdadm -c <user>:清除用户密码标志,强制该用户下次登录时修改密码。
  • lssec -f /etc/security/user -s root -a rlogin:检查 root 是否允许远程登录,安全基线要求一般设置为false
  • find / -perm -4000 -o -perm -2000 -type f -print:列出所有 SUID/SGID 文件,排查是否有可疑提权文件。
  • netstat -an | grep LISTEN:查看当前监听端口,确认没有多余的高危端口。

安全检查时最容易被忽略的是/etc/security/user中的histsizemaxage参数,前者决定历史密码保留个数,后者决定密码最长使用周数。等保整改时经常要求histsize=10maxage=4这类值。修改后需要测试一个普通用户重新登录,确认策略已生效。

5. 性能监控、Shell 脚本技巧与乱码处理

5.1 性能监控命令实操

AIX 自带的性能监控神器是topas,它的界面比 Linuxtop信息更全,默认能看到 CPU 队列、内存、换页、磁盘、网络等。直接敲topas进入交互界面,按m可以看内存详细,按n看网络,按d看磁盘,按q退出。

如果想输出一段时间的趋势,用vmstatiostat

# 每 2 秒采样一次,连续 10 次 vmstat 2 10 # 显示磁盘 I/O 统计,每 2 秒一次 iostat -d 2 # 查看真实内存和页空间使用 svmon -G

vmstat输出里重点看r(运行队列长度)和wa(IO 等待)。如果r持续大于 CPU 核数,说明 CPU 资源紧张;如果pi/po大量出现,说明物理内存不足,系统在做换页;如果iostat% tm_act很高,磁盘可能存在瓶颈。

查消耗 CPU 最高的进程,可以用:

ps -eo pid,user,time,args | sort -k3 -rn | head -10

这条命令把第二列的time(CPU 时间)按数字排序列出前 10 个。另外,如果系统里装了nmon,也可以统计历史性能数据,不过现在大多数场景直接用topas已经够用。

5.2 Shell 脚本实用技巧:shift 命令与编码转换

AIX 默认的 shell 是 Korn Shell(ksh),和 Bash 略有区别,但核心语法兼容。写脚本处理参数时,shift命令很常用。它会把位置参数左移一位,也就是$2变成$1$#减 1。一个典型场景是解析命令行选项:

#!/bin/ksh if [ "$#" -eq 0 ]; then echo "Usage: $0 [-a] [-b]" exit 1 fi while [ "$#" -gt 0 ] do case "$1" in -a) echo "执行 A 操作" ;; -b) echo "执行 B 操作" ;; *) echo "未知参数: $1" ;; esac shift done

每次处理完$1后通过shift丢弃,循环就能逐项处理所有参数,不会死循环。这个技巧在 ksh 和 bash 里都有效。

再来说说“aix 乱码”这个高频搜词。乱码的根源几乎都是编码不一致。AIX 系统默认语言环境可能是Cen_US,传入的脚本或日志可能是 UTF-8 或 GBK,一旦终端编码和文件编码对不上,中文就变成锟斤拷。解决办法是:

# 查看当前语言环境 locale # 临时将终端语言改为 UTF-8 export LANG=en_US.UTF-8

如果文件本身是 GBK,但终端是 UTF-8,可以用iconv转换编码再查看:

iconv -f GB18030 -t UTF-8 文件名 > 文件名_utf8.txt

但要注意,AIX 自带的iconv可能需要安装额外的文件集,常见的文件集是bos.iconv.*。如果系统不支持,也可以直接用vi -b查看二进制模式,或者用cat -v查看不可见字符,先判断原始编码再做转换。另一个省事的办法是写脚本时统一在文件开头加export LANG=en_US.UTF-8,这样至少保证该脚本运行时输出不乱码。

6. 常见问题与排查技巧实录

6.1 用户资源限制不生效:limits 改了却没用

很多人改完/etc/security/limits里某个用户的nofiles后,发现重新登录还是旧值。排查顺序很重要。第一,用lsuser -f <user>看该用户是否已经有单独的限制属性,因为用户单独属性的优先级会覆盖全局文件。第二,检查/etc/security/user里的default段,是否设置了相同的参数。第三,查用户的.profile或系统的/etc/profile里有没有写ulimit覆盖语句。很多时候是启动脚本里写了一行ulimit -n 1024,把用户属性改得多大都会被压下来。

解决方法是优先使用smitty chuser修改用户属性,它会同步更新/etc/security/user/etc/security/limits,避免手动改不一致。改完后让用户执行exit完全退出登录,再重新登录验证。

6.2 文件系统显示满但找不到大文件

出现“df 显示 100%,但 du 找不到大文件”的情况,大概率是删除的文件还被进程占用。用fuser -u <目录>查看,比如fuser -u /var,它会输出 PID。如果确认是对应进程写日志占用,可以fuser -k <目录>结束进程,或者让应用团队重启应用释放句柄。如果搜索大文件,可以用:

find / -xdev -type f -size +1G -exec ls -lh {} \;

-xdev限制不跨文件系统,执行起来更快。另一个隐藏原因是 JFS2 的保留空间,AIX 文件系统默认会保留一部分空间给 root,df 显示 100% 但实际可用空间可能还有。可以用lsfs -q <挂载点>查看保留策略。

6.3 命令缺失:报 “ksh: xxx: not found”

AIX 的命令不是所有都在系统安装时就有,比如lsof可能需要单独安装。出现 not found 时,先用lslpp -l | grep <命令名>看文件集是否安装。如果未安装,用smitty installp安装对应的bos.文件集。有些命令在/usr/sbin下,要确认当前用户的PATH包含/usr/sbin。另外 AIX 中grep -P不支持,要用grep -E代替,这也是 Linux 转过来的同事经常踩的坑。

6.4 乱码问题的一个通杀思路

最后聊一下编码乱码。假设你已经按照前面方法设置LANG还是乱码,可以退一步,先不依赖语言设置,直接查文件内容十六进制:

od -A x -t x1z 文件名 | head -20

如果看到大量xxe4开头的字节,一般是 UTF-8;如果看到xxd6xxd0等 GBK 编码的常见中文字头,就尝试 GBK 系列转换。确定源编码后,再配合iconv转成终端支持的编码。对于运维现场,实在来不及转换的时候,可以用strings提取文件中的可读 ASCII,至少能先看临时日志的报错关键字。

6.5 实测心得:先记这三条命令

我带新人时总会让他们在测试机上先敲三遍命令:oslevel -slscfg -vplsvg -l rootvg。这三个命令能把系统版本、硬件、卷组结构一次看明白,很多排障都是从它们开始入手的。AIX 命令的难点从来不是死记参数,而是理解命令背后的系统模型。懂得查man、用smitty、看errpt,比背下所有命令都重要。新接触 AIX 的朋友,建议把你实际维护的机器上高频出现的命令整理成一页速查表,贴在工作台旁边。我第一次独立处理小型机故障时,就是靠errpt -d Hbootlist这两条命令定位到引导盘异常,少走了不少弯路。希望这份详解也能帮你少踩一些我当年踩过的坑。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询