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