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 #结束进程