欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

solaris迅速查找手冊(cè)

  發(fā)布時(shí)間:2008-09-08 19:11:19   作者:佚名   我要評(píng)論
硬件系統(tǒng): 1、如何查看cup的狀態(tài)? 作者:南非蜘蛛? # psrinfo -v # mpstat 可以列出多cpu負(fù)載的狀態(tài) 2、如何查看內(nèi)存? 作者:南非蜘蛛? # prtconf | grep 'Memory' 可以查看內(nèi)存的多少. # /usr/platform/sun4u/sbin/prtdiag 3、

  系統(tǒng)管理員是工具的使用者。通過實(shí)踐經(jīng)驗(yàn),我們掌握了更多工具,并且增強(qiáng)了診斷問題以及實(shí)施解決方案的能力。本次專欄中包含的命令是通過經(jīng)驗(yàn)、朋友、熟人以及出席 9 月舉行的 SunNetwork 2002 大會(huì)收集到的。Solaris 內(nèi)核的開發(fā)人員 Brian Cantrill 和 Mike Shapiro 所講的"The /procodile Hunter"讓人很有啟發(fā)并令人感到驚恐,因?yàn)?Cantrill 編寫代碼來說明一個(gè)觀點(diǎn)的速度比 Shapiro 能夠講解該觀點(diǎn)的速度還要快!

有用的 Solaris 命令

truss -c (Solaris >= 8):這是個(gè)令人震驚的 truss 選項(xiàng),它提供了被追蹤命令的全面概要信息:


$ 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

它還能顯示正在運(yùn)行的進(jìn)程的概要數(shù)據(jù)。在本例中,數(shù)據(jù)表明了從啟動(dòng) truss 命令到用 control-c 來終止 truss 執(zhí)行的期間,進(jìn)程到底做了些什么。這對(duì)于判斷進(jìn)程為何被掛起是很理想的,因?yàn)槟鸁o須費(fèi)力瀏覽整個(gè) truss 的輸出。

truss -d 和 truss -D (Solaris >= 8):這兩個(gè)選項(xiàng)表明與truss顯示的每個(gè)系統(tǒng)調(diào)用相關(guān)的時(shí)間信息。這對(duì)于找出定制代碼或商業(yè)代碼中的問題很有幫助。例如:


$ 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 對(duì)于顯示系統(tǒng)調(diào)用間的延遲時(shí)間更加有用:


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

這個(gè)例子中,stat 這個(gè)系統(tǒng)調(diào)用要比其他系統(tǒng)調(diào)用占用更長(zhǎng)的時(shí)間。

truss -T:這是個(gè)很棒的調(diào)式幫助選項(xiàng)。在執(zhí)行指定的系統(tǒng)調(diào)用時(shí),它可以終止進(jìn)程("-U"也執(zhí)行同樣的操作,不過是在進(jìn)行用戶級(jí)的函數(shù)調(diào)用時(shí))。此時(shí),將會(huì)獲取用于進(jìn)一步分析的 core 文件,或者使用一些 /proc 工具來確定進(jìn)程各個(gè)方面的狀態(tài)。

truss -l(在 Solaris 9 中已改進(jìn)):顯示多線程進(jìn)程中每個(gè)調(diào)用的線程號(hào)。Solaris 9 中的 truss -l 經(jīng)過了改進(jìn),最后還可以監(jiān)視多線程的應(yīng)用程序的執(zhí)行。

Truss 的確是個(gè)功能強(qiáng)大的工具。例如,可在 core 文件中用于分析問題產(chǎn)生的原因。還可以通過"-u"選項(xiàng)來顯示用戶級(jí)的庫(既可以為系統(tǒng)庫,也可為程序員庫)調(diào)用的詳細(xì)信息。

pkg-ge:這是個(gè)用于自動(dòng)獲取免費(fèi)軟件包的好工具(http://www.bolthole.com/solaris)。它通過 /etc/pkg-get.conf 來配置。一旦配置好并運(yùn)行后,就運(yùn)行 pkg-get -a 來獲取可用包的列表以及運(yùn)行 pkg-get -I 來獲取并安裝給定的包。

Plimit (Solaris >= 8):這個(gè)命令用于顯示并設(shè)置正在運(yùn)行的進(jìn)程中的每個(gè)進(jìn)程的限制。如果一個(gè)長(zhǎng)時(shí)間運(yùn)行的進(jìn)程超過了某個(gè)限制(如打開的文件數(shù)目),使用該命令就十分方便。因?yàn)闊o須使用 limit 命令后重新運(yùn)行該進(jìn)程,plimit 就可以修改正在運(yùn)行的進(jìn)程。

coreadm (Solaris >= 8):在以前沒有 coreadm 命令時(shí),core dumps 被置于進(jìn)程的工作目錄下。并且 core 文件將會(huì)互相覆蓋。而這個(gè)問題和其他更多問題都可以由 coreadm 來處理,它是一個(gè)管理 core 文件生成的工具。您可以通過該工具指定是否保存 core、core存儲(chǔ)的位置和應(yīng)保留的版本數(shù)目,等等。所有這些設(shè)置信息都是在重啟前通過 coreadm 修改 /etc/coreadm.conf 來保存的。

pgrep (Solaris >= 8):pgrep 在 /proc 中搜索符合給定規(guī)則的進(jìn)程,并返回進(jìn)程的 ID。其中一個(gè)很棒的選項(xiàng)是"-n",它返回的是最新的滿足條件的進(jìn)程號(hào)。

