1. 程式人生 > >linux學習---ps、kill

linux學習---ps、kill

rep -- 釋放 use version 中斷 ssi 睡眠 width

一、ps 查看進程

  ps 為我們提供了進程的一次性的查看,它所提供的查看結果並不動態連續的;如果想對進程時間監控,應該用 top 工具

  linux上進程有5種狀態:

    1. 運行(正在運行或在運行隊列中等待)

    2. 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到信號)

    3. 不可中斷(收到信號不喚醒和不可運行, 進程必須等待直到有中斷發生)

    4. 僵死(進程已終止, 但進程描述符存在, 直到父進程調用wait4()系統調用後釋放)

    5. 停止(進程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號後停止運行運行)

  ps工具標識進程的5種狀態碼:

    D 不可中斷 uninterruptible sleep (usually IO)

    R 運行 runnable (on run queue)

    S 中斷 sleeping

    T 停止 traced or stopped

    Z 僵死 a defunct (”zombie”) process

  2.命令參數:    

    a 顯示所有進程

    -a 顯示同一終端下的所有程序

    -A 顯示所有進程

    c 顯示進程的真實名稱

    -N 反向選擇

    -e 等於“-A”

    e 顯示環境變量

    f 顯示程序間的關系

    -H 顯示樹狀結構

    r 顯示當前終端的進程

    T 顯示當前終端的所有程序

    u 指定用戶的所有進程

    -au 顯示較詳細的資訊

    -aux 顯示所有包含其他使用者的行程

    -C<命令> 列出指定命令的狀況

    --lines<行數> 每頁顯示的行數

    --width<字符數> 每頁顯示的字符數

    --help 顯示幫助信息

    --version 顯示版本顯示

  3.使用實例

    顯示所有進程信息 ps -A

    顯示指定用戶信息 ps -u root

    顯示所有進程信息,連同命令行 ps -ef

    ps 與grep 常用組合用法,查找特定進程 ps -ef | grep ssh

    將目前屬於您自己這次登入的 PID 與相關信息列示出來 ps -l      

      各相關信息的意義:

        F 代表這個程序的旗標 (flag), 4 代表使用者為 super user

        S 代表這個程序的狀態 (STAT),關於各 STAT 的意義將在內文介紹

        UID 程序被該 UID 所擁有

        PID 就是這個程序的 ID !

        PPID 則是其上級父程序的ID

        C CPU 使用的資源百分比

        PRI 這個是 Priority (優先執行序) 的縮寫,詳細後面介紹

        NI 這個是 Nice 值,在下一小節我們會持續介紹

        ADDR 這個是 kernel function,指出該程序在內存的那個部分。如果是個 running的程序,一般就是 "-"

        SZ 使用掉的內存大小

        WCHAN 目前這個程序是否正在運作當中,若為 - 表示正在運作

        TTY 登入者的終端機位置

        TIME 使用掉的 CPU 時間。

        CMD 所下達的指令為何

    列出目前所有的正在內存當中的程序 ps aux

說明:

USER:該 process 屬於那個使用者賬號的

PID :該 process 的號碼

%CPU:該 process 使用掉的 CPU 資源百分比

%MEM:該 process 所占用的物理內存百分比

VSZ :該 process 使用掉的虛擬內存量 (Kbytes)

RSS :該 process 占用的固定的內存量 (Kbytes)

TTY :該 process 是在那個終端機上面運作,若與終端機無關,則顯示 ?,另外, tty1-tty6 是本機上面的登入者程序,若為 pts/0 等等的,則表示為由網絡連接進主機的程序。

STAT:該程序目前的狀態,主要的狀態有

R :該程序目前正在運作,或者是可被運作

S :該程序目前正在睡眠當中 (可說是 idle 狀態),但可被某些訊號 (signal) 喚醒。

T :該程序目前正在偵測或者是停止了

Z :該程序應該已經終止,但是其父程序卻無法正常的終止他,造成 zombie (疆屍) 程序的狀態

START:該 process 被觸發啟動的時間

TIME :該 process 實際使用 CPU 運作的時間

COMMAND:該程序的實際指令

    列出類似程序樹的程序顯示 ps -axjf

    找出與 cron 與 syslog 這兩個服務有關的 PID 號碼 ps aux | egrep ‘(cron|syslog)‘

    

    可以用 | 管道和 more 連接起來分頁查看 ps -aux |more

    把所有進程顯示出來,並輸出到ps001.txt文件 ps -aux > ps001.txt

    輸出指定的字段 ps -o pid,ppid,pgrp,session,tpgid,comm

二、 kill

1.命令格式:

  kill[參數][進程號]

2.命令參數  

  -l 信號,若果不加信號的編號參數,則使用“-l”參數會列出全部的信號名稱

  -a 當處理當前進程時,不限制命令名和進程號的對應關系

  -p 指定kill 命令只打印相關進程的進程號,而不發送任何信號

  -s 指定發送信號

  -u 指定用戶

它的效果等同於在前臺運行PID為123的進程時按下Ctrl+C鍵 kill -2 123

列出所有信號名稱 kill -l    

    只有第9種信號(SIGKILL)才可以無條件終止進程,其他信號進程都有權利忽略。

    下面是常用的信號:

      HUP 1 終端斷線

      INT 2 中斷(同 Ctrl + C)

      QUIT 3 退出(同 Ctrl + \)

      TERM 15 終止

      KILL 9 強制終止

      CONT 18 繼續(與STOP相反, fg/bg命令)

      STOP 19 暫停(同 Ctrl + Z)

先用ps查找進程,然後用kill殺掉 ps -ef | grep vim kill 3268

徹底殺死進程 kill –9 3268

殺死指定用戶所有進程 kill -9 $(ps -ef | grep peidalinux) kill -u peidalinux

init進程是不可殺的 ps -ef|grep init kill -9 1

linux學習---ps、kill