Linux 程式和網路埠相關命令

gary-liu發表於2016-11-06

ps 命令

ps 命令列出的是當前那些程式的快照,就是執行 ps 命令的那個時刻的那些程式,如果想要動態的顯示程式資訊,就可以使用 top 命令。ps 常用的命令引數:

-e  顯示環境變數,和“-A”相同
-f  顯示程式間的關係
au 顯示較詳細的資訊
aux 顯示所有包含其他使用者的行程 

ps -ef

可以看到每個列代表的意思

UID 程式被該 UID 所擁有
PID 程式被該 UID 所擁有
PPID 則是其上級父程式的ID
C CPU 使用的資源百分比
STIME 程式 start time 
TTY 登入者的終端機位置
TIME 使用掉的 CPU 時間
CMD 所下達的指令為何

ps -aux (mac上使用不要加-)

aux 還可以跟這些引數

A  -- select every process
C  -- ignore resident time for CPU percentage
H  -- show threads as if they were processes
L  -- display all format specifiers
S  -- include child process data with the parent
T  -- select processes attached to current terminal
Z  -- show security data
c  -- show just executable name for command
e  -- show environment after command
h  -- repeat header lines, one per page of output
m  -- sort by memory usage
r  -- sort by CPU usage
w  -- wide output
x  -- include processes with no controlling terminal

顯示的每列的意思:

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:該程式的實際指令

使用例項

查詢 mysql 程式

ps -ef|grep mysql

檢視埠被那個程式佔用

  • linux 上使用如下命令
netstat -anp | grep 8080

其中最後一欄是PID/Program name

  • 而OS X 的 netstat 不能檢視使用埠的程式名,一般使用 lsof 命令代替 netstat
sudo lsof -nP -iTCP:8080 -sTCP:LISTEN  

可以看到佔用埠的command和pid

或者

lsof -i:3306      //可以檢視佔用該埠的pid
ps -ef | grep pid   //找到佔用的程式

-n no host names
-P no port names
不加 sudo 只能檢視以當前使用者執行的程式,最好還是加上

判斷埠是否開啟

nc -z 127.0.0.1 8080

-w 表示等待連線時間多少秒
-n 儘量將埠號名稱轉換為埠號數字
-z 對需要檢查的埠沒有輸入輸出,用於埠掃描模式

[參考文獻]
每天一個linux命令(41):ps命令
使用 lsof 代替 Mac OS X 中的 netstat 檢視佔用埠的程式

相關文章