preap (Solaris >= 9):除去僵尸進(jìn)程。任何困于"z"狀態(tài)(由 ps 命令顯示)的進(jìn)程,該命令都可將之從系統(tǒng)中清除。

pargs (Solaris >= 9):顯示進(jìn)程的參數(shù)及環(huán)境變量。

nohup -p (Solaris >= 9):nohup 命令可以用于啟動(dòng)一個(gè)進(jìn)程,因此即使用于啟動(dòng)進(jìn)程的 shell 被關(guān)閉(即進(jìn)程獲得"SIGHUP"信號(hào)),該進(jìn)程仍然可以繼續(xù)運(yùn)行。這對(duì)于讓一個(gè)后臺(tái)任務(wù)不管碰到何種情況仍然可以繼續(xù)運(yùn)行是很有用的。但是如果您已經(jīng)啟動(dòng)了一個(gè)進(jìn)程,但稍后希望使它免受 HUP 信號(hào)的影響,該怎么辦呢?在Solaris 9中, nohup -p 可以獲取進(jìn)程 ID 并使之忽略 SIGHUP 信號(hào)。

prstat (Solaris >= 8):prstat 也是 top 命令,但擁有更多功能。這兩個(gè)命令都可以提供一個(gè)屏幕的關(guān)于進(jìn)程的有用信息以及其他的相關(guān)信息,并且能頻繁地更新,總之是個(gè)很棒的顯示系統(tǒng)性能的窗口。但 prstat 要比 top 更加精確。它還提供了一些很好的選項(xiàng)。"-a"可以同時(shí)顯示進(jìn)程與用戶的信息(默認(rèn)由 CPU hog 排序)。"-c"使其執(zhí)行很像 vmstat(在前一個(gè)報(bào)告下面接著顯示新的報(bào)告)。"-C"顯示在處理器集中的進(jìn)程。"-j"顯示一個(gè)"工程"中的進(jìn)程。"-L"顯示每個(gè)線程和每個(gè)進(jìn)程的信息。"-m"和"-v"顯示每個(gè)進(jìn)程的很多詳細(xì)的性能信息(包括 pages、traps、lock wait 和 CPU wait)。所有輸出數(shù)據(jù)都可以按照在內(nèi)存中設(shè)置的大小、虛擬內(nèi)存大小、運(yùn)行時(shí)間等等條件來排列。prstat 在沒有 top 的系統(tǒng)中是個(gè)十分有用的工具,并且由于它的精確性,所以很可能取代 top(有些地方考慮到它是個(gè)被支持的程序而使用它)。

trapstat (Solaris >= 9):trapstat 以及 lockstat 和 kstat 是 Solaris 中最難以理解的命令。它們顯示一個(gè)運(yùn)行的操作系統(tǒng)內(nèi)部中最具體的細(xì)節(jié)信息。每個(gè)命令對(duì)于解決 Solaris 系統(tǒng)中發(fā)生的古怪問題都是必不可少的。最好是將它們的輸出隨錯(cuò)誤報(bào)告一起提交,但進(jìn)一步的研究揭示,它們也能為一般應(yīng)用提供有用信息。

vmstat -p (Solaris >= 8):在這個(gè)選項(xiàng)可以使用之前,要確定是哪種類型的內(nèi)存命令導(dǎo)致系統(tǒng)頁面調(diào)度幾乎是不可能的(請(qǐng)查閱"se toolkit")。vmstat -p 可以解決此問題,因?yàn)樗坏@示您的系統(tǒng)是否處于內(nèi)存緊缺的情況(通過"sr"欄),而且還顯示是否是由以下內(nèi)容導(dǎo)致的:應(yīng)用程序的代碼,應(yīng)用程序的數(shù)據(jù)或 I/O 。"-p"能夠真正幫助找出 Solaris 中導(dǎo)致神秘的內(nèi)存問題的原因。

pmap -x (Solaris >= 8,Solaris >= 9中進(jìn)行了錯(cuò)誤修復(fù)):如果已經(jīng)得知進(jìn)程中有內(nèi)存問題,并且需要獲得更多內(nèi)存使用的詳細(xì)信息,就可以使用 pmap -x。該命令將解釋指定 ID 的目標(biāo)進(jìn)程的整個(gè)內(nèi)存映射信息,如下:


# 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       -

這里,我們可以看到每一塊內(nèi)存,它們被用于做什么,占用了多大的(虛擬的和真實(shí)的)空間以及其模式信息。

df -h (Solaris >= 9):這個(gè)命令在 Linux 上已經(jīng)應(yīng)用十分普遍,剛剛轉(zhuǎn)移到了 Solaris 平臺(tái)。df -h 以一種方便閱讀的形式顯示文件系統(tǒng)的概要信息:


$ df -h
Filesystem             size   used  a vail 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

結(jié)束語

    每個(gè)管理員都有一套日常使用的工具,以及另外一套在緊急情況下幫助解決問題的工具。本文介紹了各種各樣的的命令及選項(xiàng),它們不廣為人知但卻十分有用。您是否也保存了這樣一些偏愛的工具呢?如果有,請(qǐng)也發(fā)送給我,讓我可以擴(kuò)展自己的工具集。另外,可以發(fā)送一些您不喜歡或是感覺有危險(xiǎn)的工具,它們或許也可以變成有用的呢!
 

相關(guān)文章

最新評(píng)論