一文讀懂ps命令

2021-09-11 21:38:33 字數 1262 閱讀 7074

對於在linux系統開發的工程師來說,ps命令是經常使用的命令,這個命令可以用來檢視程序的程序id,父程序id,程序狀態等資訊,但是對於ps的用法卻總感覺不是很熟悉的感覺,這裡特意花時間整理了ps命令的疑點和常用方式。

首先ps是乙個有歷史的命令,在unix時期就已經存在,後來linux系統也繼承了這個命令,同時其功能是一樣的,但是由於系統建立者不同,其展示風格有差異,總共有三種風格:

unix 風格,選項可以組合在一起, 選項前必須有「-」連字元

bsd 風格,選項可以組合在一起,但是選項前不能有「-」連字元。bsd是unix的乙個分支

gnu 風格的長選項,選項前有兩個「-」連字元。gun計畫,後來發展出了linux

例如 ps -ef 是unix風格 而 ps aux就是bsd風格,

unix 風格

bsd風格

兩種風格顯示的選項還是有一點的差別的,但是今天的重點是了解ps命令的選項及列的內涵,只有這樣才能在我們需要檢視程序的資訊時能準確的獲取到而不是像以前一樣對其一知半解。

ps的-a 是顯示系統執行的所有程序,不管是後台程序,還是與終端無關的程序或者是會話程序。

ps -e 這個和上面的效果是一樣。

ps -a 顯示除了會話的建立者(在linux這種多使用者系統中,每個使用者登入就是乙個會話,然後其建立的程序就屬於這個會話進行管理)和與終端無關的程序----終端無關的程序就是 tty那列顯示問號的?。

ps a顯示所有和終端有關的程序,就是 tty那列不為?的。(與終端有關還是無關是決定這個程序在視窗關閉後是否還能繼續執行的關鍵,比如nginx和php-fpm這種程序就不能與終端有關,需要一直在後台執行)。

ps t 顯示當前終端的程序,就是tty列為當前終端值的程序。

ps x 顯示屬於當前使用者的程序 等於 ps -u 使用者名稱。

ps -ax 這個值不存在 只有 ps ax 結果就是 ps -a或ps -e。

ps -d 顯示除了會話建立者外的所有程序。

ps -f 表示full 表示詳細內容。

ps -h hierarchy表是層級關係,這個不太常用,可以忽略。

ps c 表示cpu占用。

ps -o 後邊跟 format 格式。

ps -eo pid,ppid,s(程序狀態 就是stat),cmd(執行程序的命令),tty,etime(程序執行的時長,e是elapse的縮寫),lstart(程序開始時間),uname(使用者名稱)。

連線了上面這些選項後 ps這個命令在日常的使用中基本算是掌握了。對於這個命令中的終端,會話等概念會在下篇文章進行講解。

一文讀懂Docker相關命令

以下命令以centos為例 systemctl start dockersystemctl start dockersystemctl restart dockersystemctl status dockersystemctl enable dockerdocker images docker i...

一文讀懂Nginx

問 nginx的負載均衡演算法有什麼?預設是什麼演算法?答 1 輪詢 按請求的時間輪詢查空閒的後端伺服器 2 指定輪詢機率 機率的原因是後端伺服器的效能不均勻,好的多分點,差的少分點 3 固定ip繫結固定伺服器 預設是加權輪詢,就是優先訪問權重高的伺服器 問 nginx是單執行緒的嗎?答 是單執行緒...

一文讀懂SpringMVC

主要講的是dispatcherservlet這個類 ioc其實是乙個map,工程啟動後掃瞄路徑,根據類的全限定名建立bean 問 怎麼根據路徑找到方法?map還存key為 aaa value為該controller例項 問 autowired原理?自定義註解,在載入的時候,掃瞄controller層...