網絡依然還是計算機,Sun還是Sun!
Solaris中的酷命令-ZT
上一篇 / 下一篇 2008-01-30 10:15:19 / 个人分类:Solaris學習
查看( 304 ) /
评论( 4 )
Sun eCommunity 作者 Peter Baer Galvin Solaris 中的命令非常之多,以致很难从中分离出那些很酷的命令。例如,有些命令报告程序进行每个系统调用时所要花费的时间,有些命令动态地显示系统活动信息,而且这些命令大部分都同时包含在了 Solaris 8 和 Solaris 9 中。这里,我将重点介绍其中一些命令,您或许会发现它们特别有用。
JU&A&@j:Zapqy0 系统管理员是工具的使用者。通过实践经验,我们掌握了更多工具,并且增强了诊断问题以及实施解决方案的能力。本次专栏中包含的命令是通过经验、朋友、熟人以及出席 9 月举行的 SunNetwork 2002 大会收集到的。Solaris 内核的开发人员 Brian Cantrill 和 Mike Shapiro 所讲的"The /procodile Hunter"让人很有启发并令人感到惊恐,因为 Cantrill 编写代码来说明一个观点的速度比 Shapiro 能够讲解该观点的速度还要快!
%F6U M"}w(R1iK0
c:}xh ~cZ9sw${0 有用的 Solaris 命令
F"Zp7t4YU0
uR5t#C/Bs0 truss -c (Solaris >= 8):这是个令人震惊的 truss 选项,它提供了被追踪命令的全面概要信息:IXPUB技术博客e8A4C'L4[VAE
Excr4}d4bQx5y0 IXPUB技术博客}7Vl"jNpJ
$ truss -c grep asdf work.doc
zpm&WE#Qhis0 syscall seconds calls errorsIXPUB技术博客@'Y{$@NS o4G
_exit .00 1
By9JUUc E\o0 read .01 24
o Qu)|(c t0 open .00 8 4IXPUB技术博客},]:_)zY$Yr
close .00 5
+[4M#m a-h gM7Sh\0 brk .00 15
4x!sTn7S:`$w+t,KtM4J*{0 stat .00 1IXPUB技术博客3xN7ajn$L
fstat .00 4
s|u+E1x,oJl0 execve .00 1IXPUB技术博客 q)|kX^/?L#iKW
mmap .00 10
6|3Nz.A:gF0 munmap .01 3
|t6CqG0 memcntl .00 2IXPUB技术博客J.{E'_/{;R
llseek .00 1IXPUB技术博客.m)D1c2We6yc
open64 .00 1
/i nft5D7w`0 ---- --- ---
;l(Bi2us-hhu+M6CC0 sys totals: .02 76 4IXPUB技术博客 WE Un/T%H$e
usr time: .00
wC6_4j+lV#P0 elapsed: .05
-_I!wmb0
k(mN5S_$@ yuTI0 IXPUB技术博客 i]8fiI1S'DW'Gp!Y+P
它还能显示正在运行的进程的概要数据。在本例中,数据表明了从启动 truss 命令到用 control-c 来终止 truss 执行的期间,进程到底做了些什么。这对于判断进程为何被挂起是很理想的,因为您无须费力浏览整个 truss 的输出。 IXPUB技术博客5b }4H9v5vR qh m
1ba'rS,S:J ar0 truss -d 和 truss -D (Solaris >= 8):这两个选项表明与truss显示的每个系统调用相关的时间信息。这对于找出定制代码或商业代码中的问题很有帮助。例如:
3a.Iz6aK0
Q yR8V#DK#m3fAf0l0
kH8}/I)Bp0 $ truss -d whoIXPUB技术博客6E ?x\~"k
Base time stamp: 1035385727.3460 [ Wed Oct 23 11:08:47 EDT 2002 ]IXPUB技术博客 gb;}:v8d!m!m
0.0000 execve("/usr/bin/who", 0xFFBEFD5C, 0xFFBEFD64) argc = 1IXPUB技术博客:]'P*J5`SV
0.0032 stat("/usr/bin/who", 0xFFBEFA98) = 0
aq#t7_9e`i}k0 0.0037 open("/var/ld/ld.config", O_RDONLY) Err#2 ENOENTIXPUB技术博客KY0pP3c I
0.0042 open("/usr/local/lib/libc.so.1", O_RDONLY) Err#2 ENOENTIXPUB技术博客-j\ u^3a$u7Y%^;_i
0.0047 open("/usr/lib/libc.so.1", O_RDONLY) = 3
1urp)@7YQ0 0.0051 fstat(3, 0xFFBEF42C) = 0
-Btyn0Pv:`0 . . .IXPUB技术博客]Veho h
truss -D 对于显示系统调用间的延迟时间更加有用:IXPUB技术博客S z.W-bUw
3^%W _ iP!_-YP0 IXPUB技术博客 j5uu}c
Dilbert> truss -D whoIXPUB技术博客g~5Ve6CR!ab;ao
0.0000 execve("/usr/bin/who", 0xFFBEFD5C, 0xFFBEFD64) argc = 1IXPUB技术博客 Az?$B1Gd U[{
0.0028 stat("/usr/bin/who", 0xFFBEFA98) = 0IXPUB技术博客 p(]7} u6F0ZM0Y(q Z
0.0005 open("/var/ld/ld.config", O_RDONLY) Err#2 ENOENTIXPUB技术博客)h&u @Tq9u @
0.0006 open("/usr/local/lib/libc.so.1", O_RDONLY) Err#2 ENOENTIXPUB技术博客k0?~H G.S;f
0.0005 open("/usr/lib/libc.so.1", O_RDONLY) = 3IXPUB技术博客/?6TN [ _"Q,r
0.0004 fstat(3, 0xFFBEF42C) = 0
Qk#|`8M5Ag%G0 IXPUB技术博客Cw,m xo6m-C:Y
)D v$m8cc&c"h.A1?0 这个例子中,stat 这个系统调用要比其他系统调用占用更长的时间。 IXPUB技术博客&U|2pQQ]DqQ'R
a%krO/_7Q3Zs.h'j{0 truss -T:这是个很棒的调式帮助选项。在执行指定的系统调用时,它可以终止进程("-U"也执行同样的操作,不过是在进行用户级的函数调用时)。此时,将会获取用于进一步分析的 core 文件,或者使用一些 /proc 工具来确定进程各个方面的状态。 IXPUB技术博客x/m;{Y ckZ0n
IXPUB技术博客s:vtYj1B
truss -l(在 Solaris 9 中已改进):显示多线程进程中每个调用的线程号。Solaris 9 中的 truss -l 经过了改进,最后还可以监视多线程的应用程序的执行。 IXPUB技术博客@AH,F bjY ^
!d;["IrP8p!b0 Truss 的确是个功能强大的工具。例如,可在 core 文件中用于分析问题产生的原因。还可以通过"-u"选项来显示用户级的库(既可以为系统库,也可为程序员库)调用的详细信息。 IXPUB技术博客/x:Ai ry$B
vss*~e0 pkg-ge:这是个用于自动获取免费软件包的好工具(http://www.bolthole.com/solaris)。它通过 /etc/pkg-get.conf 来配置。一旦配置好并运行后,就运行 pkg-get -a 来获取可用包的列表以及运行 pkg-get -I 来获取并安装给定的包。 IXPUB技术博客grs4|?r3e!O
IXPUB技术博客 Hf,hc l r
Plimit (Solaris >= 8):这个命令用于显示并设置正在运行的进程中的每个进程的限制。如果一个长时间运行的进程超过了某个限制(如打开的文件数目),使用该命令就十分方便。因为无须使用 limit 命令后重新运行该进程,plimit 就可以修改正在运行的进程。
D4a6u7WD"D+Yhy0 IXPUB技术博客fZ+qlK1@)pb
coreadm (Solaris >= 8):在以前没有 coreadm 命令时,core dumps 被置于进程的工作目录下。并且 core 文件将会互相覆盖。而这个问题和其他更多问题都可以由 coreadm 来处理,它是一个管理 core 文件生成的工具。您可以通过该工具指定是否保存 core、core存储的位置和应保留的版本数目,等等。所有这些设置信息都是在重启前通过 coreadm 修改 /etc/coreadm.conf 来保存的。 IXPUB技术博客c/gyrW` ADG'sd c
IXPUB技术博客#_,f I2I:A(u4[e3}'y
pgrep (Solaris >= 8):pgrep 在 /proc 中搜索符合给定规则的进程,并返回进程的 ID。其中一个很棒的选项是"-n",它返回的是最新的满足条件的进程号。
)gS1i\`&C"A0 IXPUB技术博客pX0z[x;^J(iu8OQH
preap (Solaris >= 9):除去僵尸进程。任何困于"z"状态(由 ps 命令显示)的进程,该命令都可将之从系统中清除。
JU&A&@j:Zapqy0 系统管理员是工具的使用者。通过实践经验,我们掌握了更多工具,并且增强了诊断问题以及实施解决方案的能力。本次专栏中包含的命令是通过经验、朋友、熟人以及出席 9 月举行的 SunNetwork 2002 大会收集到的。Solaris 内核的开发人员 Brian Cantrill 和 Mike Shapiro 所讲的"The /procodile Hunter"让人很有启发并令人感到惊恐,因为 Cantrill 编写代码来说明一个观点的速度比 Shapiro 能够讲解该观点的速度还要快!
%F6U M"}w(R1iK0
c:}xh ~cZ9sw${0 有用的 Solaris 命令
F"Zp7t4YU0
uR5t#C/Bs0 truss -c (Solaris >= 8):这是个令人震惊的 truss 选项,它提供了被追踪命令的全面概要信息:IXPUB技术博客e8A4C'L4[VAE
Excr4}d4bQx5y0 IXPUB技术博客}7Vl"jNpJ
$ truss -c grep asdf work.doc
zpm&WE#Qhis0 syscall seconds calls errorsIXPUB技术博客@'Y{$@NS o4G
_exit .00 1
By9JUUc E\o0 read .01 24
o Qu)|(c t0 open .00 8 4IXPUB技术博客},]:_)zY$Yr
close .00 5
+[4M#m a-h gM7Sh\0 brk .00 15
4x!sTn7S:`$w+t,KtM4J*{0 stat .00 1IXPUB技术博客3xN7ajn$L
fstat .00 4
s|u+E1x,oJl0 execve .00 1IXPUB技术博客 q)|kX^/?L#iKW
mmap .00 10
6|3Nz.A:gF0 munmap .01 3
|t6CqG0 memcntl .00 2IXPUB技术博客J.{E'_/{;R
llseek .00 1IXPUB技术博客.m)D1c2We6yc
open64 .00 1
/i nft5D7w`0 ---- --- ---
;l(Bi2us-hhu+M6CC0 sys totals: .02 76 4IXPUB技术博客 WE Un/T%H$e
usr time: .00
wC6_4j+lV#P0 elapsed: .05
-_I!wmb0
k(mN5S_$@ yuTI0 IXPUB技术博客 i]8fiI1S'DW'Gp!Y+P
它还能显示正在运行的进程的概要数据。在本例中,数据表明了从启动 truss 命令到用 control-c 来终止 truss 执行的期间,进程到底做了些什么。这对于判断进程为何被挂起是很理想的,因为您无须费力浏览整个 truss 的输出。 IXPUB技术博客5b }4H9v5vR qh m
1ba'rS,S:J ar0 truss -d 和 truss -D (Solaris >= 8):这两个选项表明与truss显示的每个系统调用相关的时间信息。这对于找出定制代码或商业代码中的问题很有帮助。例如:
3a.Iz6aK0
Q yR8V#DK#m3fAf0l0
kH8}/I)Bp0 $ truss -d whoIXPUB技术博客6E ?x\~"k
Base time stamp: 1035385727.3460 [ Wed Oct 23 11:08:47 EDT 2002 ]IXPUB技术博客 gb;}:v8d!m!m
0.0000 execve("/usr/bin/who", 0xFFBEFD5C, 0xFFBEFD64) argc = 1IXPUB技术博客:]'P*J5`SV
0.0032 stat("/usr/bin/who", 0xFFBEFA98) = 0
aq#t7_9e`i}k0 0.0037 open("/var/ld/ld.config", O_RDONLY) Err#2 ENOENTIXPUB技术博客KY0pP3c I
0.0042 open("/usr/local/lib/libc.so.1", O_RDONLY) Err#2 ENOENTIXPUB技术博客-j\ u^3a$u7Y%^;_i
0.0047 open("/usr/lib/libc.so.1", O_RDONLY) = 3
1urp)@7YQ0 0.0051 fstat(3, 0xFFBEF42C) = 0
-Btyn0Pv:`0 . . .IXPUB技术博客]Veho h
truss -D 对于显示系统调用间的延迟时间更加有用:IXPUB技术博客S z.W-bUw
3^%W _ iP!_-YP0 IXPUB技术博客 j5uu}c
Dilbert> truss -D whoIXPUB技术博客g~5Ve6CR!ab;ao
0.0000 execve("/usr/bin/who", 0xFFBEFD5C, 0xFFBEFD64) argc = 1IXPUB技术博客 Az?$B1Gd U[{
0.0028 stat("/usr/bin/who", 0xFFBEFA98) = 0IXPUB技术博客 p(]7} u6F0ZM0Y(q Z
0.0005 open("/var/ld/ld.config", O_RDONLY) Err#2 ENOENTIXPUB技术博客)h&u @Tq9u @
0.0006 open("/usr/local/lib/libc.so.1", O_RDONLY) Err#2 ENOENTIXPUB技术博客k0?~H G.S;f
0.0005 open("/usr/lib/libc.so.1", O_RDONLY) = 3IXPUB技术博客/?6TN [ _"Q,r
0.0004 fstat(3, 0xFFBEF42C) = 0
Qk#|`8M5Ag%G0 IXPUB技术博客Cw,m xo6m-C:Y
)D v$m8cc&c"h.A1?0 这个例子中,stat 这个系统调用要比其他系统调用占用更长的时间。 IXPUB技术博客&U|2pQQ]DqQ'R
a%krO/_7Q3Zs.h'j{0 truss -T:这是个很棒的调式帮助选项。在执行指定的系统调用时,它可以终止进程("-U"也执行同样的操作,不过是在进行用户级的函数调用时)。此时,将会获取用于进一步分析的 core 文件,或者使用一些 /proc 工具来确定进程各个方面的状态。 IXPUB技术博客x/m;{Y ckZ0n
IXPUB技术博客s:vtYj1B
truss -l(在 Solaris 9 中已改进):显示多线程进程中每个调用的线程号。Solaris 9 中的 truss -l 经过了改进,最后还可以监视多线程的应用程序的执行。 IXPUB技术博客@AH,F bjY ^
!d;["IrP8p!b0 Truss 的确是个功能强大的工具。例如,可在 core 文件中用于分析问题产生的原因。还可以通过"-u"选项来显示用户级的库(既可以为系统库,也可为程序员库)调用的详细信息。 IXPUB技术博客/x:Ai ry$B
vss*~e0 pkg-ge:这是个用于自动获取免费软件包的好工具(http://www.bolthole.com/solaris)。它通过 /etc/pkg-get.conf 来配置。一旦配置好并运行后,就运行 pkg-get -a 来获取可用包的列表以及运行 pkg-get -I 来获取并安装给定的包。 IXPUB技术博客grs4|?r3e!O
IXPUB技术博客 Hf,hc l r
Plimit (Solaris >= 8):这个命令用于显示并设置正在运行的进程中的每个进程的限制。如果一个长时间运行的进程超过了某个限制(如打开的文件数目),使用该命令就十分方便。因为无须使用 limit 命令后重新运行该进程,plimit 就可以修改正在运行的进程。
D4a6u7WD"D+Yhy0 IXPUB技术博客fZ+qlK1@)pb
coreadm (Solaris >= 8):在以前没有 coreadm 命令时,core dumps 被置于进程的工作目录下。并且 core 文件将会互相覆盖。而这个问题和其他更多问题都可以由 coreadm 来处理,它是一个管理 core 文件生成的工具。您可以通过该工具指定是否保存 core、core存储的位置和应保留的版本数目,等等。所有这些设置信息都是在重启前通过 coreadm 修改 /etc/coreadm.conf 来保存的。 IXPUB技术博客c/gyrW` ADG'sd c
IXPUB技术博客#_,f I2I:A(u4[e3}'y
pgrep (Solaris >= 8):pgrep 在 /proc 中搜索符合给定规则的进程,并返回进程的 ID。其中一个很棒的选项是"-n",它返回的是最新的满足条件的进程号。
)gS1i\`&C"A0 IXPUB技术博客pX0z[x;^J(iu8OQH
preap (Solaris >= 9):除去僵尸进程。任何困于"z"状态(由 ps 命令显示)的进程,该命令都可将之从系统中清除。