硬件系统:
1、如何查看cup的状态? 作者:南非蜘蛛
# psrinfo -v
# mpstat 可以列出多cpu负载的状态
2、如何查看内存? 作者:南非蜘蛛
# prtconf | grep 'Memory' 可以查看内存的多少.
# /usr/platform/sun4u/sbin/prtdiag
3、如何动态添加swap分区? # $su - root ----- 成为超级用户
# mkfile 100m /home/swapfile ----- 创建100m的Swap文件
# /usr/sbin/swap -a /path/filename ----- 激活Swap文件
# /usr/sbin/swap -l ----- 验证swap文件
# /usr/sbin/swap -d /path/filename ----- 取消swap文件
# rm -rf /home/swapfile ----- 删除swap文件
4、如何查看当前网卡是以何种速率起来的? 作者:南非蜘蛛
# dmesg |grep Link
5、如何调整x-window的分辨率和刷新频率?
字符界面登陆,运行:#/kdmconfig
6、如何使用光、软驱?
一般情况下用:
# /etc/init.d/volmgt start
# volcheck
以上方法不行,用:
# /etc/init.d/volmgt stop
# mount -F hsfs -o ro /dev/dsk/c0t6d0s0 /cdrom --挂接光驱
# mount -F pcfs /dev/diskette0 /floppy --挂接软驱
solaris定义系统磁盘文件系统说明:
ufs ? UNIX文件系统。是Solaris缺省的文件系统。
hsfs ? 高密度CD-ROM文件系统,是只读文件系统。
pcfs ? PC文件系统,支持DOS格式化的软盘
7、SCSI设备的命名规则是什么?
带有总线控制器的硬盘的使用,下面列出了总线控制器的硬盘命名习惯:
cWtXdYsZ
c Logical controller number
t Physical bus target number
d Drive number
s Slice (or partition) number (0 to 7)
例如:
/dev/rdsk/c0t0d0s0 该原始接口对应第一个控制器的第一个SCSI目标地址的第一个硬盘的第一片(根)
/dev/rdsk/c0t0d0s2 该原始接口对应第一个控制器的第一个SCSI目标地址上的第一个硬盘的第三片(表示整上硬盘)
8、如何查看硬盘的使用情况? 作者:南非蜘蛛
# df -k 可以看到已安装的文件系统的空间大小及剩余空间大小。
# quota -v 查看用户的磁盘空间信息,如果你用quota限制了用户空间大小的话。
# du -sk * 查看目录的使用情况
# du -k | sort -n 可以迅速发现那个目录是最大的。
9、如何查看硬盘物理信息?
# format 这个命令也可以查看硬盘的类型和分区的详细情况
# iostat -E看硬盘的大小和型号
# prtvtoc /dev/rdsk/c0t0d0s0 显示某个磁盘的分区状况
10、查看系统内核命令。 作者:南非蜘蛛
# isainfo 看内核的bit,
# isainfo -kv 调整内核
# modinfo 显示可载入的模组
# prtconf 显示系统硬件配置(周边设备)
#sysdef 显示可载入的模组,硬件配置与一些可以调整的核心参考值
#ulimit -a
11、打印当前的OBP版本号 作者:gunguymadman007
# prtconf ?V
OBP 3.20.0 2000/10/24 10:47
# /usr/platform/sun4u/sbin/prtdiag ?v | grep OBP
OBP 3.20.0 2000/10/24 10:47 POST 6.1.0 2000/10/24 10:49
ok. .version
Release 3.20 Version 0 created 2000/10/24 10:47
OBP 3.20.0 2000/10/24 10:47
POST 6.1.0 2000/10/24 10:49
OBDIAG 4.5.1 2000/10/24 10:48
12、查看及启动系统的32位或64位内核模式 作者:gunguymadman007
64位模式
# isalist ?v
sparcv9+vis sparcv9 sparcv8plus+vis sparcv8plus sparcv8 sparcv8-fsmuld sparcv7 sparc
# isainfo ?v
64-bit sparcv9 applications
32-bit sparc applications
# isainfo ?b
64
启动64位内核模式
ok. boot kernel/sparcv9/unix
32位模式
# isalist ?v
sparcv8plus+vis sparcv8plus sparcv8 sparcv8-fsmuld sparcv7 sparc
# isainfo ?v
32-bit sparc applications
# isainfo ?b
32
启动32位模式
ok. boot kernel/unix
13、测定当前的显示器刷新频率
# /usr/sbin/fbconfig ?rev ?
14、如何配置网卡ip?
# ifconfig -a --查看网卡,例如是hme0
# ifconfig hme0 unplumb --停止网卡
# ifconfig hme0 plumb --起用网卡
# ifconfig hme0 inet 192.168.2.3 netmask 255.255.255.0 up --添加ip、子网掩码
# vi /etc/defaultrouter 添加默认路由的ip
# vi /etc/hostname.hme0 添加主机名
# vi /etc/nodename 添加主机名
# vi /etc/resolv.conf
domain china.com 你的域名
nameserver 202.106.0.20 你使用的nds ip
# vi /etc/nsswitch.conf 更改 hosts:file dns
15、 PROM状态命令与参数
格式: OK> 指令
命令 说明
banner 显示当前机器配置状况,CPU,内存,hostid,EtherNet
probe-scsi 显示内部SCSI通道所挂接设备
probe-scsi-all 显示所有SCSI通道及所挂接设备
probe-ide 显示所有IDE通道及所挂接设备(针对U10,U5)
devalias 显示设备别名,如 cdrom,disk,disk0,disk1等
printenv 无参数,显示环境变量或
参数为环境变量名 如: printenv auto-boot?
setenv 设置环境变量,如: setenv auto-boot? false
set-default 恢复环境变量预定值 如:set-default auto-boot?
set-defaults 恢复所有环境变量预定值
boot device option 启动主机
设备别名: cdrom 或 disk
设备名: /pci@1f,4000/scsi@3,1/disk@6,0:f
option -r 设备配置
-s 单用户
eject cdrom|floppy 弹出cdrom或floppy
reset 复位
test net
watch-net-all
show-devs
16、查找网卡名称及接口个数 作者:阿丙
# grep network /etc/path_to_inst
17、如何一块网卡帮定三个ip,并且子网掩码不同?
举例说明,网卡名hme0:
# vi /etc/hosts
127.0.0.1 localhost
192.168.2.1 dbs loghost
192.168.9.15 dd
192.168.9.65 aa
# vi /etc/netmasks
192.168.2.0 255.255.255.0
192.168.9.0 255.255.255.192
192.168.9.64 255.255.255.252
#vi /etc/hostname.hme0
dbs
#vi /etc/hostname.hme0:1
dd
#vi /etc/hostname.hme0:2
aa
# ipconfig hme0 inet 192.168.2..1 netmask 255.255.255.0 up
# ipconfig hme0:1inet 192.168.9.15 netmask 255.255.255.192 up
# ipconfig hme0 inet 192.168.9.65 netmask 255.255.255.252 up
# init 6
#ipconfig -a
18、如何在prom状态下查看光纤硬盘 ? 作者:深圳菜鸟
stop +a进入ok状态:
ok> select 光纤卡设备名(可用show-devs查看到)
ok> show-children
19、主机双屏幕设置。 作者:iricyan
1.Confirm there are two Video Cards。
2.Confirm driver installed and patches installed if need。
3.vi /usr/dt/config/Xservers.
comment the last line.
and uncomment the nearest line like this.
4.reboot.
20、查看硬盘参数及其物理地址:
#format </dev/null
21、显示磁盘的分区情况:
#prtvtoc /dev/rdsk/c0t0d0s2
系统应用:
1、、查看系统运行级别
# who -r 看运行级别
2、进程工具 作者:e4gle
pstop pid 停止进程
prunpid 重新启动进程
ptime pid 使用微状态计算进程时间
pwait pid 等待指定的进程终止
pcred pid显示可信度 *
pfiles pid 显示已打开文件的fstat和fcntl信息 *
pflags pid 显示每个lwp的/proc跟踪标志,等待和待有信号量以及其他状态信息 *
pldd pid 显示链接到每个进程的动态链接库 *
pmappid 显示地址映射空间 *
psigpid显示信号操作 *
pstack pid 显示每个lwp的十六进制与符号堆跟踪 *
ptreepid显示包含指定PID的进程树
pwdx pid 显示当前工作目录*
后面加*的必须是超级用户执行。
这些工具在/usr/proc/bin/里面。
3、patch软件包的安装
每个补丁都有编号。例如补丁号为101945,版本是34的话,这个补丁的目录名就是101945-34.
# patchadd 105160-01 安装补丁
# patchrm 删除补丁
# patchadd -p 检查系统的补丁情况
# showrev -p 查看所有已经安装的patch
4、如何容许root用户远程登录?
# vi /etc/default/login
CONSOLE=/dev/console ---用#注释掉这一行。
5、如何限定telnet登陆数?solaris pts的数量缺省为47, 修改/etc/system文件, 增加如下内容:
set maxusers=数量
set pt_cnt=数量
6、显示已经使用和未使用的i-node数目 作者:gunguymadman007
# df ?F ufs ?o i
7、显示cpu使用率最高的进程 作者:gunguymadman007
# ps ?eo pid,pcpu,args | sort +1n
该命令输出当前系统进程的pid, CPU占用率及命令描述,并以pcpu来排序
8、查看当前的OpenWindows版本 作者:gunguymadman007
# showrev ?w
OpenWindows version:
X11 Version 6.4.1 5 November 2001
9、查看当前CDE的版本 作者:gunguymadman007
# /usr/ccs/bin/what /usr/dt/bin/dtmail
/usr/dt/bin/dtmail:
CDE Version 1.4.6_06
CDEVersion1.4.6_06
10、文消掉本中的^M
# cat test.dat | tr -d '15' > test.out
这样可以将 test.dat 内 ^M(15) 这个字元去掉, 产生 test.out
11、关机命令。
关闭系统的方式根据关闭的原因而不同.执行关闭有的是为了转至执行等级S,有的是要停止操作系统并关闭设备的电源.
(1) /usr/sbin/shutdown ?gtime ?ilevel -y
(2) init 0
(3) halt
(4) STOP+A ; sync
(5) 关闭电源
紧急情况,按Stop_A , 如Stop_A不起作用,则将设备电源关闭再打开.这是
极端情况.这两种方法不是干净的关闭,是突然关闭的,仅在紧急情况使用.
12、Solaris下怎么发送即时消息?
用wirte命令到单个用户的终端。
$ wirte username
输入消息正文,结束按ctrl-d,消息就会出现在用户终端。
用户可以用mesg n[y]来决定是否启动接受消息。
用wall,是发给所有系统用户。
$ wall
hello ,i love you ...... 结束用ctrl-D.
rwall -n netgroup 给网络上所有用户。
$ rwall -n workgroup --------发给组workgroup下的每一个用户
hi ! no smoking ...... 结束用ctrl -d
$ rwall sune450 ------或者主机名为sune450。用法如上。。。
13、系统是sunos5.8, 不知何种原因现在唯一的普通用户起不了Terminal, vi等,但是超级用户可以,如何补救? 作者:kesin
用/etc/skel/local.cshrc 替换掉登陆路径下的 .cshrc, 重新登陆, 就OK了!
$cp /etc/skel/local.cshrc ./
14、关机时这个题是什么意思? 作者:sunmarmot
/usr/sbin/vold[724]: [ID 244572 daemon.error] 卸载 /vol 时发生问题;中断系统调用
uxwdog[481]: [ID 248799 daemon.error] error communicating with server (Broken pipe)
你还没卸下来/VOL就启动,才出问题,运行:
# umount -f /vol后再做。
15、find常用的例子:
命令格式: find dir -name filename command
例子:
# find . -name hello -print 寻找目前目录及所有的子目录内叫hello的文档。
# find . -ctime +7 -print 找出七天内未被更动的文档
# find . -size +2000m -print 找出大小超过2000 bytes的文档
# find /tmp -user b1234567 -print 在/tmp下属於b1234567的文档
# find . -name '*.c' -exec rm {} 删除所有的.c档
# find . -name test* -print 显示当前目录及其子目录文件名前4位为test的文件名
16、忘记solarsi的root口令怎么办? 作者:南非蜘蛛
方法一:
1.别怕
,跟我来.
2.把你的solaris光盘放进cdrom
3.键入stop+a
4.当出现'ok'字样时,键入boot cdrom -s
5.cd /tmp
6.mkdir /tmp/xxx (xxx是什么鬼东西就无关紧要了)
7.mount /dev/dsk/c0t0d0s0 /tmp/xxx (在这里c0t0d0s0是你的root盘)
8.运行csh
9.TERM=sun;export TERM或者
setenv TERM vt220
10.cp /tmp/root/xxx/shadow /tmp/root/xxx/shadow/shadow.backup
11.vi /tmp/root/xxx/shadow并且将password里root项删除。
12.重启动,你就可以以无密码的root登陆了,这时更改你的密码。
要是没有shadow,就把/etc/passwd里root用户名后面的X删掉,就可以了
方法二:
找一台有系统的solaris机器,把忘记密码的系统放进去mount上来,重复方法一10以后的步骤.
solaris for x86的机器:
用光盘启动到要你安装的时候退出去就成单用户,剩下的操作如上。
17、常见文件的解压 作者:南非蜘蛛
一般而言,在solaris下,会有这么几种格式的软件:
1) .gz结尾的文件,我们用gunzip或者gzip -d来解压,再用tar来解压.
2) .tar结尾的文件,我们肯定知道用tar xvf的格式来解压.
3) .zip结尾的文件,我们用unzip,注意,这个只有在高版本的solaris下,才有.而且该文件格式以solaris的patch比较多.
4) .Z结尾的文件,我们一般用uncompress来解压(当然,每个人的习惯不一样.)
上面讲的是解压,一般解压后,会生成这么几种方式:
1)生成.local的文件,这个时候,我们用: pkgadd -d xxx.local来安装.
2) 生成一个目录,而且该目录下会有一些pkg信息,我们用: pkgadd -d . ;指在当前目录下,安装,并且按照缺省的路径来安装.
3) 生成一个数字的目录,一般是指solaris的patch,这个时候我们用patchadd来安装.
18、如何在命令行界面替换一个文件中的字符段?
# vi file 在命令模式中输入:
:1, $s/diag/peng/g 全文件查找diag并替换为peng
19、请问TERM=VT100和TERM=dtterm都在什么情况下设置? 作者:C.Arthur
一般情况下如果你在机器的显示器上登陆或者通过XMANAGER等登陆,就默认是dtterm,telnet 一般是ansi,当你通过telnet修改文件的时候,需要设置成 TERM = VT100 ; export TERM
20、如何查看系统的版本?
$ uname -X
$ more /etc/release
21、命令行进入CDE:
#/usr/dt/bin/dtlogin -daemon;exit
or
#/etc/rc2.d/S92dtlogin start;exit;
22、查看patch安装过程中返回错误代码的含义:
#more /usr/sbin/patchadd
23、如何从一台SOL8的机器登录到另外一台SOL8的CDE桌面上去。
登陆CDE的时候点击一下菜单:选择--登陆远程主机--
24、如何查看你的默认语言环境? C.Arthur
# more /etc/default/init
25、如何更改/home的权限? 作者: xieliangcheng
停掉autofs服务,或者将/etc/auto_master的home注释掉:
#vi /etc/auto_master
------------内容如下----------
# Master map for automounter
#
+auto_master
/net -hosts -nosuid,nobrowse
#/home auto_home -nobrowse
/xfn -xfn
第三方软件应用或技巧:
1、查看当前的bind版本信息 作者:gunguymadman007
# nslookup ?class=chaos ?q=txt version.bind
2、在登录时显示系统指定的消息?
#vi /etc/motd ----删除所有过时的消息,输入新消息
注意:对于已经登录且正在使用系统的用户不显示该消息,超过一屏的消息无法显示。每次修改该文件后,该文件的时间戳随之更新。
3、去掉文本中^M
# dos2unix aaa.txt bbb.txt,会去掉aaa.txt中的^M,生成bbb.txt文件。
4、将系统中7天前的txt文件查找并打包。
# find / -mtime -7 >aaa.txt
# tar cvf bbb.tar -I aaa.txt
---查找出文件记录在aaa.txt文件中,在作成bbb.tar文件包。
5、查找并删除比某一天更老的文件:
#find . ! -mtime -<days> | /usr/bin/xarys rn -rf
6、solaris9普通用户下无法正确输入中文的解决方法:
在用户目录在#vi .profile 修改如下:
stty cs8 -istrip
7、请问如何防止telnet登陆发呆时间过长被踢呢?
这里,vi /etc/default/login
# TIMEOUT sets the number of seconds (between 0 and 900) to wait before
# abandoning a login session.
#
#TIMEOUT=300
修改之后不是立即生效,在这之后所又的login session都符合这个要求,但是在修改之前已经建立的连接不受影响。
8、如何安装gcc。
去sunfreeware.com上下载相应平台的pkg包的gcc版本。
#pkgadd -d gcc*
设置环境变量:
bash 和sh 的shell:
vi $home/.profiel
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/etc:/usr/local/bin:/usr/ccs/bin;export PATH
CC=gcc;export CC
csh的shell:
vi $home/.cshrc
set path=( /bin /usr/bin /usr/ucb /etc /usr/local/bin /usr/local/sbin .)
setenv CC gcc
9、列出当前目录下的目录。 作者:brucewoo
ls -al | grep '^d'
10、用命令行来打开一个新的terminal。 作者:beginner-bj
/usr/dt/bin/dtterm
X86或者Vmware:
1、在Solaris10 x86上挂接window98分区的方法。 作者:k338
#mount -F pcfs /dev/dsk/c0d1p0:e /mnt
总结一下:
偶的硬盘是接在IDE1的slaver盘上,用上述命令可将E:盘挂在/mnt
目录下。如果你的电脑只有一个硬盘,并且是接在主板的IDE1槽,设为
Master盘(通常这种情况较多),现在想挂WIN98下的D:盘,可输入
#mount -F pcfs /dev/dsk/c0d0p0:d /mnt
注意,/mnt可以改为任意的其它空目录,如/data(我在文件管理器中自己
新建的一个目录),可改为
#mount -F pcfs /dev/dsk/c0d0p0:d /data
按回车后如没有任何出错提示,则表示挂接成功,你就可以进入挂接的文件夹(此处为/data)找到你所挂接的win98的D:分区上的文件了。
本方法经过偶N次实验,是确实可行的。为后来者不再偶走过的弯路,偶特在此总结一下,哪位初学者不会在Solaris10 x86(Solaris9也应该行)
挂win98分区的话,可参考本方法。
系统管理员是工具的使用者。通过实践经验,我们掌握了更多工具,并且增强了诊断问题以及实施解决方案的能力。本次专栏中包含的命令是通过经验、朋友、熟人以及出席 9 月举行的 SunNetwork 2002 大会收集到的。Solaris 内核的开发人员 Brian Cantrill 和 Mike Shapiro 所讲的"The /procodile Hunter"让人很有启发并令人感到惊恐,因为 Cantrill 编写代码来说明一个观点的速度比 Shapiro 能够讲解该观点的速度还要快!
有用的 Solaris 命令
truss -c (Solaris >= 8):这是个令人震惊的 truss 选项,它提供了被追踪命令的全面概要信息:
$ truss -c grep asdf work.doc
syscall seconds callserrors
_exit .00 1
read .01 24
open .00 8 4
close .00 5
brk .00 15
stat .00 1
fstat .00 4
execve .00 1
mmap .00 10
munmap .01 3
memcntl .00 2
llseek .00 1
open64 .00 1
---- --- ---
sys totals: .02 76 4
usr time: .00
elapsed: .05
它还能显示正在运行的进程的概要数据。在本例中,数据表明了从启动 truss 命令到用 control-c 来终止 truss 执行的期间,进程到底做了些什么。这对于判断进程为何被挂起是很理想的,因为您无须费力浏览整个 truss 的输出。
truss -d 和 truss -D (Solaris >= 8):这两个选项表明与truss显示的每个系统调用相关的时间信息。这对于找出定制代码或商业代码中的问题很有帮助。例如:
$ truss -d who
Base time stamp:1035385727.3460[ Wed Oct 23 11:08:47 EDT 2002 ]
0.0000 execve("/usr/bin/who", 0xFFBEFD5C, 0xFFBEFD64)argc = 1
0.0032 stat("/usr/bin/who", 0xFFBEFA98) = 0
0.0037 open("/var/ld/ld.config", O_RDONLY) Err#2 ENOENT
0.0042 open("/usr/local/lib/libc.so.1", O_RDONLY) Err#2 ENOENT
0.0047 open("/usr/lib/libc.so.1", O_RDONLY) = 3
0.0051 fstat(3, 0xFFBEF42C) = 0
. . .
truss -D 对于显示系统调用间的延迟时间更加有用:
Dilbert> truss -D who
0.0000 execve("/usr/bin/who", 0xFFBEFD5C, 0xFFBEFD64)argc = 1
0.0028 stat("/usr/bin/who", 0xFFBEFA98) = 0
0.0005 open("/var/ld/ld.config", O_RDONLY) Err#2 ENOENT
0.0006 open("/usr/local/lib/libc.so.1", O_RDONLY) Err#2 ENOENT
0.0005 open("/usr/lib/libc.so.1", O_RDONLY) = 3
0.0004 fstat(3, 0xFFBEF42C) = 0
这个例子中,stat 这个系统调用要比其他系统调用占用更长的时间。
truss -T:这是个很棒的调式帮助选项。在执行指定的系统调用时,它可以终止进程("-U"也执行同样的操作,不过是在进行用户级的函数调用时)。此时,将会获取用于进一步分析的 core 文件,或者使用一些 /proc 工具来确定进程各个方面的状态。
truss -l(在 Solaris 9 中已改进):显示多线程进程中每个调用的线程号。Solaris 9 中的 truss -l 经过了改进,最后还可以监视多线程的应用程序的执行。
Truss 的确是个功能强大的工具。例如,可在 core 文件中用于分析问题产生的原因。还可以通过"-u"选项来显示用户级的库(既可以为系统库,也可为程序员库)调用的详细信息。
pkg-ge:这是个用于自动获取免费软件包的好工具(http://www.bolthole.com/solaris)。它通过 /etc/pkg-get.conf 来配置。一旦配置好并运行后,就运行 pkg-get -a 来获取可用包的列表以及运行 pkg-get -I 来获取并安装给定的包。
Plimit (Solaris >= 8):这个命令用于显示并设置正在运行的进程中的每个进程的限制。如果一个长时间运行的进程超过了某个限制(如打开的文件数目),使用该命令就十分方便。因为无须使用 limit 命令后重新运行该进程,plimit 就可以修改正在运行的进程。
coreadm (Solaris >= 8):在以前没有 coreadm 命令时,core dumps 被置于进程的工作目录下。并且 core 文件将会互相覆盖。而这个问题和其他更多问题都可以由 coreadm 来处理,它是一个管理 core 文件生成的工具。您可以通过该工具指定是否保存 core、core存储的位置和应保留的版本数目,等等。所有这些设置信息都是在重启前通过 coreadm 修改 /etc/coreadm.conf 来保存的。
pgrep (Solaris >= 8):pgrep 在 /proc 中搜索符合给定规则的进程,并返回进程的 ID。其中一个很棒的选项是"-n",它返回的是最新的满足条件的进程号。
preap (Solaris >= 9):除去僵尸进程。任何困于"z"状态(由 ps 命令显示)的进程,该命令都可将之从系统中清除。
pargs (Solaris >= 9):显示进程的参数及环境变量。
nohup -p (Solaris >= 9):nohup 命令可以用于启动一个进程,因此即使用于启动进程的 shell 被关闭(即进程获得"SIGHUP"信号),该进程仍然可以继续运行。这对于让一个后台任务不管碰到何种情况仍然可以继续运行是很有用的。但是如果您已经启动了一个进程,但稍后希望使它免受 HUP 信号的影响,该怎么办呢?在Solaris 9中, nohup -p 可以获取进程 ID 并使之忽略 SIGHUP 信号。
prstat (Solaris >= 8):prstat 也是 top 命令,但拥有更多功能。这两个命令都可以提供一个屏幕的关于进程的有用信息以及其他的相关信息,并且能频繁地更新,总之是个很棒的显示系统性能的窗口。但 prstat 要比 top 更加精确。它还提供了一些很好的选项。"-a"可以同时显示进程与用户的信息(默认由 CPU hog 排序)。"-c"使其执行很像 vmstat(在前一个报告下面接着显示新的报告)。"-C"显示在处理器集中的进程。"-j"显示一个"工程"中的进程。"-L"显示每个线程和每个进程的信息。"-m"和"-v"显示每个进程的很多详细的性能信息(包括 pages、traps、lock wait 和 CPU wait)。所有输出数据都可以按照在内存中设置的大小、虚拟内存大小、运行时间等等条件来排列。prstat 在没有 top 的系统中是个十分有用的工具,并且由于它的精确性,所以很可能取代 top(有些地方考虑到它是个被支持的程序而使用它)。
trapstat (Solaris >= 9):trapstat 以及 lockstat 和 kstat 是 Solaris 中最难以理解的命令。它们显示一个运行的操作系统内部中最具体的细节信息。每个命令对于解决 Solaris 系统中发生的古怪问题都是必不可少的。最好是将它们的输出随错误报告一起提交,但进一步的研究揭示,它们也能为一般应用提供有用信息。
vmstat -p (Solaris >= 8):在这个选项可以使用之前,要确定是哪种类型的内存命令导致系统页面调度几乎是不可能的(请查阅"se toolkit")。vmstat -p 可以解决此问题,因为它不但显示您的系统是否处于内存紧缺的情况(通过"sr"栏),而且还显示是否是由以下内容导致的:应用程序的代码,应用程序的数据或 I/O 。"-p"能够真正帮助找出 Solaris 中导致神秘的内存问题的原因。
pmap -x (Solaris >= 8,Solaris >= 9中进行了错误修复):如果已经得知进程中有内存问题,并且需要获得更多内存使用的详细信息,就可以使用 pmap -x。该命令将解释指定 ID 的目标进程的整个内存映射信息,如下:
# pmap -x 1779
1779: -ksh
AddressKbytes RSS AnonLocked Mode Mapped File
00010000 192 192 - - r-x--ksh
00040000 8 8 8 - rwx--ksh
00042000 32 32 8 - rwx-- [ heap ]
FF180000 680 664 - - r-x--libc.so.1
FF23A000 24 24 - - rwx--libc.so.1
FF240000 8 8 - - rwx--libc.so.1
FF280000 568 472 - - r-x--libnsl.so.1
FF31E000 32 32 - - rwx--libnsl.so.1
FF326000 32 24 - - rwx--libnsl.so.1
FF340000 16 16 - - r-x--libc_psr.so.1
FF350000 16 16 - - r-x--libmp.so.2
FF364000 8 8 - - rwx--libmp.so.2
FF380000 40 40 - - r-x--libsocket.so.1
FF39A000 8 8 - - rwx--libsocket.so.1
FF3A0000 8 8 - - r-x--libdl.so.1
FF3B0000 8 8 8 - rwx-- [ anon ]
FF3C0000 152 152 - - r-x--ld.so.1
FF3F6000 8 8 8 - rwx--ld.so.1
FFBFE000 8 8 8 - rw--- [ stack ]
-------- ------- ------- ------- -------
total Kb 1848 1728 40 -
这里,我们可以看到每一块内存,它们被用于做什么,占用了多大的(虚拟的和真实的)空间以及其模式信息。
df -h (Solaris >= 9):这个命令在 Linux 上已经应用十分普遍,刚刚转移到了 Solaris 平台。df -h 以一种方便阅读的形式显示文件系统的概要信息:
$ df -h
Filesystem size usedavail capacityMounted on
/dev/dsk/c0t0d0s0 4.8G 1.7G 3.0G 37% /
/proc 0K 0K 0K 0% /proc
mnttab 0K 0K 0K 0% /etc/mnttab
fd 0K 0K 0K 0% /dev/fd
swap 848M 40K 848M 1% /var/run
swap 849M 1.0M 848M 1% /tmp
/dev/dsk/c0t0d0s7 13G 78K 13G 1% /export/home
结束语
每个管理员都有一套日常使用的工具,以及另外一套在紧急情况下帮助解决问题的工具。本文介绍了各种各样的的命令及选项,它们不广为人知但却十分有用。您是否也保存了这样一些偏爱的工具呢?如果有,请也发送给我,让我可以扩展自己的工具集。另外,可以发送一些您不喜欢或是感觉有危险的工具,它们或许也可以变成有用的呢!