1. 程式人生 > >linux查詢程序id端口占用和殺死程序

linux查詢程序id端口占用和殺死程序

linux 查詢程序id端口占用和殺死程序

ps 命令用於檢視當前正在執行的程序

輔助上grep 用於搜尋匹配
ps -ef | grep java

ps ax : 顯示當前系統程序的列表
ps aux : 顯示當前系統程序詳細列表以及程序使用者

-e 顯示所有程序,環境變數 此引數的效果和指定"A"引數相同。
a 顯示終端上地所有程序,包括其他使用者地程序
-A 顯示所有程式。
c 列出程式時,顯示每個程式真正的指令名稱,而不包含路徑,引數或常駐服務的標示。
e 列出程式時,顯示每個程式所使用的環境變數。
f 用ASCII字元顯示樹狀結構,表達程式間的相互關係。
-H 顯示樹狀結構,表示程式間的相互關係。
-N 顯示所有的程式,除了執行ps指令終端機下的程式之外。
s 採用程式訊號的格式顯示程式狀況。
S 列出程式時,包括已中斷的子程式資料。
-t<終端機編號> 指定終端機編號,並列出屬於該終端機的程式的狀況。
u 以使用者為主的格式來顯示程式狀況。
x 顯示沒有控制終端地程序

顯示結果
user : 程序所屬的使用者
pid : 程序id
ppid : 該程序的父程序id

lsof
lsof(list open files)是一個列出當前系統開啟檔案的工具。
在linux環境下,任何事物都以檔案的形式存在,
通過檔案不僅僅可以訪問常規資料,還可以訪問網路連線和硬體。

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
/opt/lamp 1321 root txt REG 202,1 590080 665698 /opt/lampp/bin/httpd

釋義:
COMMAND:程序的名稱
PID:程序識別符號
USER:程序所有者
FD:檔案描述符,應用程式通過檔案描述符識別該檔案。如cwd、txt等 TYPE:檔案型別,如DIR、REG等
DEVICE:指定磁碟的名稱
SIZE:檔案的大小
NODE:索引節點(檔案在磁碟上的標識)
NAME:開啟檔案的確切名稱

pgrep Java | xargs ps -u --pid
模糊查詢 殺死程序
假設我要檢視conky的程序資訊,但是我只記得con是關鍵字
pgrep con | xargs ps -u --pid
分步則為:
1.pgrep con
2.ps --pid xxx

查詢端口占用 指定端口占用
netstat -apn | grep 80

顯示結果:
最後的一欄是 PID/Program Name

或者通過lsof命令查詢
lsof -i:80 查詢埠

*以優雅的方式結束程序

kill -l PID

-l選項告訴kill命令用好像啟動程序的使用者已登出的方式結束程序。
當使用該選項時,kill命令也試圖殺死所留下的子程序。
但這個命令也不是總能成功–或許仍然需要先手工殺死子程序,然後再殺死父程序。

kill 命令用於終止程序
例如: kill -9 [PID]
-9 表示強迫程序立即停止

這個強大和危險的命令迫使程序在執行時突然終止,程序在結束後不能自我清理。
危害是導致系統資源無法正常釋放,一般不推薦使用,除非其他辦法都無效。
當使用此命令時,一定要通過ps -ef確認沒有剩下任何殭屍程序。
只能通過終止父程序來消除殭屍程序。如果殭屍程序被init收養,問題就比較嚴重了。
殺死init程序意味著關閉系統。
如果系統中有殭屍程序,並且其父程序是init,
而且殭屍程序佔用了大量的系統資源,那麼就需要在某個時候重啟機器以清除程序表了。

killall命令殺死同一程序組內的所有程序。其允許指定要終止的程序的名稱,而非PID。

killall httpd

pkill 使用方法同上 pkill firefox
pkill 可以很方便殺死某使用者的所有程序
pkill -u root

ps
lsof
netstat
kill

參考:
http://www.cnblogs.com/lucyjiayou/archive/2012/02/24/2366194.html
http://blog.csdn.net/wojiaopanpan/article/details/7286430/
http://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316599.html
守護程序daemon http://blog.csdn.net/jw903/article/details/45312419
linux檢查開放埠: http://www.cnblogs.com/kerrycode/p/5609010.html

windows下檢視端口占用命令:
netstat -ano | findstr 80
windows下檢視程序列表命令:
tasklist