linux查看進程棧
❶ 如何查看linux伺服器的進程
1.ps
ps命令是最基本同時也是非常強大的進程查看命令。使用該命令可以確定有哪些進程正在運行和它所運行的狀態、進程是否結束、進程有沒有僵死、哪些進程佔用了過多的資源等。總之大部分信息都是可以通過執行該命令得到的。ps命令最常用來監控後台進程的工作情況,因為後台進程是不和屏幕、鍵盤這些標准輸入/輸出設備進行通信的,所以如果需要檢測後台情況,就需要使用ps命令了。它的格式如下所示:
格式:ps [選項]
其主要選項如下。
-a:顯示系統中所有進程的信息。
-e:顯示所有進程的信息。
-f:顯示進程的所有信息。
-l:以長格式顯示進程信息。
-r:只顯示正在運行的進程。
-u:顯示面向用戶的格式(包括用戶名、CPU及內存的使用情況等信息)。
-x:顯示所有非控制終端上的進程信息。
-p:顯示由進程ID指定的進程信息。
-t:顯示指定終端上的進程信息。
❷ linux怎麼查看進程佔用埠
1. ss命令簡介
ss 是 Socket Statistics 的縮寫。ss 命令可以用來獲取 socket 統計信息,它顯示的內容和 netstat 類似。但 ss 的優勢在於它能夠顯示更多更詳細的有關 TCP 和連接狀態的信息,而且比 netstat 更快。當伺服器的 socket 連接數量變得非常大時,無論是使用 netstat 命令還是直接 cat /proc/net/tcp,執行速度都會很慢。ss 命令利用到了 TCP 協議棧中 tcp_diag。tcp_diag 是一個用於分析統計的模塊,可以獲得 Linux 內核中第一手的信息,因此 ss 命令的性能會好很多。
ss命令簡介
2. 常用選項
-h, --help 幫助
-V, --version 顯示版本號
-t, --tcp 顯示 TCP 協議的 sockets
-u, --udp 顯示 UDP 協議的 sockets
-x, --unix 顯示 unix domain sockets,與 -f 選項相同
-n, --numeric 不解析服務的名稱,如 "22" 埠不會顯示成 "ssh"
-l, --listening 只顯示處於監聽狀態的埠
-p, --processes 顯示監聽埠的進程(Ubuntu 上需要 sudo)
-a, --all 對 TCP 協議來說,既包含監聽的埠,也包含建立的連接
-r, --resolve 把 IP 解釋為域名,把埠號解釋為協議名稱
3. 常見用法
如果不添加選項 ss 命令默認輸出所有建立的連接(不包含監聽的埠),包括 tcp, udp, and unix socket 三種類型的連接:
3.1 查看前5名的連接:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
u_str ESTAB 0 0 * 20040 * 20041
u_str ESTAB 0 0 * 20030 * 20031
u_str ESTAB 0 0 * 20044 * 20043
u_str ESTAB 0 0 /run/dbus/system_bus_socket 18592 * 18591
3.2 查看主機的監聽埠
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 127.0.0.1:9016 :
LISTEN 0 128 127.0.0.1:9017 :
LISTEN 0 100 127.0.0.1:25 :
LISTEN 0 128 127.0.0.1:9018 :
LISTEN 0 128 127.0.0.1:1723 :
LISTEN 0 128 127.0.0.1:9019 :
3.3 linux查看tcp連接
ESTAB 0 0 ::1:ssh ::1:53238
ESTAB 0 0 ::1:53278 ::1:ssh
ESTAB 0 0 ::1:ssh ::1:53280
ESTAB 0 0 ::1:53288 ::1:ssh
ESTAB 0 0 ::1:ssh ::1:53296
ESTAB 0 0 ::1:53294 ::1:ssh
ESTAB 0 0 ::1:48456 ::1:ssh
ESTAB 0 0 ::1:53286 ::1:ssh
ESTAB 0 0 ::1:53292 ::1:ssh
ESTAB 0 0 ::1:ssh ::1:53272
linux查看tcp連接
3.4 解析IP和埠號
使用-r選項
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 my_public_ip:9016 :
LISTEN 0 128 my_public_ip:9017 :
LISTEN 0 100 localhost:smtp :
LISTEN 0 128 my_public_ip:9018 :
LISTEN 0 128 my_public_ip:pptp :
LISTEN 0 128 my_public_ip:9019 :
linux查看監聽埠
3.5 輸出時帶進程名稱
使用-p選項
Total: 2340 (kernel 2365)
TCP: 2126 (estab 72, closed 23, orphaned 1, synrecv 0, timewait 2/0), ports 0
Transport Total IP IPv6
3.6 根據條件過濾輸出結果
可以通過語法過濾輸出結果,根據源IP、源埠、目標IP、目標埠
src源
dst目標
ss dst 172.16.26.33
ss dst 172.16.26.43:http
ss dst 172.16.26.43:443
3.7 根據源埠號范圍輸出:
根據目標埠號范圍輸出:
ss dport OP PORT
OP 可以代表以下任意一個:
<=le小於或等於某個埠號 >=ge大於或等於某個埠號==eq等於某個埠號!=ne不等於某個埠號>gt大於某個埠號<lt小於某個埠號
比如:
輸出源埠號小於8080的連接狀態
或者
3.8 根據TCP 的狀態進行過濾
ss命令還可以根據TCP連接的狀態進行過濾,支持的 TCP 協議中的狀態有:
established
syn-sent
syn-recv
fin-wait-1
fin-wait-2
time-wait
closed
close-wait
last-ack
listening
closing
除了上面的 TCP 狀態,還可以使用下面這些狀態:
狀態輸出結果 all輸出所有TCP狀態。connected輸出已經建立連接的TCP狀態。synchronized輸出同步狀態的連接。bucket輸出maintained的狀態,如:time-wait 和 syn-recv。big輸出與bucket相反的狀態。
只輸出ipv4狀態:
只輸出ipv6狀態:
輸出ipv4監聽狀態:
3.9 根據TCP狀態和埠號進行過濾
輸入出ipv4協議下的ssh監聽狀態:
或者
要麼使用轉義小括弧,要麼使用單引號
查看所有已經建立TCP三次握手的HTTP連接:
查看所有正在進程的ssh連接:
4. 總結
ss 命令功能豐富並且性能出色,完全可以替代 netsate 命令。已經成為我們日常查看 socket 相關信息的利器。未來netstat已經慢慢被ss取代。
https://www.linuxrumen.com/cyml/821.html
❸ linux 下查看進程用什麼命令
linux 下查看進程可以使用的命令:
1、ps命令查找與進程相關的PID號:
2、ps a 顯示現行終端機下的所有程序,包括其他用戶的程序。
3、ps -A 顯示所有程序。
4、ps c 列出程序時,顯示每個程序真正的指令名稱,而不包含路徑,參數或常駐服務的標示。
5、ps -e 此參數的效果和指定"A"參數相同。
6、ps e 列出程序時,顯示每個程序所使用的環境變數。
7、ps f 用ASCII字元顯示樹狀結構,表達程序間的相互關系。
8、ps -H 顯示樹狀結構,表示程序間的相互關系。
9、ps -N 顯示所有的程序,除了執行ps指令終端機下的程序之外。
10、ps s 採用程序信號的格式顯示程序狀況。
11、ps S 列出程序時,包括已中斷的子程序資料。
12、ps -t<終端機編號> 指定終端機編號,並列出屬於該終端機的程序的狀況。
13、ps u 以用戶為主的格式來顯示程序狀況。
14、ps x 顯示所有程序,不以終端機來區分。
❹ Linux 怎麼查看一個進程的堆棧
方法一:pstack pid
NAME
pstack - print a stack trace of a running process
SYNOPSIS
pstack pid
DESCRIPTION
pstack attaches to the active process named by the pid on the command line, and prints out an execution stack trace. If ELF symbols exist in the binary (usually the case
unless you have run strip(1)), then symbolic addresses are printed as well.
If the process is part of a thread group, then pstack will print out a stack trace for each of the threads in the group.
SEE ALSO
nm(1), ptrace(2), gdb(1)
方法二:gstack pid
NAME
gstack - print a stack trace of a running process
SYNOPSIS
gstack pid
DESCRIPTION
gstack attaches to the active process named by the pid on the command line, and prints out an execution stack trace. If ELF symbols exist in the binary (usually the case
unless you have run strip(1)), then symbolic addresses are printed as well.
If the process is part of a thread group, then gstack will print out a stack trace for each of the threads in the group.
SEE ALSO
nm(1), ptrace(2), gdb(1)
方法三:
使用gdb 然後attach 進程ID,然後再使用命令 thread apply all bt。
方法一和方法二一樣,方法三可以查看更多的信息。
❺ linux 怎麼查看指定的進程
1、首先需要打開linux客戶端進入軟體主界面。
❻ linux查看有哪些進程正在使用
您好,方法
Linux中常用的查看進程的命令是:ps
該命令可以確定有哪些進程正在運行和運行的狀態、進程是否結束、進程有沒有僵屍、哪些進程佔用了過多的資源等信息,常用於監控後台進程的工作情況
使用man ps命令可以查看該命令的介紹和用例,
使用ps -ef查看所有進程,輸出信息如圖。
使用ps axu,查看所有進程,輸出信息如圖。
如果想查詢特定進程,可以使用
(1)ps -ef|grep 名稱。
(2)ps aux|grep 名稱。
❼ linux應用中,在一個進程內如何獲取本進程內其它線程的堆棧信息、
先用ps看目前存在的所有進程的進程號,然後可以對具體進程採用以下這些操作:(11345就是對應具體的進程號)
只查看該進程:ps -ef | grep 11345
查看該進程打開的文件:lsof -p 11345
查看內存分配:lcat /proc/11345/maps
查看堆棧:pstack 11345
查看發出的系統調用:strace -p 11345
查看調用庫函數:ltrace -p 11345
❽ linux應用中,在一個進程內如何獲取本進程內其它線程的堆棧信息、
用
pthread_getattr_np
(pthread_t
tid,
pthread_attr_t
*attr);
即可。
具體你需要先了解一下pthread
相關介面。
比如,
#define
_GNU_SOURCE
/*
See
feature_test_macros(7)
*/
#include
<pthread.h>
int
main()
{
...
tid
=
pthread_create(xxxx,xxx...);
...
pthread_getattr_np(tid,
&attr);
/*
後面就可以用
pthread_attr_getstack
之類的介面從
attr
中獲得這個線程的
stack
信息(比如地址,大小等)*/
}
❾ 如何在Linux中查看所有正在運行的進程
1、查看進程
#ps -aux | grep nginx*
上述命令表示查看nginx相關的進程
2、殺死進程
#kill -9 7819
上述命令表示殺死pid為7819的進程
-----------------------------------------------------------------------------------------------------
netstat -lntp #查看監聽(Listen)的埠
netstat -antp #查看所有建立的TCP連接
netstat -tulpn #查看所有運行中的服務的詳細信息
ps -ef #查看所有進程
ps -aux #查看使用內存的進程
top #查看內存使用說明 (shift+m 按照排名)
kill -pid #結束進程