linux上進程狀態查詢

來源:互聯網
上載者:User

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

注: 其它狀態還包括W(無駐留頁), <(高優先順序進程), N(低優先順序進程), L(記憶體鎖頁).

可以用下面命令查看進程狀態
ps -aux

列出類似程式樹的程式顯示(顯示進程下有哪些子進程)
ps -axjf

找出與 cron 與 syslog 這兩個服務有關的 P識別碼

ps aux | egrep '(cron|syslog)'

也可以這樣使用ps格式輸出來查看進程狀態:
ps -eo user,stat..,cmd

user 使用者名稱
uid 使用者號
pid 進程號
ppid 父進程號
size 記憶體大小, Kbytes位元組.
vsize 總虛擬記憶體大小, bytes位元組(包含code+data+stack)
share 總共用頁數
nice 進程優先順序(預設為0, 最大為-20)
priority(pri) 核心調度優先順序
pmem 進程分享的實體記憶體數的百分比
trs 程式執行代碼駐留大小
rss 進程使用的總實體記憶體數, Kbytes位元組
time 進程執行起到現在總的CPU暫用時間
stat 進程狀態
cmd(args) 執行命令的簡單格式

例子:
查看當前系統進程的uid,pid,stat,pri, 以uid號排序.
ps -eo pid,stat,pri,uid --sort uid

查看當前系統進程的user,pid,stat,rss,args, 以rss排序.
ps -eo user,pid,stat,rss,args --sort rss

在Linux下,還有一種方法檢查某個進程是否存在:利用/proc檔案系統. /proc/pid/stat裡面有進程的狀態,進程可執行檔名等.如果該檔案不存在了,那進程肯定退出了.如果存在,可以檢查狀態和檔案名稱是否正確.效率可能比PS還是高一些,因為/proc是虛擬檔案系統,存在與記憶體中.

如何利用/proc檔案系統
cat /proc/pid/status
這裡pid是你的進程ID,看看輸出結果,有一欄是State

你要利用/proc檔案系統時,int fd = open( "/proc/pid/status", O_RDONLY );
這裡pid是實際的進程的pid,如果open失敗,剛進程顯然不存在,然後讀取該檔案的內容,找出State

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.