文本版|topic 高级搜索
   名人堂 帮助 论坛制度 意见反馈 | 首页 博客 周新贴 专题 求职 读书
RSS 底部
 
社区导航: 专家门诊   网络技术   操作系统   数据库   程序设计   系统应用   考试认证   CIO及信息化   站长交流   综合交流   下载基地  51CTO产品服务 设为首页 | 收藏本站
51CTO技术论坛» Solaris & BSD & Unix » 几个特别的Solaris命令详细解析!       [ 打印]  [ 订阅]  [ 收藏]  [ 推荐给朋友]   [ 本帖文本页]

论坛跳转:
     
标题: [转载] 几个特别的Solaris命令详细解析!  ( 查看:835  回复:3 )   
 
cheney1001
助理工程师  点击可查看详细



帖子 269
精华 0
无忧币 2867
积分 1101
阅读权限 40
注册日期 2006-10-27
最后登录 2008-9-20 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2007-8-31 16:00   标题:几个特别的Solaris命令详细解析!
上一帖 |
Solaris 命令
truss -c (Solaris >= 8):这是个令人震惊的 truss 选项,它提供了被追踪命令的全面概要信息:

$ truss -c grep asdf work.doc
syscall seconds calls errors
_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
Address Kbytes RSS Anon Locked 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 used avail capacity Mounted 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



论坛活动:测测你对IT技术大会的了解指数(赠微软礼品、无忧币)
2007-8-31 16:001楼
[ 顶部 ]
 
taizi1985
新新人类  点击可查看详细



帖子 14
精华 0
无忧币 12
积分 24
阅读权限 20
注册日期 2006-4-22
最后登录 2008-8-18 离线

[查看资料]  [发短消息]  [Blog
[个人主页]         
发表于:2007-9-4 13:07 
以前看过的飘过。



论坛活动:测测你对IT技术大会的了解指数(赠微软礼品、无忧币)
2007-9-4 13:072楼
[ 顶部 ]
 
lightpoint
技术员  点击可查看详细


帖子 291
精华 0
无忧币 94
积分 291
阅读权限 30
注册日期 2007-12-20
最后登录 2008-4-16 离线

[查看资料]  [发短消息]  [Blog
    ICQ 状态     
发表于:2008-3-24 17:22 




论坛活动:测测你对IT技术大会的了解指数(赠微软礼品、无忧币)
2008-3-24 17:223楼
[ 顶部 ]
 
jishirj
新新人类  点击可查看详细



帖子 55
精华 0
无忧币 61
积分 63
阅读权限 20
注册日期 2008-4-8
最后登录 2008-4-12 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-4-9 14:54 
hao



论坛活动:测测你对IT技术大会的了解指数(赠微软礼品、无忧币)
2008-4-9 14:544楼
[ 顶部 ]
     
论坛跳转:  

| | |

| | |

| | |

标记已读 · 删除论坛Cookies · 文本版 · WAP
 
| 诚征版主 | 版主堂 | 意见建议 | 大史记 | 论坛地图
Copyright©2005-2008 51CTO.COM  Powered by Discuz!
本论坛言论纯属发布者个人意见,不代表51CTO网站立场!如有疑义,请与管理员联系。
京ICP备05051492号