天天進步一點點:(13) 進程

進程shell

1.        幾個查看命令
發現一個問題,若是選項不帶-的話,顯示的更加簡潔。並且使用ps –aux的時候,會有一個報錯。
ps –l:只能查閱本身的bash程序
ps aux:查閱全部的系統進程
ps ef:比ps –aux簡潔易讀一些
ps aux | egrep 「cron|syslog」 :結合egrep同時查看多個進程
2.        關於殭屍程序(zombie)
殭屍程序是指程序結束了可是還一直存在內存當中。形成殭屍程序的緣由是由於該程序已經執行完畢,或者因故應該終止了,可是該程序的父程序卻沒法完整的節哀那個該程序結束掉,形成該程序一直存在內存中。
若是ps的時候發現某個程序的CMD後面還接上了<defunct>時,就表示該程序是殭屍程序。
相對應的孤兒進程就是父進程掛掉了可是子進程還存在。系統是不容許這種狀況出現的,init將成爲該子進程的父進程。
3.        init是系統第一個啓動的程序,是全部程序的父進程。他是沒法被kill掉的,由於他被kill了系統就掛掉了。
4.        持續檢測整個系統的程序工做狀態:top命令
top –d x :x表示更新時間,默認爲5秒
top命令默認是以CPU的使用率進行排序的;輸入M表示之內存使用率排序,輸入N表示以PID號碼進行排序,輸入T表示由CPU使用時間排序,輸入r表示修改nice值。
若是須要查看某個進程的資源使用狀況,能夠經過top –p xxx 命令實現,-p參數表示接PID。
5.        pstree:用於查找程序之間的依賴關係。
pstree –A或者pstree –U:表示若是有亂碼的話,嘗試以ansi碼或者萬國碼輸出
pstree –Aup :輸出時攜帶user和PID信息
6.        進程的管理
使用kill和killall命令實現對進程的管理。這個命令在前面有所介紹。
kill -1 xxx:-1表示進程從新啓動,xxx表示進程的PID
查找進程PID比較麻煩,可使用killall命令跟服務名的方式,例如killall –i -1 syslogd 。-i表示交換式,就是kill的時候會請求你的確認,若是有多個相同進程名的話(如bash),則-i頗有用。
另外還有兩個特別好用的命令,在shell編程中使用普遍, pgrep pkill。例如:pgrep httpd可以提取出httpd的全部進程,pkill httpd可以終止全部httpd的進程。
7.        進程優先級
PRI(new)=PRI(old)+nice
nice值使咱們能夠手動調整的,使用nice或者renice或者top命令後鍵入r進行調整。root帳戶的nice值可調範圍在-20~19,普通帳戶的nice值可調範圍在0~19。
nice –n x command
例如:nice –5 vi &將vi進程的nice值調整爲5
若是是已經在運行中的進程,使用renice命令調整。
renice n pid :n表示nice值,pid表示須要調整的進程pid, 注意 n 前面沒有 - 參數
8.        使用free能夠查看系統CPU利用率和內存使用等信息
free –m
9.        uptime,查看系統啓動時間,運行時間,目前有幾個登陸者,CPU使用率的平均狀況等信息。
10.     vmstat (victual memory statics)能夠動態瞭解系統資源的運做,例如等待運行的程序數量,被阻塞的程序數量,CPU空閒,交換分區(swap)的交換出去的進程數量等,是一個很好用的工具。須要關注的有r(running,等待的進程,不要超過2倍cpu數量),b(block,阻塞的進程,爲0比較好),swpd(被交換的進程,爲0比較好),id(idle,cpu空閒百分比,大於50%較好)。
vmstat 5 5 5s統計一次,共計統計5次
11.     fuser,用於瞭解當前文件系統正在被哪些程序使用,在umount被拒絕的時候很好用。
fuser –muv / :/ 能夠切換成其餘文件系統。u表示列出進程所屬用戶,v表示verbose,m表示能夠查看文件系統。若是值查看某個文件則去掉m。可是通常只有fifo類型的文件才使用此命令纔有顯示(find / –type p)
12.     lsof(list open files),是一個列出當前系統進程的相應的打開文件的工具。與fuser工具做用相反。
lsof –u ila | grep vim
13.     找出某個程序的PID
e.g.
pidof –s vi :找出正在運行的vi程序的PID。
查看某個用戶開啓的進程: ps –uU usrxxx
關閉圖形程序:xkill
相關文章
相關標籤/搜索