1. 程式人生 > >進程控制-ps、top

進程控制-ps、top

ont 滿足 lastlog 計算 stopped 多個進程 代碼 詳細信息 第一部分

進程控制 ps、top 查看系統內核:# uname -r -n -a # cat /etc/redhat-release # lsb_release -d 網卡IP地址:# ifconfig # ping -c n(次數) IP|hostname # setup|/etc/sysconfig/network-scripts/ifcfg-ethx # uptime # lastlog 進程查看: 進程是正在運行的程序,或者說是已啟動的可執行程序的運行實例,進程具有自己的生命周期和各種不同的狀態。 特點: 1、獨立性,進程是系統中獨立存在的實體,它可以擁有自己的獨立資源,每一個進程都有自己的私有地址空間。在沒有經過進程本身允許的情況下,一個用戶進程不可以直接訪問其他進程的地址空間。 2、動態性,進程與程序的區別在於,程序只是一個靜態的指令集合,而進程是一個正在系統中活動的指令集合。進程具有自己的生命周期和各種不同的狀態。 3、並發性,多個進程可以在單個處理器上並發執行,多個進程之間不會互相影響。 線程:也被稱作輕量級進程,線程是進程的執行單元,一個進程可以有多個線程。 線程不擁有資源,它與父進程的其它線程共享該進程所擁有的資源。線程的執行時搶占式的。 程序: 二進制文件,靜態 /bin/date, /usr/sbin/httpd,/usr/sbin/sshd, /usr/local/nginx/sbin/ngix 進程: 是程序運行的過程, 動態,有生命周期及運行狀態。 進程的生命周期: 父進程復制自己的地址空間(fork)創建一個新的(子)進程結構。每個新進程分配一個唯一的進程 ID (PID),滿足跟蹤安全性之需。PID 和 父進程 ID (PPID)是子進程環境的元素,任何進程都可以創建子進程,所有進程都是第一個系統進程的後代: 子進程繼承父進程的安全性身份、過去和當前的文件描述符、端口和資源特權、環境變量,以及程序代碼。隨後,子進程可能exec自己的程序代碼。通常,父進程在子進程運行期間處於睡眠(sleeping)狀態。當子進程完成時發出(exit)信號請求,在退出時,子進程已經關閉或丟棄了其資源環境,剩余的部分稱之為僵停(僵屍Zombie)。父進程在子進程退出時收到信號而被喚醒,清理剩余的結構,然後繼續執行其自己的程序代碼。 進程的狀態: R 運行 S 可中斷睡眠 Sleep D 不可中斷睡眠 T 停止的進程 Z 僵屍進程 X 死掉的進程 【看不見】 靜態查看進程——ps: ps:用來查看進程信息,功能強大,用法也比較復雜,最常用用的參數有:ps aux ,ps -ef ,ps -ely 選項: a:顯示現行終端機下的所有進程,包括其他用戶的進程; u:顯示進程擁有者、狀態、資源占用等的詳細信息(註意有“-”和無“-”的區別)。 x:顯示沒有控制終端的進程。通常與 a 這個參數一起使用,可列出較完整信息。 -e:顯示所有進程。 -f:完整輸出顯示進程之間的父子關系 -l:較長、較詳細的將該 PID 的的信息列出; 註:ps -aux 不同於 ps aux ps aux: USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 19356 1432 ? Ss 19:41 0:03 /sbin/init 說明: USER: 運行進程的用戶 PID: 進程ID %CPU: CPU占用率 %MEM: 內存占用率 VSZ: 占用虛擬內存 RSS: 占用實際內存 駐留內存 TTY: 進程運行的終端 STAT: 進程狀態 man ps (/STATE) R 運行 S 可中斷睡眠 Sleep D 不可中斷睡眠 T 停止的進程 Z 僵屍進程 X 死掉的進程 Ss s進程的領導者,父進程 S< <優先級較高的進程 SN N優先級較低的進程 R+ +表示是前臺的進程組 Sl 以線程的方式運行 START: 進程的啟動時間 TIME: 進程占用CPU的總時間 COMMAND: 進程文件,進程名 ps aux --sort -%cpu|head auxf:顯示父子關系 axo:自定義顯示字段 # ps axo user,pid,%cpu,%mem,rss,command|head pidof 進程名:查看指定進程的PID pstree:查看進程樹 動態查看進程——top 在top的執行過程中,還可以使用以下的按鍵命令: h|? 幫助 M 按內存的使用排序 P 按CPU使用排序 N 以PID的大小排序 R 對排序進行反轉 f 自定義顯示字段 1 顯示當前系統的cpu的邏輯數量 T:按該進程使用的CPU時間累積排序 k:給某個PID一個信號(signal),默認值是信號15 r:重新安排一個進程的優先級別 s:改變兩次刷新之間的時間。默認是5秒 q:退出程序。 top命令常用的選項: -d:後面可以接秒數,指定每兩次屏幕信息刷新之間的時間間隔; -p:指定某個進程來進行監控; -b -n:以批處理方式執行top命令。通常使用數據流重定向,將處理結果輸出為文件; top查看 第一部分:系統整體統計信息 top - 14:15:04 up 47 min, 2 users, load average: 0.25, 0.18, 0.12 Tasks: 235 total, 1 running, 234 sleeping, 0 stopped, 0 zombie Cpu(s): 8.9%us, 1.0%sy, 0.0%ni, 90.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 7944064k total, 746164k used, 7197900k free, 35724k buffers Swap: 1048568k total, 0k used, 1048568k free, 261492k cached load average: 0.86, 0.56, 0.78 : 系統最近 1分鐘,5分鐘,15分鐘的平均負載 計算方法:平均負載/邏輯cpu數量 查看物理CPU的個數 #cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l 查看邏輯CPU的個數 #cat /proc/cpuinfo |grep "processor"|wc -l 查看CPU是幾核 #cat /proc/cpuinfo |grep "cores"|uniq 一般來說,物理CPU個數×每顆核數就應該等於邏輯CPU的個數,如果不相等的話,則表示服務器的CPU支持超線程技術 nice,renice調整進程的優先級 -20 ~ 19 數字越低,優先級越高,系統會按照更多的cpu時間給該進程 更改現有進程的nice級別 1. 使用top更改nice級別 r 調整進程的優先級(Nice Level) (-20高) ---0--- (19低) 2. 使用shell更改nice級別 # renice -* PID eg:# renice -20 10089 進程控制: kill,killall,pkill,skill 給進程發送信號 # kill -l 列出所有支持的信號 編號 信號名 1) SIGHUP 重新加載配置 2) SIGINT 鍵盤中斷^C 3) SIGQUIT 鍵盤退出 9) SIGKILL 強制終止 15) SIGTERM 終止(正常結束),缺省信號 18) SIGCONT 繼續 19) SIGSTOP 停止 20)SIGTSTP 暫停^Z # fg 把最後放在後臺運行的進程再次放到終端前臺 # fg %1 將作業1調回到前臺 # bg %2 把後臺編號為2的進程恢復運行狀態 # w 14:08:50 up 4:06, 5 users, load average: 0.25, 0.55, 0.70 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 :0 10:04 4:04m 12:48 12:48 /usr/bin/Xo root pts/0 :0.0 10:04 0.00s 38.47s 0.02s w root pts/2 :0.0 10:04 2:29m 0.07s 0.07s bash root pts/3 :0.0 10:04 3:41m 0.00s 0.00s bash root pts/4 172.16.1.180 13:55 11:41 3:07 46.62s rsync -alvR 說明: user:登錄的用戶名 tty:登錄後系統分配的終端號 from:遠程主機,即從哪裏登錄的 login@:何時登錄 idle:空閑了多長時間,表示用戶閑置的時間。這是一個計時器,一旦用戶執行任何操作,該計時器便會被重置。 jcpu:和該終端(tty)連接的所有進程占用的cpu時間,這個時間裏並不包括過去的後臺作業時間,但卻包括當前正在運行的後臺作業 所占用的時間 pcpu:指當前進程(即what項中顯示的進程)所占用的cpu時間。 what:當前正在運行進程的命令行。

進程控制-ps、top