MacBook/MacOS/Mac OS 查看进程/端口信息的相关命令
文章目錄
- 使用命令 lsof 查看某個端口的使用情況
- 使用命令 netstat 查看某個端口的使用情況
- 使用命令 ps 查看指定進程的信息
- (一)命令:ps auwx | grep sshd
- (二)命令:ps -ef | grep ssh
- (三)命令:ps -Al | grep ssh
- 使用命令 top 實時顯示進程狀態
- 使用命令 kill 殺掉進程
- 啟動/停止/重啟進程
使用命令 lsof 查看某個端口的使用情況
[~]$ sudo lsof -P -i tcp:8080 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 3933 liaowenxiong 50u IPv6 0x72b25e6efd433f4b 0t0 TCP *:8080 (LISTEN)[~]$ sudo lsof -P -i:8080 # COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 3933 liaowenxiong 50u IPv6 0x72b25e6efd433f4b 0t0 TCP *:8080 (LISTEN)選項說明:
sudo 表示以 root 的權限執行
-i 表示列出符合條件的且與網絡相關的進程
-P 表示不解析端口號,直接顯示端口號,而不是顯示端口名稱
字段說明:
| COMMAND | 使用端口的進程的名稱,默認以 9 個字符長度顯示的命令名稱。可使用 +c 參數指定顯示的寬度,若 +c 后跟的參數為零,則顯示命令的全名。這個 +c 參數好像無效 |
| PID | 進程標識符 |
| PPID | 父進程標識符,父進程的IP號,默認不顯示,當使用 -R 參數可打開。 |
| USER | 進程所有者,命令的執行 UID 或系統中登陸的用戶名稱。默認顯示為用戶名,當使用 -l 參數時,可顯示 UID。 |
| PGID | 進程所屬組標識符,進程組的ID 編號,默認也不會顯示,當使用 -g 參數時可打開。 |
| FD | File Descriptor Number,文件描述符,應用程序通過文件描述符識別文件,例如:cwd、txt 等 |
| TYPE | 文件類型,例如: DIR、REG 等 |
| DEVICE | 指定磁盤的名稱,以逗號分隔設備編號,使用character special、block special表示的設備號 |
| SIZE | 文件的大小,如果不能用大小表示的,會留空。使用-s參數控制。 |
| NODE | 索引節點(文件在磁盤上的標識),本地文件的node碼,或者協議,如TCP等 |
| NAME | 打開文件的確切名稱,掛載點和文件的全路徑(鏈接會被解析為實際路徑),或者連接雙方的地址和端口、狀態等 |
| LISTEN | 代表該進程正處于監聽狀態,即該進程處于活躍中 |
關于命令 lsof 的用法說明,請點擊查看文章《Linux 命令之 lsof – 列出當前系統已打開的文件列表》
使用命令 netstat 查看某個端口的使用情況
[~]$ netstat -nat | grep 8080 Proto Recv-Q Send-Q Local Address Foreign Address State tcp46 0 0 *.8080 *.* LISTEN [~]$ netstat -anp tcp | grep 8080 tcp46 0 0 *.8080 *.* LISTEN [~]$ netstat -AaLlnW Current listen queue sizes (qlen/incqlen/maxqlen) Socket Flowhash Listen Local Address 72b25e6ee785488b 0 0/0/128 *.56530 72b25e6ef1269023 0 0/0/128 *.56530 72b25e6ee7852d0b 0 0/0/1 127.0.0.1.8005 72b25e6efd433f4b 0 0/0/100 *.8080選項說明:
-a 顯示所有連線中的 Socket 的狀態
-n 直接使用 ip 地址,而不通過域名服務器
-t 顯示 TCP 傳輸協議的連線狀況
-p 顯示正在使用 Socket 的程序識別碼和程序名稱
-A 默認顯示時,顯示與套接字關聯的任何協議控制塊的地址和流散列;用于調試。
-L 顯示各種偵聽隊列的大小。第一個計數顯示不可接受的連接數。第二個計數顯示不可接受的不完整連接的數量。第三個計數是排隊連接的最大數量。
-l 打印完整的IPv6地址。
-n 將網絡地址顯示為數字(通常netstat解釋地址并嘗試以符號方式顯示它們)。此選項可用于任何顯示格式。
-W 在某些顯示中,避免截斷地址,即使這會導致某些字段溢出。
列說明:
Proto 連接使用的協議
Recv-Q 和 Send-Q 指接收隊列和發送隊列,這些數字一般都應該是 0。如果不是則表示軟件包正在隊列中堆積。這種情況只能在非常少的情況見到。
Local Address 本地機器名和本地打開并用于連接的端口
Foreign Address 遠程機器名和端口
State 顯示套接口當前的狀態。
| LISTEN | 偵聽來自遠方的TCP端口的連接請求 |
| SYN-SENT | 再發送連接請求后等待匹配的連接請求(如果有大量這樣的狀態包,檢查是否中招了) |
| SYN-RECEIVED | 再收到和發送一個連接請求后等待對方對連接請求的確認(如有大量此狀態,估計被flood攻擊了) |
| ESTABLISHED | 代表一個打開的連接 |
| FIN-WAIT-1 | 等待遠程TCP連接中斷請求,或先前的連接中斷請求的確認 |
| FIN-WAIT-2 | 從遠程TCP等待連接中斷請求 |
| CLOSE-WAIT | 等待從本地用戶發來的連接中斷請求 |
| CLOSING | 等待遠程TCP對連接中斷的確認 |
| LAST-ACK | 等待原來的發向遠程TCP的連接中斷請求的確認(不是什么好東西,此項出現,檢查是否被攻擊) |
| TIME-WAIT | 等待足夠的時間以確保遠程TCP接收到連接中斷請求的確認 |
| CLOSED | 沒有任何連接狀態 |
使用命令 ps 查看指定進程的信息
(一)命令:ps auwx | grep sshd
查看 sshd 相關的進程:
liaowenongdeair:etc root# ps auwx|grep sshd root 1987 1.0 0.0 4285816 724 s000 S+ 2:37下午 0:00.00 grep sshdliaowenongdeair:etc root# ps auwx|grep ssh root 2158 0.0 0.0 4259000 228 s000 R+ 3:30下午 0:00.00 grep ssh root 1982 0.0 0.0 4280264 192 ?? Ss 2:35下午 0:00.00 ssh-agent liaowenxiong 934 0.0 0.0 4289736 1336 ?? S 8:49上午 0:00.04 /usr/bin/ssh-agent -l從結果來看,根本查找不到 sshd 進程。
命令說明:
結果說明:
第 1 列:進程所屬用戶,列名:USER,-- root
第 2 列:進程號,列名:PID,-- 1987
第 3 列:使用掉的 CPU 資源百分比,列名:%CPU,-- 1.0
第 4 列:所占用的物理內存百分比,列名:%MEM,-- 0.0
第 5 列:使用掉的虛擬內存量,列名:VSZ,-- 4285816
第 6 列:固定占用的內存量,列名:RSS,-- 724
第 7 列:登陸者的終端機位置,列名:TTY,-- s000
第 8 列:進程目前的狀態,列名:STAT,-- S+,后面的加號 + 說明進程是“在前臺進程組”,也就是進程可以使用鍵盤輸出
第 9 列:進程被觸發啟動的時間,列名:START,-- 2:37下午
第 10 列:進程實際使用 CPU 運作的時間,列名:TIME,-- 0:00.00
第 11 列:該進程實際的命令,列名:COMMAND,-- grep sshd
(二)命令:ps -ef | grep ssh
查看 ssh 相關的進程:
liaowenongdeair:etc root# ps -ef|grep ssh501 934 1 0 8:49上午 ?? 0:00.04 /usr/bin/ssh-agent -l0 1982 1 0 2:35下午 ?? 0:00.00 ssh-agent命令說明:
結果說明:
第 1 列:進程所屬用戶的 ID,列名:UID
第 2 列:進程 ID,列名:PID
第 3 列:父進程的 ID,列名:PPID
第 4 列:CPU 資源使用百分比,列名:C
第 5 列:進程被觸發啟動的時間,列名:STIME
第 6 列:啟動進程的終端機位置,列名:TTY,? 表示與終端機無關
第 7 列:實際使用 CPU 運作的時間,單位秒,列明:TIME
第 8 列:進程的命令,列名:COMMAND
(三)命令:ps -Al | grep ssh
查看與 ssh 相關的進程的詳細信息:
liaowenongdeair:bin root# ps -Al | grep ssh501 934 1 4144 0 20 0 4289736 948 - S 0 ?? 0:00.04 /usr/bin/ssh-agent -l0 1982 1 44 0 31 0 4280264 160 - Ss 0 ?? 0:00.00 ssh-agent0 15372 1638 4006 0 31 0 4268408 684 - S+ 0 ttys000 0:00.00 grep ssh501 9961 6327 4006 0 31 0 4298388 1904 - S+ 0 ttys001 0:02.80 ssh root@47.114.59.224說明:
預知更多關于命令 ps 的使用介紹,請點擊查看文章《Linux 命令之 ps – 顯示進程狀態》
疑問:在 MacOS 下使用命令 ps,根本無法得知進程是否啟動,因為看不到相關進程的信息。奇怪!!!
使用命令 top 實時顯示進程狀態
使用命令 top 可以查看所有進程的實時狀態,關于命令 top 的用法說明,請點擊查看文章《Linux 命令之 top 命令-實時顯示進程動態》
關于排序:
先輸入 o,然后輸入 cpu 則按 cpu 使用量排序,輸入 rsize 則按內存使用量排序。
使用命令 kill 殺掉進程
liaowenxiongdeMacBook-Air:~ liaowenxiong$ sudo kill -9 PID說明:-9 表示強制殺掉進程
關于命令 kill 的用法說明,請點擊查看文章《Linux 命令之 kill – 殺死進程》
啟動/停止/重啟進程
請查看文章《MacOS 關于啟動/停止/重啟進程的命令》
總結
以上是生活随笔為你收集整理的MacBook/MacOS/Mac OS 查看进程/端口信息的相关命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 曝华为发布会定在9月19日 有Mate6
- 下一篇: LFS、BLFS、ALFS、HLFS的区