2016年4月27日 星期三

子程序使用的系統資源

前面提到程式可以產生很多子程序,這邊則是說明如何監控這些子程序,進而看要不要刪除這些死掉的程序。

首先執行《Bash的影分身術:Fork》裡面的fork.sh,下面第一個指令是看fork.sh與其產生的子程序的process IDs,第二個指令則是用top看前面20個子程序吃掉的系統資源
$ pgrep fork.sh
top -p `pgrep fork.sh | head -n 20 | tr "\\n" "," | sed 's/,$//'`
  • top -p:透過process IDs來監控使用資源
  • pgrep fork.sh:抓出fork.sh的PID與其子程式的PID
  • head -n 20:只取前面20行的PIDs,也可以用 tail -n 20 取後面20行
  • tr "\\n" "," :把很多行變成一行,中間用逗點區隔
  • sed 's/,$//'`:把一行中結尾的逗點去除

若想要刪除子程序,可以用下面兩個方式:
  • kill `pgrep fork.sh`
  • kill `pgrep -P fork.sh的PID`
第一種會刪除所有名字有fork.sh的程序(母程序與子程序都會刪除,名字一樣也會刪除);第二種則只有刪除子程序,但第二種必須要在母程序還沒有被終止前才有用

_EOF_

沒有留言:

張貼留言