在日常的Solaris系统运维中,掌握一套趁手的硬件查看和管理命令,往往能省下不少排查时间。下面整理了一份从硬件状态到系统应用的速查清单,覆盖了CPU、内存、磁盘、网络等核心模块,直接拿来用就行。
硬件系统
CPU与内存
查看CPU状态,可以用 psrinfo -v 看处理器详细信息,或者用 mpstat 列出多CPU负载情况。想看内存大小,prtconf | grep 'Memory' 最直接,/usr/platform/sun4u/sbin/prtdiag 也能获取更全面的硬件信息。
动态添加swap分区时,先用 mkfile 100m /home/swapfile 创建交换文件,再用 swap -a /path/filename 激活,最后用 swap -l 验证。想取消则用 swap -d,然后删掉文件即可。
网络与显卡
查看当前网卡速率,dmesg | grep Link 就能看到。调整X-Window的分辨率和刷新频率,在字符界面下运行 /kdmconfig 即可。
光驱和软驱的挂载,一般情况下启动卷管理服务:/etc/init.d/volmgt start 然后 volcheck。如果不行,就手动挂载:光驱用 mount -F hsfs -o ro /dev/dsk/c0t6d0s0 /cdrom,软驱用 mount -F pcfs /dev/diskette0 /floppy。Solaris下常见的文件系统类型:ufs(Unix文件系统,默认)、hsfs(CD-ROM只读)、pcfs(DOS格式软盘)。
磁盘与SCSI设备
SCSI设备的命名规则是 cWtXdYsZ,其中c是控制器号,t是SCSI目标地址,d是驱动器号,s是分区号(0-7)。例如 /dev/rdsk/c0t0d0s0 表示第一个控制器、第一个SCSI目标、第一个硬盘的第一个分区(根分区),c0t0d0s2 则表示整个硬盘(第三片)。
查看硬盘使用情况,df -k 可以看到已挂载文件系统的空间大小;quota -v 查看用户磁盘配额信息(如果启用了quota);du -sk * 查看目录使用情况,du -k | sort -n 可以快速找出最大的目录。
查看硬盘物理信息,format 命令可以查看硬盘类型和分区详情,iostat -E 看硬盘大小和型号,prtvtoc /dev/rdsk/c0t0d0s0 显示某个磁盘的分区状况。
系统内核与OBP
查看系统内核相关:isainfo 看内核位数,isainfo -kv 调整内核参数,modinfo 显示可载入的模块,prtconf 显示系统硬件配置,sysdef 显示可载入模块与硬件配置,ulimit -a 查看系统资源限制。
打印当前的OBP版本号,可以用 prtconf -V 或 /usr/platform/sun4u/sbin/prtdiag -v | grep OBP。在OK状态下用 .version 也能看到。
查看及启动系统的32位或64位内核模式:64位模式下用 isalist -v 和 isainfo -v 确认,启动时用 boot kernel/sparcv9/unix;32位模式类似,启动用 boot kernel/unix。
显示器刷新频率与网卡IP配置
测定当前显示器刷新频率:/usr/sbin/fbconfig -rev ?。
配置网卡IP的完整流程:先用 ifconfig -a 查看网卡名(比如hme0),然后 ifconfig hme0 unplumb 停止,ifconfig hme0 plumb 启用,再用 ifconfig hme0 inet 192.168.2.3 netmask 255.255.255.0 up 添加IP和子网掩码。接着修改几个配置文件:/etc/defaultrouter 添加默认路由IP,/etc/hostname.hme0 添加主机名,/etc/nodename 添加主机名,/etc/resolv.conf 配置域名和DNS,最后修改 /etc/nsswitch.conf 中的 hosts 为 file dns。
PROM状态命令与参数
在OK状态下常用指令:banner 显示机器配置(CPU、内存、hostid、MAC);probe-scsi 显示内部SCSI设备;probe-scsi-all 显示所有SCSI通道;probe-ide 显示IDE设备(U10/U5);devalias 显示设备别名(如cdrom、disk);printenv 显示环境变量;setenv 设置环境变量;set-default 恢复某个变量的默认值;set-defaults 恢复所有默认值;boot device option 启动主机(设备别名如cdrom或disk);eject cdrom|floppy 弹出介质;reset 复位;还有 test net、watch-net-all、show-devs 等。
网卡多IP与光纤硬盘
查找网卡名称及接口个数:grep network /etc/path_to_inst。
给一块网卡绑定三个不同子网掩码的IP,以hme0为例:编辑 /etc/hosts 添加IP和主机名对应关系,编辑 /etc/netmasks 添加子网掩码,创建 /etc/hostname.hme0、/etc/hostname.hme0:1、/etc/hostname.hme0:2 分别写入主机名,然后用 ifconfig 命令逐一配置IP,最后重启 init 6。
在PROM状态下查看光纤硬盘:按Stop+A进入OK状态,用 select 光纤卡设备名(可用show-devs查看),然后用 show-children 查看子设备。
双屏幕与磁盘分区
主机双屏幕设置:确认有两块显卡并安装驱动,编辑 /usr/dt/config/Xservers,注释掉最后一行,取消注释类似的那一行,重启即可。
查看硬盘参数及其物理地址:format 。显示磁盘分区情况:prtvtoc /dev/rdsk/c0t0d0s2。
系统应用
运行级别与进程工具
查看系统运行级别:who -r。
进程管理工具有一套在 /usr/proc/bin/ 目录下:pstop pid 停止进程,prun pid 重新启动,ptime pid 用微状态计算进程时间,pwait pid 等待进程终止,pcred pid 显示可信度(需root),pfiles pid 显示已打开文件信息(需root),pflags pid 显示跟踪标志(需root),pldd pid 显示链接的动态库(需root),pmap pid 显示地址映射(需root),psig pid 显示信号操作(需root),pstack pid 显示堆栈跟踪(需root),ptree pid 显示进程树,pwdx pid 显示当前工作目录(需root)。
补丁安装与root远程登录
patch软件包的安装:补丁目录名如101945-34,用 patchadd 105160-01 安装,patchrm 删除,patchadd -p 检查补丁情况,showrev -p 查看所有已安装的patch。
允许root用户远程登录:编辑 /etc/default/login,将 CONSOLE=/dev/console 这一行注释掉。
限定telnet登录数:Solaris pts缺省为47,修改 /etc/system,增加 set maxusers=数量 和 set pt_cnt=数量。
I节点、CPU占用、版本信息
显示已使用和未使用的i-node数目:df -F ufs -o i。
显示CPU使用率最高的进程:ps -eo pid,pcpu,args | sort +1n,按CPU占用率排序。
查看当前OpenWindows版本:showrev -w。查看当前CDE版本:/usr/ccs/bin/what /usr/dt/bin/dtmail。
文本处理与关机
去掉文本中的^M字符:cat test.dat | tr -d '\015' > test.out。
关机命令有几种:shutdown -gtime -ilevel -y、init 0、halt、Stop+A然后sync,以及直接关闭电源(紧急情况才用)。
即时消息与用户问题
发送即时消息:用 write username 向单个用户终端发消息,用 wall 发给所有系统用户,用 rwall -n netgroup 发给网络上的用户组。
普通用户无法启动Terminal、vi时,可以用 /etc/skel/local.cshrc 替换用户目录下的 .cshrc,重新登录即可。
关机时出现 unmount /vol 错误,是因为没卸载卷就关机,运行 umount -f /vol 后再关机。
find常用例子
find . -name hello -print 查找当前目录及子目录内叫hello的文件。find . -ctime +7 -print 找出七天内未被更动的文件。find . -size +2000m -print 找出大小超过2000字节的文件。find /tmp -user b1234567 -print 在/tmp下属于某用户的文件。find . -name '*.c' -exec rm {} 删除所有.c文件。find . -name test\* -print 显示文件名前4位为test的文件。
忘记root口令的恢复方法
方法一:放入Solaris光盘,Stop+A进入OK状态,输入 boot cdrom -s。进入单用户后,挂载root分区(如 mount /dev/dsk/c0t0d0s0 /tmp/xxx),运行csh并设置TERM,备份shadow文件,然后编辑shadow文件删除root的密码。重启后以空密码登录,再修改密码。如果没有shadow文件,就去掉 /etc/passwd 中root用户名后的x。
方法二:找一台有系统的Solaris机器,将目标磁盘挂载上去,重复上述步骤。
对于Solaris x86,用光盘启动到安装界面时退出,就会进入单用户模式,后续操作同上。
常见文件的解压与安装
Solaris下常见软件包格式:.gz 用 gunzip 或 gzip -d 解压后再用 tar;.tar 用 tar xvf;.zip 用 unzip;.Z 用 uncompress。解压后可能会生成 .local 文件(用 pkgadd -d xxx.local 安装)、一个包含pkg信息的目录(用 pkgadd -d . 安装)、或一个数字目录(Solaris patch,用 patchadd 安装)。
文件替换与终端设置
在vi中全文件替换:命令模式输入 :1,$s/diag/peng/g 将diag替换为peng。
TERM设置:本地显示器或Xmanager登录默认dtterm,telnet一般用ansi,当telnet修改文件时需要设置 TERM=VT100; export TERM。
系统版本、CDE、patch错误码
查看系统版本:uname -X 或 more /etc/release。
命令行进入CDE:/usr/dt/bin/dtlogin -daemon;exit 或 /etc/rc2.d/S92dtlogin start;exit。
查看patch安装错误代码含义:more /usr/sbin/patchadd。
远程CDE登录、语言环境、home权限
从一台Solaris 8登录到另一台CDE桌面:在CDE登录界面选择“登录远程主机”。
查看默认语言环境:more /etc/default/init。
更改/home权限:停掉autofs服务,或者将 /etc/auto_master 中的home行注释掉。
第三方软件应用或技巧
Bind版本、motd、dos2unix
查看当前bind版本:nslookup -class=chaos -q=txt version.bind。
在登录时显示系统消息:编辑 /etc/motd,删除旧消息,输入新内容。
去掉文本中的^M:dos2unix aaa.txt bbb.txt。
查找打包、删除旧文件、中文输入
将系统中7天前的txt文件查找并打包:find / -mtime -7 > aaa.txt,然后 tar cvf bbb.tar -I aaa.txt。
查找并删除比某一天更老的文件:find . ! -mtime -days | xargs rm -rf。
Solaris 9普通用户下无法输入中文:在用户目录的 .profile 中添加 stty cs8 -istrip。
防止telnet超时踢出、安装gcc
防止telnet发呆被踢:编辑 /etc/default/login,设置 TIMEOUT=300(0-900秒),修改后新登录的连接生效。
安装gcc:从sunfreeware.com下载相应平台的pkg包,用 pkgadd -d gcc* 安装。然后设置环境变量:对于bash/sh,在 .profile 中添加PATH和CC变量;对于csh,在 .cshrc 中添加path和setenv CC gcc。
列出目录、打开新terminal
列出当前目录下的目录:ls -al | grep '^d'。
用命令行打开新的terminal:/usr/dt/bin/dtterm。
X86或者Vmware
在Solaris 10 x86上挂接Windows 98分区的方法:假设硬盘接在IDE1的sla ve盘,挂接E盘用 mount -F pcfs /dev/dsk/c0d1p0:e /mnt。如果只有一个硬盘且是Master,挂D盘用 mount -F pcfs /dev/dsk/c0d0p0:d /mnt。挂接点可以换成其他空目录,如 /data。无错误提示即挂接成功。
