于吉吉的技術博客

          建造高性能門戶網

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            65 隨筆 :: 6 文章 :: 149 評論 :: 0 Trackbacks
          對于進程管理工具平時大多用的是ps,kill,top,sleep等等這些命令,平時linux的一些指令我都會做一些記錄,本著好記性不如爛博客的精神,也把進程管理的命令做一點系統性的記錄,參考資料基本是鳥哥還有網上的一些文章。

          ps
          ps命令主要是查看系統進程的狀態,平時最常用的命令是ps aux,然后再使用管道導向到grep查找特定的進程,然后進此特定進程進行操作。
          要對進程進行操作必須先了解到當前進程的情況,ps命令體現了現實當前運行進程的快照,ps和top和相似,但ps提供了更多的信息,可以確定哪些進程正在運行,哪些進程被掛起,運行了多長時間,以及進行使用的資源和進程的優先級,這些信息對我們都有很重要的作用,當我們使用ps aux可以獲得終端所有用戶的有關進程信息。



          逐列記錄:
          USER   表示啟動進程的用戶
          PID    表示進程標志號
          %CPU   表示該進程占用CPU的時間和進程總運行時間比例
          %MEM   表示該進程占用內存的時間和進程總運行時間比例
          VSZ    表示占用虛擬內存的大小
          RSS    表示占用物理內存的大小
          TTY    表示對應的終端號,其中“?”表示不占用終端
          STAT   表示進程的幾種運行狀態,D:不可中斷uninterruptible sleep;R:運行runnable;S:睡眠sleeping ;T:停止traced or stopped;Z:僵死a defunct (”zombie”) process;W:沒有足夠的內存進行分配;<:高優先序的進程;N:低優先序的進程;L:實時系統或I/O
          START  表示開始時間
          TIME   表示運行了多少時間
          COMMAND表示所執行的指令

          分享一些常用的ps指令
          查看chenyz用戶名所運行的進程
          root@tech163:/home/chenyz# ps -U chenyz -u chenyz u

          查看nginx的進程
          root@tech163:/home/chenyz# ps aux | grep nginx

          查看使用內存最多的前10個進程
          root@tech163:/home/chenyz# ps auxf | sort -nr -k 4 | head -10

          查看使用CPU最多的前10個進程
          root@tech163:/home/chenyz# ps auxf | sort -nr -k 3 | head -10

          pstree
          ps能夠得到精確的數據,但是數據龐大,這對于掌握系統整體的概括來說不是很容易。pstree剛好可以彌補這個缺憾,進程啟動的時候可能會產生自己的一個子進程,使用pstree就能夠將當前的程序以樹形結構呈現。




          kill
          kill的工作原理是:想linux系統的內核發送一個系統操作信號和某個程序的進程標識號,然后系統內核就可以對進程標識號指定的進程進行操作,當需要終端一個前臺進程的時候,可以使用ctrl+C進行結束,但對于一個后臺進程,一個組合鍵是無法進行中斷的,這個時候就必須使用kill命令。
          當我們啟動一個后端程序

          root@tech163:/home/chenyz# nohup ./hello.sh &
          [1] 15100

          可以使用ps來查看該進程

          root@tech163:/home/chenyz# ps aux | grep hello
          root     15100  0.0  0.0   1840   540 pts/0    S    14:57   0:00 /bin/sh ./hello.sh

          使用kill %1 或者 kill 15100 來終止該進程。
          如果一個程序已經徹底死掉,如果kill pid也沒法終止,則需要加上信號強度,最好的辦法是加上信號強度 -9 直接殺死父進程。
          跟kill相關的還有killall,killall通過程序名來直接殺死所有進程。

          top
          與ps提供的快照不同的是,top提供了一個當前運行系統實時動態的視圖,也就是正在運行的進程,在默認情況下,顯示系統中CPU使用率最高的任務,并每5秒刷新一次。



          第一行顯示了當前時間,登錄的用戶數,平均負載
          第二行顯示了所有進程數,運行(running),掛起(sleeping),停止(stopped),無用(zombie)的進程數
          第三行顯示了CPU的使用情況,用戶占得百分比,系統占得百分比,空閑的百分比
          第四行顯示了物理內存的使用情況,包括可以使用內存,已使用內存,空閑內存,緩沖區內存
          第五行顯示了交換區的使用情況,包括了總的交換區,使用的,空閑的,用于高速緩存的交換區
          第六行重啟一段再解釋

          PID    表示進程標識號
          USER    表示該進程的用戶名
          PR      表示進程的優先級
          NI      表示進程的優先級別數值
          VIRT    表示進程占用的虛擬內存
          RES    表示進程占用的物理內存
          SHR    表示進程使用的共享內存值
          S    表示進程的狀態,運行(running),掛起(sleeping),停止(stopped),無用(zombie)
          %CPU    表示占用CPU的使用率
          %MEM    表示占用物理內存的使用率
          TIME+    表示該進程占用CPU的總時間
          COMMAND 表示進程的命名名稱

          top是功能非常強大的監控系統,但是它的缺點是消耗很多的系統資源,在系統負載過高的時候查看進程盡量避免使用top。

          jobs
          如果你想知道有多少進程在后臺運行中,那就用jobs的指令吧,如果想知道進程的pid那就是用job -l
          先使一個進程運行在后臺
          root@tech163:/home/chenyz#./hello.sh &
          [1] 17299
          root@tech163:/home/chenyz# jobs -l
          [1]+ 17299 Running                 ./hello.sh &
          因為當前只有一個后臺任務在運行,所以后臺任務的號碼是[1],如果有第二個任務進入后端執行,那么[1]會跟著動態變化。

          fg
          剛剛我們將./hello.sh &進程放入后端執行,如果想要將后端的進程拿到前端來可以使用fg來處理

          root@tech163:/home/chenyz# jobs -l
          [1]+ 17299 Running  
          root@tech163:/home/chenyz# fg %1
          ./hello.sh

          bg
          與fg相反的是bg,如果想看到后端程序的運行情況,可以使用fg命令把它調到前臺,,bg可以使得多個進程放到后臺中執行。
          啟動一個進程,然后使用ctrl+z暫停,然后使用bg將該進程放入后臺執行

          root@tech163:/home/chenyz#  ./hello.sh
          ^Z   //{ctrl+z}暫停
          [1]+  Stopped                 ./hello.sh
          root@tech163:/home/chenyz# jobs;bg %1
          [1]+  Stopped                 ./hello.sh
          [1]+ ./hello.sh &
          root@tech163:/home/chenyz# jobs
          [1]+  Running                 ./hello.sh &

          跟進程管理相關的命令還有很多如nohup,sleep,nice,renice...后續再記錄


          posted on 2011-01-21 17:56 陳于喆 閱讀(1101) 評論(0)  編輯  收藏 所屬分類: linux
          主站蜘蛛池模板: 江北区| 吴江市| 江津市| 临高县| 马边| 广宗县| 涪陵区| 民丰县| 六枝特区| 当雄县| 临漳县| 轮台县| 黔西县| 梨树县| 松江区| 环江| 田林县| 昌图县| 麻栗坡县| 山阴县| 香港 | 固阳县| 榕江县| 濮阳县| 洛川县| 舒城县| 临桂县| 林芝县| 宁强县| 乌拉特后旗| 大余县| 淳化县| 米易县| 民和| 威信县| 德阳市| 威海市| 勐海县| 商丘市| 海盐县| 巴楚县|