歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> 【Linux學習筆記六】進程管理

【Linux學習筆記六】進程管理

日期:2017/3/3 13:59:08   编辑:Linux技術
【注】文章中的所有截圖均為centos下實驗結果,親測命令正確= ̄ω ̄=
[b]【參考資料】《Linux從入門到精通(第2版)》劉憶智
等編著
[/b]
1、一個小實驗:結束一個失控的程序
主目錄中用文本編輯器創建一個名為badpro的文本文件,內容如下:
[code]#! /bin/bash
while echo "I'm making files!!"
do
mkdir adir
cd adir
touch afile
sleep 2s##非常重要,使得程序每次建立後“休息”2s,比較溫和
done

$ chmod +x badpro##為程序加上可執行權限
$ ./badpro &
##後台運行

$ ps aux | grep badpro##通過ps命令查看進程的PID號(唯一標識一個進程)。用管道方式獲取並查看,第二個字段為進程號
$ kill 12974
##根據進程號殺死進程

$ rm -r adir##刪除創建的目錄和文件
2、什麼是進程
進程是操作系統的一種抽象概念,用來表示正在運行的程序。內核中重要的進程信息包括:進程的內存地址、進程的當前狀態、進程正在使用的資源、進程的優先級(謙讓度)、進程的屬主。
[b]【轉載請注明文章出處:http://blog.csdn.net/iamthezbl/article/details51305604
[/b]
3、進程的屬性
PID:進程的ID號,Linux不僅自己使用PID來確定進程,還要求用戶在管理進程時也要提供相應的PID號。
PPID:父進程的PID,幾乎所有的進程由另一個進程創建,創建該進程的進程稱為父進程。應用程序只能通過克隆自己產生新進程。
UID和EUID:真實和有效的用戶ID,標注了進程的屬主和訪問權限
GID和EGID:進程創建者所屬的組,當進程創建一個新文件時,該文件采用進程的GID。
謙讓度和優先級:謙讓度為優先級的相反概念,可以由用戶設置。
4、進程監視:ps命令
$ ps aux##顯示當前系統上運行的所有進程的信息,每個字段的含義如下:

USER:進程創建者的用戶名
PID:進程的ID號
%CPU:進程占用的CPU百分比
%MEM:進程占用的內存百分比
VSZ:進程占用的虛擬內存大小
RSS:內存中頁的數量(頁是管理內存的單位)
TTY:進程所在終端的ID號
STAT:進程的狀態,包含字母和附加標志:
字母:
R:正在運行/可運行
D:睡眠中,不可被喚醒,通常是在等待I/O設備
S:睡眠中,可以被喚醒
T:停止
Z:僵進程,已經結束而沒有釋放系統資源
附加標志:
<:進程擁有比普通優先級高的優先級
N:進程擁有比普通優先級低的優先級
L:有些頁面被鎖在內存中
s:會話的先導進程
START:進程啟動的時間
TIME:進程已經占用的CPU時間
COMMAND:命令和參數
$ ps lax##提供父進程ID
PPID 和謙讓度 NI

【轉載請注明文章出處:http://blog.csdn.net/iamthezbl/article/details51305604
5、即時跟蹤進程信息:top命令
$ top##默認10s刷新一次,占用CPU最多的進程會排在最前邊,使用
q 命令退出

6、查看占用文件的進程:lsof
$ lsof database.doc##正在使用database.doc進程的相關信息

不帶任何參數的lsof命令會列出當前系統中所有打開文件的進程信息。要找出占用某個特定文件的進程,需要提供文件名為參數。
7、向進程發送信號:kill
kill命令的標准語法:kill [-signal] pid(pid為進程號)

$ kill -l##顯示所有的信號及編號

常用的信號(信號名前可以加 SIG也可以不加):

EXIT:程序退出時收到該信號
HUP:掛起
INT:中斷
QUIT:退出
KILL:殺死
SEGV:段錯誤
TERM:軟件終止
USR1:用戶定義
默認的情況下kill命令向進程發送TERM信號,這個信號表示終止某項操作,以下幾句命令等價:
$ kill 12974

$ kill -TERM 12974

$ kill -SIGTERM 12974

快捷鍵Ctrl+C對應於信號INT。

如果程序中加入“trap "" TERM”用於忽略TERM信號,則該程序不能被 kill - TERM結束。
-KILL永遠不能被捕捉,可以在內核級別殺死進程。
也有一些程序不能被KILL信號殺死,只能重新啟動系統。
[b]【轉載請注明文章出處:http://blog.csdn.net/iamthezbl/article/details51305604
[/b]
8、調整進程的謙讓度:nice和renice
高謙讓度意味著低優先級,謙讓度可以為負數。

$ nice##查看默認謙讓度值
$ nice -n 2 bc##設置bc的謙讓度以默認值上增量2啟動,是啟動時相對值的調整

$ sudo nice -n -3 bc##設置bc的謙讓度以默認值上增量-3啟動

$ renice +12 -p 8567##-p選項指定進程的PID,將運行中的進程8567謙讓度調整為12,是運行時絕對值的調整

如果用戶不采取行動,新進程從父進程繼承謙讓度。進程的屬主可以提高謙讓度,但不能降低謙讓度。root用戶可以任意設置,所以上述語句中-3要用sudo語句。

9、/PROC文件
該目錄下存放著內核有關系統狀態的各種有意義的信息。
$ ls /proc/
Copyright © Linux教程網 All Rights Reserved