




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、.Linux系統(tǒng)管理員工具包 進程管理技巧Linux系統(tǒng)管理員工具包:進程管理技巧2020-11-30 14:45本文屬轉載自網絡,僅供個人娛樂參考使用,如有轉載請標明出處,假設有侵權等后果,本人概不負責!本文章假如無意對別人著作權及相關權利構成進犯,一經權利人要求,本人將立即刪除。學習如何獲取所需的UNIX進程信息。對于所有的系統(tǒng)管理員來說,理解自己的UNIX系統(tǒng)正在運行的進程是最根本的要求之一。標準的進程列表很有用,但是它所提供的信息格式不正確或者沒有包含所需的進程或信息。能從進程列表中選擇特定類型的數(shù)據(jù)將使管理任務更加容易。在本文中,您將理解到如何擴展該進程列表以改善信息的可讀性,或者提
2、供在其他地方不易獲得的摘要和信息。您還將看到如何跨不同的UNIX平臺獲取進程信息的標準化的方法。關于本系列通常,UNIX管理員都擁有一套他/她經常使用協(xié)助管理進程的實用程序、技巧和系統(tǒng)。有一些重要的實用程序、命令行鏈以及腳本可用來簡化各種處理過程。這些工具中有一部分來自于操作系統(tǒng),而大部分的技巧那么來源于長期的經歷和簡化系統(tǒng)管理員工作的要求。本系列文章主要專注于最大限度地利用各種UNIX環(huán)境中可用的工具,包括簡化異類環(huán)境中的管理任務的方法。使用psps命令行工具列出了正在運行的進程。該工具存在于所有的UNIX變種中,并且大體上都按一樣的根本方式工作,即向內核懇求正在運行的進程列表,然后報告進程
3、列表及其屬性,如內存使用情況、運行時間和其他詳細信息。ps工具實際上是一個非常強大的工具,盡管許多管理員可能僅使用可用選項中的某一兩項來查看所需的信息??梢岳脙戎妹钚羞x項從命令中獲取更多的信息,甚至可以將ps通過管道與其他命令結合起來,以獲取所需的準確信息。列出所有進程即使是以root身份登錄,ps的標準輸出也只列出了您所運行的進程。根據(jù)您的UNIX環(huán)境是基于BSD或者AT&T,SysV UNIX根底部分對用來獲取系統(tǒng)中其他進程信息的根本命令行選項做出相應的變動,或者改變所顯示的信息。在基于BSD的UNIX環(huán)境中,輸出包括進程ID、終端、狀態(tài)、時間在CPU中的執(zhí)行時間,單位為秒,而
4、不是進程開場運行的時間,以及所執(zhí)行的命令,如清單1所示。清單1列出BSD UNIX變種上的進程$ps PID TT STAT TIME COMMAND 391 p5 S0:00.24/bin/bash9165 p5 S+0:00.50 emacs 476 p6 S0:01.03/bin/bash9299 p6 S0:00.09 xterm9319 p6 S0:00.07 xterm9423 p6 S0:00.12 ftp atuin9513 p6 R+0:00.01 ps9301 p7 Ss+0:00.01/usr/X11R6/bin/luit9302 p8 Ss+0:00.03 bash93
5、21 p9 Ss+0:00.01/usr/X11R6/bin/luit9322 pa Ss+0:00.02 bash在SVR4環(huán)境中,所提供的列較少您得不到進程狀態(tài)信息,如下面的清單2所示。清單2.列出SVR4 UNIX變種上的進程$ps PID TTY TIME CMD19915 pts/3 00:00:00 bash29145 pts/3 00:00:00 emacs32256 pts/3 00:00:00 emacs26986 pts/3 00:00:00 xterm31303 pts/3 00:00:00 ftp31358 pts/3 00:00:00 ps要獲取系統(tǒng)中正在運行的所有進
6、程的列表,需要根據(jù)所使用的UNIX變種來使用不同的命令行選項。在BSD UNIX中,-a命令行選項列出了包括您自己在內的所有用戶的進程。然而,這個列表并不會包括那些沒有控制終端的進程比方那些在啟動時開場執(zhí)行的進程、守護進程以及那些作為cron工作的一部分的進程。要獲取所有正在運行的進程的列表,必須使用-A命令行選項請參閱清單3。清單3.列出BSD系統(tǒng)上的所有進程$ps-A PID TT STAT TIME COMMAND 1?S s0:15.47/sbin/launchd 23?Ss 0:00.02/sbin/dynamic_pager-F/private/var/vm/swapfile 27
7、?Ss 0:00.95 kextd 49?Ss 0:05.17/usr/sbin/configd 50?Ss 0:01.89/usr/sbin/coreaudiod 51?Ss 0:04.40/usr/sbin/diskarbitrationd 52?Ss 0:00.08/usr/sbin/memberd-x 53?Ss 0:02.80/usr/sbin/securityd 55?Ss 11:03.59/usr/sbin/notifyd 57?Ss 0:01.13/usr/sbin/DirectoryService.8051 p2 S+0:00.61 ssh rootbear 292 p3 S
8、s 0:00.02 bash 372 p3 S+0:00.42 ssh adminatuin 312 p4 Ss+0:00.03 bash 332 p5 Ss 0:00.03 bash 391 p5 S0:00.24/bin/bash9165 p5 S+0:00.50 emacs 352 p6 Ss 0:00.04 bash 476 p6 S0:01.04/bin/bash9299 p6 S0:00.09 xterm9319 p6 S0:00.07 xterm9423 p6 S0:00.14 ftp atuin9520 p6 R+0:00.01 ps-A9301 p7 Ss+0:00.01/u
9、sr/X11R6/bin/luit9302 p8 Ss+0:00.03 bash9321 p9 Ss+0:00.01/usr/X11R6/bin/luit9322 pa Ss+0:00.02 bash-A命令行選項與同時使用-a和-x選項等效,其中-a顯示擁有控制終端的進程,-x顯示沒有控制終端的進程。在SVR4變種中,顯示所有正在運行的進程不管它是否擁有控制終端的命令行選項是-e。從所顯示的進程來看,它和BSD的-A選項是等價的??梢栽谇鍐?中看到輸出的例如。清單4.SVR4環(huán)境中的進程列表$ps-e PID TTY TIME CMD 0?15:24 sched 1?0:00 init 2?
10、0:00 pageout 3?0:00 fsflush 308?0:00 devfsadm 7?0:06 svc.star 9?0:10 svc.conf 506?0:00 htt_serv 260?0:00 rpcbind 259?0:00 cron 52?0:00 dhcpagen 282 console 0:00 ttymon 267?0:00 lockd 264?0:00 statd 90?0:00 sysevent.462?0:00 smcboot 464?0:00 smcboot 463?0:00 smcboot 473?0:00 htt 552?0:00 in.telne 527
11、?0:00 dmispd 548?0:01 snmpd輸出的區(qū)別在于所顯示的信息列,但是可以通過指定所需要的列來進展修改。列出指定信息ps工具包含許多標準的顯示列集。例如在SVR4中,經常使用ps-ef來獲取關于列出進程的更詳細的信息,包括父進程ID、處理器利用率、開場時間以及更詳細的命令行,如清單5所示。清單5.擴展輸出ps-ef UID PID PPID CSTIME TTY TIME CMD root 00 015:56:26?15:24 sched root 10 015:56:26?0:00/sbin/init root 20 015:56:26?0:00 pageout root
12、30 015:56:26?0:00 fsflush root 308 10 15:57:09?0:00 devfsadmd root 71 015:56:29?0:06/lib/svc/bin/svc.startd.root 562 10 15:58:17?0:00/usr/lib/sendmail-bd-q15m root 576 555 116:01:47 pts/1 0:00 ps-ef root 416 10 15:57:14?0:00/usr/sbin/syslogd smmsp 561 10 15:58:17?0:00/usr/lib/sendmail-Ac-q15m.root 5
13、52 283 015:57:47?0:00/usr/sbin/in.telnetd root 527 10 15:57:22?0:00/usr/lib/dmi/dmispd root 548 10 15:57:24?0:01/usr/sfw/sbin/snmpd對于BSD環(huán)境,通常添加-l選項,它為每個進程產生"長"輸出,如清單6所示。清單6.在BSD中顯示更詳細的信息$ps-alUID PID PPID CPU PRI NI VSZ RSS WCHAN STAT TT TIME COMMAND 09165 391 031 057896 6376-S+p5 0:00.50
14、emacs501 352 349 031 027784 52-Ss p6 0:00.04 bash 0476 352 031 027784 600-S p6 0:01.05/bin/bash 09299 476 031 044988 1880-S p6 0:00.09 xterm 09319 476 031 044988 1888-S p6 0:00.07 xterm 09423 476 031 027504 488-S p6 0:00.15 ftp atuin 09540 476 031 027384 504-R+p6 0:00.01 ps-axl 09301 9299 031 027332
15、 452-Ss+p7 0:00.01/usr/X11R6/bin/luit 09302 9301 031 027784 888-Ss+p8 0:00.03 bash 09321 9319 031 027332 452-Ss+p9 0:00.01/usr/X11R6/bin/luit 09322 9321 031 027784 888-Ss+pa 0:00.02 bash這些選項存在的問題是,盡管它們顯示了更多的信息,但這些信息并不總是特別有用,或者在尋找某個特定進程時包含了不希望看到的擾亂顯示的信息。幸運的是,所有版本的ps還包括了指定要顯示的列的功能??梢詮V泛地使用這種命令,不管是僅提取所需
16、要的信息,還是在異類環(huán)境中使用它來創(chuàng)造標準化的跨不同UNIX環(huán)境的輸出。要使用這一特性,可使用-o命令行選項,并列出要顯示的列,以逗號做列的分隔符。盡管可選擇的列的范圍有一些差異,但在不同的UNIX版本中,大部分列都是標準的。例如,所有變種中都有pid、ppid父進程ID、command、RSS駐留集大小或內存使用情況以及priority。使用時,可以用-o來選擇列及其顯示順序。例如,要獲取pid、ppid和commond,在BSD中可以使用-opid,ppid,command,如清單7所示,或者在SVR4中使用-opid,ppid,comm,如清單8所示。清單7.在BSD中選擇特定的列$ps
17、-o pid,ppid,command PID PPID COMMAND 391 332/bin/bash9165 391 emacs清單8.在SVR4中選擇特定的列$ps-opid,ppid,comm PID PPID COMMAND 555 552-sh 622 555 ps選擇了想要的列后,可能會選擇信息的排列順序。ps的缺省設置是根據(jù)進程ID來排列進程列表,但是這樣可能會隱藏正在查找的信息。當查找內存饑餓的進程時,按內存使用量來排列顯示結果比按進程ID更加有用。有些ps變種通過使用命令行選項來支持這種情況。BSD變種中使用-m選項來按內存使用情況排序,或者使用-r來按CPU使用情況排序
18、。許多SVR4變種沒有該問題的明確解決方法,但是可以在所有環(huán)境中通過將ps和sort進展組合來生成類似的結果。例如,要獲取按CPU使用量排序的進程列表,可以在BSD中使用清單9所示的命令。清單9.在BSD中跟蹤CPU使用情況$ps-A-o pid,%cpu,command|sort-n+1.358 0.1 ftp11425 0.1/bin/bash28684 0.3 trivial-rewrite-n rewrite-t unix-u 356 0.4 ssh 354 0.5 as23988 1.1 emacs 136 14.6 cc1plus26306 23.6 cpp在SVR4中,需要將%c
19、pu改為pcpu,而該命令在其他方面是一樣的請參見清單10。清單10.在SVR4中跟蹤CPU使用情況$ps-e-opid,pcpu,comm|sort-n+1.3 0.1 fsflush 555 0.1-sh 627 0.2 sort 628 0.2 ps該命令鏈是可行的,因為已經指定了進程列表的排列順序,因此可以按照這些列進展排序以獲取真正想要的信息。假如想使用不同的標準來查找進程,還有其他的可用方案。列出特定進程顯然,在獲取了正在運行的進程列表之后,也許希望列出特定的進程。一個顯而易見的方法就是將ps的輸出與grep結合起來,以提取所需的信息。在一些UNIX變種中,可以通過一些特定的實用程
20、序來完成這項工作,例如pgrep,但是假如要查找一些特定的命令,使用grep也同樣是很有效的。$ps-ef|grep bash ps命令還支持根據(jù)更明確的標準來顯示進程,例如用戶ID、父進程或控制終端。例如,-U命令行選項限定了進程列表只顯示指定用戶名的進程。例如,要顯示當前屬于root用戶的進程,請參閱清單11。清單11.根據(jù)用戶列出進程$ps-U rootPID TTY TIME CMD 0?15:24 sched 1?0:00 init 2?0:00 pageout 3?0:02 fsflush 308?0:00 devfsadm 7?0:06 svc.star.552?0:00 in.
21、telne 527?0:00 dmispd 629 pts/1 0:00 ps 548?0:01 snmpd要獲取指定終端的所有進程,使用-t,如清單12所示。清單12.根據(jù)終端列出進程$ps-t 3PID TTY TIME CMD19915 pts/3 00:00:00 bash29145 pts/3 00:00:00 emacs32256 pts/3 00:00:00 emacs在有了這些信息后,也許想要用它來對進程進展相應的操作。向多個線程發(fā)送信號當找到了要查詢的進程后,最常用的命令之一是kill。它向一個或多個進程發(fā)送特定的信號。對于啟動了多個線程或子線程的守護進程的情況,可以嘗試向父
22、進程發(fā)送信號,以此向所有的進程發(fā)送信號。然而,這種方法并不是對所有的守護進程和應用程序都有效。顯然,您希望防止手動挑選出這些進程。有些UNIX變種中有一個名為pkill的工具,它可以向滿足特定形式或其他標準的進程例如終端、進程組、用戶ID以及組ID列表發(fā)送一樣的信號??梢酝ㄟ^鏈接ps、grep、awk、xargs以及kill命令的方式來模擬這一根本操作,向滿足特定命令形式的多個進程發(fā)送信號。例如,要向所有命令中包含" d"的進程發(fā)送kill信號,可以使用:$ps-e-opid,command|grep d|awk'print'|xargs kill-9假如對
23、單個元素進展研究,將更容易理解它。$ps-e-opid,command該命令顯示了所有正在運行的進程的列表這是在SVR4系統(tǒng)中,而在BSD中那么應使用-A。它僅顯示了進程ID和被執(zhí)行的命令。不需要任何其他的信息,而且使用更詳細的輸出可能會引入其他方面符合搜索條件的文本。$ps-e-opid,command|grep d該命令僅提取了命令中含有 d的進程因為進程列表中產生的唯一其他信息是進程ID:$ps-e-opid,command|grep d|awk'print'通過使用awk,僅挑選除去打印輸出中的第一個參數(shù),即進程ID。$ps-e-opid,command|grep d|
24、awk'print'|xargs kill-9 xargs命令接收空白字符分隔的工程列表其中空白字符包括回車、換行、制表符以及一個或多個空格,并把它格式化為參數(shù)列表傳遞給指定的命令,在本例如中是kill命令。最好把它放進腳本程序中,并取一個適當?shù)拿?,例如pkill或者killbyname??梢栽O置該腳本接收兩個參數(shù),信號和匹配文本,甚至還可以考慮操作系統(tǒng)的差異,如清單13所示。清單13.通過命令字符串向進程發(fā)送消息#!/bin/sh HOSTTYPE=uname-sSIGNAL= STRING= if-z""-o-z""then ech
25、o Usage:message signal string exit 1fi case$HOSTTYPE in Darwin|BSDps-a-opid,command|grep$STRING|awk'print;'|xargs kill$SIGNAL;Linux|Solaris|AIX|HP-UXps-e-opid,command|grep$STRING|awk'print;'|xargs kill$SIGNAL;esac這里所顯示的根本技術可以用于其他類似的排序規(guī)那么。計算內存使用情況ps工具還提供了我們目前尚未涉及的兩個列。RSS列提供了進程的"駐
26、留集大小",這是該進程所使用的物理內存量,也是進程占用多少實際內存的指示。VSZ列詳細列出進程正在使用的內存總量,包括所分配的內部存儲,但通常已被交換到磁盤。對于大多數(shù)ps變體而言,這兩個列都是比較常用的。確定這兩個數(shù)據(jù)可以更好地理解內存的使用情況。假如將ps與grep組合起來選擇特定的進程,并使用awk來計算總量,就可以獲取單個應用程序或者某個應用程序及其子進程正占用多少物理內存和虛擬內存。例如,要確定bash進程所使用的物理內存和虛擬內存,可以使用清單14中的命令。清單14.使用ps和awk計算內存使用情況$ps-A-o rss,vsz,command|grep bash|awk
27、'rss+=;vsz+=ENDprint"Real:",rss,"Virtual:",vsz'Real:4004 Virtual:305624這在診斷內存和交換區(qū)使用情況的問題時特別有用。使用與作業(yè)控制兼容的Shell對于一個典型的系統(tǒng)管理員來說,在任一時刻運行一或兩個以上的特定任務是很平常的事。盡管在任何時刻與效勞器的連接可能不止一個,不管是多終端窗口例如通過xterm還是其他的終端,或者通過SSH、Telnet的遠程連接,有時候需要在活動的Shell或者環(huán)境中控制或監(jiān)視多個進程。所有的Shell都支持在命令的末尾附加連字符&來
28、使命令自動在后臺運行。但有時希望將一個交互應用程序如一個編輯器放到后臺,以便可以運行一個Shell命令,然后返回到編輯器會話。這種控制后臺進程的才能稱為作業(yè)控制,它是Korn Shell、C Shell以及開源的Shell例如bash和zsh的標準特性。為了實如今Shell中每次啟動一個命令時在后臺運行的根本作業(yè)控制,命令可以是任何合法的命令行,甚至是內聯(lián)腳本給出了作業(yè)引用ID。$find/-name"core"/tmp/corelist 2&1&311957可以使用jobs命令獲取正在后臺運行的作業(yè)列表,如清單15所示。清單15.使用jobs命令$jobs
29、1-Stopped emacs MCSLP/Intranet/News.pm2+Stopped emacs MCSLP/Intranet/Media.pm3Running find/-name"core"/tmp/corelist 2&1&在該清單中,第二個emacs命令使用了+號標注。這表示Shell認為它是當前的活動作業(yè)。先前啟動的find不是活動的工作,因為它不需要進展交互盡管它產生輸出,它并不需要輸入來繼續(xù),因此不是活動的進程。第一個emacs進程使用了-標注,說明Shell認為它先前是活動的命令??梢苑謩e使用%+和%-字符串來引用這些作業(yè)??梢酝ㄟ^在fg后輸入作業(yè)編號或者作業(yè)字符串%+、%-來將任何正在運行的作業(yè)切換為前臺進程。假如省略了引用,Shell就切換到當前的活開工作。要掛起當前運行的進程,按Control-Z??梢允褂孟旅娴拇a進展重新配置:ftp3+Stopped ftp
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年班主任工作總結模版
- 初二英語上學期個人教學工作總結模版
- 3月份計劃計劃生育個人工作總結模版
- 農業(yè)部初步設計要求
- 四年級美術教學工作總結模版
- 小學數(shù)學骨干教師工作總結模版
- 供電所安全生產總結模版
- 兒童牙科護理
- 小米2新品發(fā)布會官方完整版
- 物流與供應鏈管理(培訓)
- 圓柱的體積說課稿省公開課一等獎全國示范課微課金獎課件
- 高中化學高一化學環(huán)境保護資料省公開課一等獎全國示范課微課金獎
- DB32T3748-2020 35kV及以下客戶端變電所建設標準
- 2024-2030年國內汽車電動尾門行業(yè)市場深度分析及發(fā)展現(xiàn)狀與趨勢研究報告
- MOOC 青草藥識別-福建農林大學 中國大學慕課答案
- 青春期的煩惱新專家講座
- PFMEA(中英文標準模板)
- JGJ79-2012 建筑地基處理技術規(guī)范
- 2024年市政工程市場洞察報告
- 水工機械設備維護檢修規(guī)程
- 醫(yī)院財務科培訓課件
評論
0/150
提交評論