查看系统中最近的端口连接记录

[root@sdc01 ~]# lsof -Pnl +M -i4 | grep "154"
sshd 30963 0 3u IPv4 65160732 0t0 TCP 10.yy.xx.146:22->10.yy.xx.154:53374 (ESTABLISHED) [root@sdc01 ~]# lsof -Pnl +M -i4 | grep "152"
java 9130 1011 715u IPv4 360506799 0t0 TCP 10.yy.xx.146:10000->10.yy.xx.152:64632 (ESTABLISHED)
java 9130 1011 742u IPv4 360838960 0t0 TCP 10.yy.xx.146:10000->10.yy.xx.152:58831 (ESTABLISHED)
java 9130 1011 753u IPv4 360494518 0t0 TCP 10.yy.xx.146:10000->10.yy.xx.152:53166 (ESTABLISHED)
java 9130 1011 772u IPv4 360496828 0t0 TCP 10.yy.xx.146:10000->10.yy.xx.152:53993 (ESTABLISHED)

查看指定端口/服务所占用的端口

netstat

命令参数详解

  • -t (tcp) 仅显示tcp相关选项
  • -u (udp)仅显示udp相关选项
  • -n 拒绝显示别名,能显示数字的全部转化为数字
  • -l 仅列出在Listen(监听)的服务状态
  • -p 显示建立相关链接的程序名
  • -a, --all display all sockets (default: connected)

查看指定端口的占用情况

[root@johnnyzen ~]# netstat -antp | grep 9876
tcp 0 0 0.0.0.0:9876 0.0.0.0:* LISTEN 50264/java [root@johnnyzen ~]# netstat -tunlp | grep 57083
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 0.0.0.0:57083 0.0.0.0:* LISTEN 15721/mongod

统计:不同状态的 TCP连接

netstat -an|awk '/tcp/ {print $6}'|sort|uniq -c

根据指定端口,监控网络客户端连接

netstat -n | grep tcp | grep 侦听端口
# 监控 客户端连接详情 netstat -n | grep tcp | grep 侦听端口 | wc -l
# 统计 客户端连接数

CLOSED:无连接是活动的或正在进行

LISTEN:服务器在等待进入呼叫

SYN_RECV:一个连接请求已经到达,等待确认

SYN_SENT:应用已经开始,打开一个连接

ESTABLISHED:正常数据传输状态

FIN_WAIT1:应用说它已经完成

FIN_WAIT2:另一边已同意释放

TIMED_WAIT:等待所有分组死掉

CLOSING:两边同时尝试关闭

TIME_WAIT:另一边已初始化一个释放

LAST_ACK:等待所有分组死掉

TIME_WAIT 状态的意义?
客户端与服务器端建立TCP/IP连接后关闭SOCKET后,此时服务器端连接的端口的状态为TIME_WAIT 是不是所有执行主动关闭的socket都会进入 TIME_WAIT 状态呢?
主动关闭的一方在发送最后一个 ack 后就会进入 TIME_WAIT 状态 停留2MSL(max segment lifetime)时间这个是TCP/IP必不可少的,
也就是“解决”不了的。也就是TCP/IP设计者本来是这么设计的 主要有两个原因
1 防止上一次连接中的包,迷路后重新出现,影响新连接(经过2MSL,上一次连接中所有的重复包都会消失)
2 可靠的关闭TCP连接
在主动关闭方发送的最后一个 ack(fin) ,有可能丢失,这时被动方会重新发fin。
如果这时主动方处于 CLOSED 状态 ,就会响应 rst 而不是 ack。
所以,主动方要处于 TIME_WAIT 状态,而不能是 CLOSED 。
TIME_WAIT 并不会占用很大资源的,除非受到攻击。
还有,如果一方 send 或 recv 超时,就会直接进入 CLOSED 状态

lsof

lsof := lists openfiles := 列出打开文件

强烈推荐: Linux lsof命令 - CSDN

强烈推荐: Linux 命令神器:lsof - 简书

lsof 常与 ulimit的文件句柄数问题关联:

强烈推荐: [Linux]常用命令之【ulimit(资源限制)】 - 博客园/千千寰宇

命令详解

选项 描述
-a 列出打开文件存在的进程;
-c<进程名> 列出指定进程所打开的文件;
-g 列出GID号进程详情;
-d<文件号> 列出占用该文件号的进程;
+d<目录> 列出目录下被打开的文件;
+D<目录> 递归列出目录下被打开的文件;
-n<目录> 列出使用NFS的文件;
-i<条件> 列出符合条件的进程。(4、6、协议、:端口、 @ip )
-p<进程号> 列出指定进程号所打开的文件;
-u 列出UID号进程详情;
-h 显示帮助信息;
-v 显示版本信息。
lsof -i:8080:查看8080端口占用
lsof abc.txt:显示开启文件abc.txt的进程
lsof -c abc:显示abc进程现在打开的文件
lsof -c -p 1234:列出进程号为1234的进程所打开的文件
lsof -g gid:显示归属gid的进程情况
lsof +d /usr/local/:显示目录下被进程开启的文件
lsof +D /usr/local/:同上,但是会搜索目录下的目录,时间较长
lsof -d 4:显示使用fd为4的进程
lsof -i -U:显示所有打开的端口和UNIX domain文件

简单示例

  • 列出所有打开的文件
[root@localhost~]# lsof
command PID USER FD type DEVICE SIZE NODE NAME
init 1 root cwd DIR 8,2 4096 2 /
init 1 root rtd DIR 8,2 4096 2 /
init 1 root mem REG 8,2 1722304 7823915 /lib64/libc-2.5.so
migration 2 root cwd DIR 8,2 4096 2 /
migration 2 root txt unknown /proc/2/exe
ksoftirqd 3 root cwd DIR 8,2 4096 2 /
  • 查看:符合条件的进程详情
# lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
46 -> IPv4 or IPv6
protocol -> TCP or UDP
hostname -> Internet host name
hostaddr -> IPv4位置
service -> /etc/service中的 service name (可以不只一个)
port -> 端口号 (可以不只一个) 如: lsof -i:8080
如: 使用@host来显示指定到指定主机的连接
  • 使用@host来查看指定到指定主机的连接
# lsof  -i@172.16.12.5
sshd 7892 root 3u IPv6 6757 TCP 10.10.1.5:ssh->172.16.12.5:49901 (ESTABLISHED)
  • 找出已建立的连接
# lsof  -i -sTCP:ESTABLISHED

# lsof -i | grep -i ESTABLISHED firefox-b 169 daniel 49u IPv4 0t0 TCP 1.2.3.3:1863->1.2.3.4:http (ESTABLISHED)
  • 查看:指定端口的进程是否在线 / 查看: 【指定端口】【当前实际】的打开文件句柄的详情
# sudo lsof -i:6888
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 64812 root 100u IPv4 4135639 0t0 TCP *:6888 (LISTEN)
  • 查看:【指定进程】【当前实际】占用的文件句柄详情
lsof | grep <pid>
# 进程名称 / PID / 进程所有者 / 文件描述符 / 文件类型

  • 查看:【指定进程】【当前实际】的打开文件数
lsof | grep <pid> | wc -l
# 进程名称 / PID / 进程所有者 / 文件描述符 / 文件类型
  • 查看【系统(所有进程)】【当前实际】打开的文件数量
lsof | wc -l

  • 查看:【各个进程】【当前实际】的打开文件数
lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more

返回参数详解

COMMAND:进程的名称
PID:进程标识符
PPID:父进程标识符(需要指定-R参数)
USER:进程所有者
PGID:进程所属组
FD:文件描述符,应用程序通过文件描述符识别该文件。
type: 文件类型
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称

FD : 文件描述符列表

cwd:表示current work dirctory,即:应用程序的当前工作目录,这是该应用程序启动的目录,除非它本身对这个目录进行更改
txt:该类型的文件是程序代码,如应用程序二进制文件本身或共享库,如上列表中显示的 /sbin/init 程序
lnn:library references (AIX)(库引用);
er:FD information error (see NAME column)(fd信息错误);
jld:jail directory (FreeBSD)(监控目录);
ltx:shared library text (code and data)(共享库文本);
mxx :hex memory-mapped type number xx(十六进制内存映射类型号xx);
m86:DOS Merge mapped file(DOS合并映射文件);
mem:memory-mapped file(内存映射文件);
mmap:memory-mapped device(内存映射设备);
pd:parent directory(父目录);
rtd:root directory(跟目录);
tr:kernel trace file (OpenBSD)(内核跟踪文件);
v86 VP/ix mapped file(VP/IX映射文件);
0:表示标准输出
1:表示标准输入
2:表示标准错误

一般在标准输出、标准错误、标准输入后还跟着文件状态模式:

u:表示该文件被打开并处于读取/写入模式。
r:表示该文件被打开并处于只读模式。
w:表示该文件被打开并处于。
空格:表示该文件的状态模式为unknow,且没有锁定。
-:表示该文件的状态模式为unknow,且被锁定。

同时,在文件状态模式后面,还跟着相关的锁:

N:for a Solaris NFS lock of unknown type(对于未知类型的Solaris NFS锁);
r:for read lock on part of the file(用于对文件的一部分进行读取锁定);
R:for a read lock on the entire file(整个文件的读取锁定);
w:for a write lock on part of the file;(文件的部分写锁)
W:for a write lock on the entire file;(整个文件的写锁)
u:for a read and write lock of any length(对于任意长度的读写锁);
U:for a lock of unknown type(对于未知类型的锁);
x:for an SCO OpenServer Xenix lock on part of the file(对于文件的sco openserver xenix锁);
X:for an SCO OpenServer Xenix lock on the entire file(对于整个文件的sco openserver xenix锁);
space:if there is no lock(如果没有锁).

TYPE : 文件类型

type/文件类型:
DIR:表示目录。
CHR:表示字符类型。
BLK:块设备类型。
UNIX: UNIX 域套接字。
FIFO:先进先出 (FIFO) 队列。
IPv4:网际协议 (IP) 套接字。
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称

ss -lnp

root@kylin-sdc153:/opt/govern/govern_1/domains/mydomain/logs# ss -lnp | grep 6888
tcp LISTEN 0 512 *:6888 *:* users:(("java",pid=64812,fd=100))

ps

ps -ef

root@kylin-sdc153:/opt/govern/govern_1/domains/mydomain/logs# ps -ef
UID PID PPID C STIME TTY TIME CMD
...
root 70066 2 0 8月03 ? 00:00:00 [kworker/61:0]
root 70139 2 0 8月03 ? 00:00:00 [kworker/84:2]
root 70146 2 0 8月03 ? 00:00:00 [kworker/91:2]
... root@kylin-sdc153:/opt/govern/govern_1/domains/mydomain/logs# ps -ef | grep 6888
root 66251 64699 0 10:05 pts/4 00:00:00 grep --color=auto 6888 root@kylin-sdc153:/opt/govern/govern_1/domains/mydomain/logs# ps -ef | grep apusic
root 64713 60453 0 09:59 pts/3 00:00:00 /bin/sh ./startapusic
root 64812 64713 77 09:59 pts/3 00:04:04 /usr/bin/java -Djava.endorsed.dirs=/opt/govern/govern_1/lib/endorsed -Dcom.apusic.domain.home=/opt/govern/govern_1/domains/mydomain -server -Djava.net.preferIPv4Stack=true -Djava.security.egd=file:/dev/./urandom -Xms1024m -Xmx2048m -XX:MaxPermSize=512m -javaagent:/opt/sefon-secure/secure-agent.jar -classpath .:/opt/govern/govern_1/classes:/opt/govern/govern_1/...
2.0.0.jar:/opt/govern/govern_1/lib/ext/*.zip/opt/govern/govern_1/domains/mydomain/lib/*.zip:/opt/govern/govern_1/domains/mydomain/lib/*.jar: com.apusic.server.Main -root /opt/govern/govern_1
...

查看【内存】占用TopN的进程

N=10

ps -aux|head -1;ps -aux|sort -k4nr|head -10

查看【CPU】占用TopN的进程

N=5

ps -aux | sort -k3nr | head -5

杀掉指定进程ID的进程

kill

[杀掉指定PID的进程]
kill -9 <PID>

Windows OS中类似的命令

  • tasklist
C:\Users\Johnny>tasklist

映像名称                       PID 会话名              会话#       内存使用
========================= ======== ================ =========== ============
System Idle Process 0 Services 0 8 K
System 4 Services 0 2,792 K
Registry 120 Services 0 55,760 K
smss.exe 476 Services 0 580 K
csrss.exe 796 Services 0 2,776 K
wininit.exe 916 Services 0 3,548 K
services.exe 988 Services 0 8,412 K
...
  • netstat
netstat -ano | findstr 8080
  • taskkill
taskkill -F -PID <PID>
taskkill -F -IM java.exe

根据端口,查找程序文件的运行/存放路径

方式1: /proc/PID | grep -i CWD

  • 先根据端口查出程序PID
# netstat -ntlp | grep 端口号
  • 再根据PID查出程序所在文件路径
# ll /proc/PID | grep -i cwd

方式2: ss

# ss -lntp | grep 18163
LISTEN 0 128 :::18163 :::* users:(("java",pid=87535,fd=296))

方式3: /proc/PID 【推荐】

cd /proc/<PID> & ls -ail | grep -i exe

方式4: lsof -p PID

lsof -p <PID>

查看指定进程(PID)的进程信息

  • init 进程是系统启动的第1个进程,进程的 PID1,也是系统中所有进程的父进程

进程状态(STAT)

-D:不可被唤醒的睡眠状态,通常用于 I/O 情况。
-R:该进程正在运行。
-S:该进程处于睡眠状态,可被唤醒。
-T:停止状态,可能是在后台暂停或进程处于除错状态。
-W:内存交互状态(从 2.6 内核开始无效)。
-X:死掉的进程(应该不会出现)。
-Z:僵尸进程。进程已经中止,但是部分程序还在内存当中。
-<:高优先级(以下状态在 BSD 格式中出现)。
-N:低优先级。
-L:被锁入内存。
-s:包含子进程。
-l:多线程(小写 L)。
-+:位于后台。

查看操作系统内各进程各自占用的句柄数

lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more

显示所有进程信息

不同操作系统(如 Linux、BSD)的 ps 的版本和参数有很大差异,具体还是要以实际情况而定。

方式1: BSD格式输出

BSD格式: USER(用户名) , PID(进程ID) , PPID(父进程ID) , C , STIME , TTY , TIME , CMD

  UID:用户ID
PID:process id 进程id
PPID: parent process id 父进程id
LWP:表示这是个线程;要么是主线程(进程),要么是线程
NLWP: num of light weight process 轻量级进程数量,即线程数量
STIME: start time 启动时间
TIME: 占用的CPU总时间
TTY:该进程是在哪个终端运行的;pts/0255代表虚拟终端,一般是远程连接的终端;tty1tty7 代表本地控制台终端
CMD: 进程的启动命令

(输出的结果,PID可能重复)

  • -e 代表列出所有进程
  • -l 代表长格式
  • -f 代表完整的格式(有时候也用-F代表超完整的格式)
# ps -eLf

方式2: 标准格式输出

标准格式: USER , PID(进程ID) , %CPU , %MEM , VSZ , RSS , TTY , STAT , START , TIME , COMMAND

(输出的结果,PID升序罗列,且不会重复)

  • -a 表示所有关联到终端的进程,如果同时使用 x 则代表所有进程;
  • -u 表示列出进程的用户

(由于一些ps版本的原因,除了支持ps aux外,也支持了 ps -aux)

# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 191136 3824 ? Ss 2021 1:26 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 2021 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? S< 2021 0:00 [kworker/0:0H]
root 6 0.0 0.0 0 0 ? S 2021 0:29 [ksoftirqd/0]
root 7 0.0 0.0 0 0 ? S 2021 0:22 [migration/0]
root 8 0.0 0.0 0 0 ? S 2021 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? S 2021 136:52 [rcu_sched]
root 10 0.0 0.0 0 0 ? S< 2021 0:00 [lru-add-drain]
root 11 0.0 0.0 0 0 ? S 2021 1:16 [watchdog/0]
root 12 0.0 0.0 0 0 ? S 2021 1:07 [watchdog/1]
root 13 0.0 0.0 0 0 ? S 2021 0:28 [migration/1]
root 14 0.0 0.0 0 0 ? S 2021 0:10 [ksoftirqd/1]
root 16 0.0 0.0 0 0 ? S< 2021 0:00 [kworker/1:0H]
root 17 0.0 0.0 0 0 ? S 2021 1:00 [watchdog/2]
root 18 0.0 0.0 0 0 ? S 2021 0:10 [migration/2]
root 19 0.0 0.0 0 0 ? S 2021 0:36 [ksoftirqd/2]
root 21 0.0 0.0 0 0 ? S< 2021 0:00 [kworker/2:0H]
root 22 0.0 0.0 0 0 ? S 2021 1:02 [watchdog/3]
root 23 0.0 0.0 0 0 ? S 2021 0:26 [migration/3]
root 24 0.0 0.0 0 0 ? S 2021 0:16 [ksoftirqd/3]
root 25 0.0 0.0 0 0 ? S 2021 1:51 [kworker/3:0]
root 26 0.0 0.0 0 0 ? S< 2021 0:00 [kworker/3:0H]
root 27 0.0 0.0 0 0 ? S 2021 0:58 [watchdog/4]
root 28 0.0 0.0 0 0 ? S 2021 0:07 [migration/4]
root 29 0.0 0.0 0 0 ? S 2021 0:36 [ksoftirqd/4]
root 31 0.0 0.0 0 0 ? S< 2021 0:00 [kworker/4:0H]
root 32 0.0 0.0 0 0 ? S 2021 1:04 [watchdog/5]
root 33 0.0 0.0 0 0 ? S 2021 0:29 [migration/5]
root 34 0.0 0.0 0 0 ? S 2021 0:11 [ksoftirqd/5]
root 36 0.0 0.0 0 0 ? S< 2021 0:00 [kworker/5:0H]
root 37 0.0 0.0 0 0 ? S 2021 0:56 [watchdog/6]
root 38 0.0 0.0 0 0 ? S 2021 0:07 [migration/6]
root 39 0.0 0.0 0 0 ? S 2021 0:36 [ksoftirqd/6]
root 41 0.0 0.0 0 0 ? S< 2021 0:00 [kworker/6:0H]
root 42 0.0 0.0 0 0 ? S 2021 1:04 [watchdog/7]
root 43 0.0 0.0 0 0 ? S 2021 0:30 [migration/7]
root 44 0.0 0.0 0 0 ? S 2021 0:10 [ksoftirqd/7]
root 46 0.0 0.0 0 0 ? S< 2021 0:00 [kworker/7:0H]
root 48 0.0 0.0 0 0 ? S 2021 0:00 [kdevtmpfs]
root 49 0.0 0.0 0 0 ? S< 2021 0:00 [netns]
root 50 0.0 0.0 0 0 ? S 2021 6:21 [khungtaskd]
root 51 0.0 0.0 0 0 ? S< 2021 0:00 [writeback]
root 52 0.0 0.0 0 0 ? S< 2021 0:00 [kintegrityd]
root 53 0.0 0.0 0 0 ? S< 2021 0:00 [bioset]
root 54 0.0 0.0 0 0 ? S< 2021 0:00 [bioset]
root 55 0.0 0.0 0 0 ? S< 2021 0:00 [bioset]
root 56 0.0 0.0 0 0 ? S< 2021 0:00 [kblockd]
root 57 0.0 0.0 0 0 ? S< 2021 0:00 [md]
root 58 0.0 0.0 0 0 ? S< 2021 0:00 [edac-poller]
root 59 0.0 0.0 0 0 ? S< 2021 0:00 [watchdogd]
root 60 0.0 0.0 0 0 ? S 2021 11:15 [kworker/0:1]
root 61 0.0 0.0 0 0 ? S 2021 0:44 [kworker/1:1]
root 66 0.0 0.0 0 0 ? S 2021 0:34 [kswapd0]
root 67 0.0 0.0 0 0 ? SN 2021 0:00 [ksmd]
root 68 0.0 0.0 0 0 ? SN 2021 0:34 [khugepaged]
root 69 0.0 0.0 0 0 ? S< 2021 0:00 [crypto]
root 77 0.0 0.0 0 0 ? S< 2021 0:00 [kthrotld]
root 79 0.0 0.0 0 0 ? S< 2021 0:00 [kmpath_rdacd]
root 80 0.0 0.0 0 0 ? S< 2021 0:00 [kaluad]
root 81 0.0 0.0 0 0 ? S< 2021 0:00 [kpsmoused]
root 83 0.0 0.0 0 0 ? S< 2021 0:00 [ipv6_addrconf]
root 97 0.0 0.0 0 0 ? S< 2021 0:00 [deferwq]
root 140 0.0 0.0 0 0 ? S 2021 0:34 [kauditd]
root 144 0.0 0.0 0 0 ? S 2021 5:03 [kworker/6:1]
root 256 0.0 0.0 0 0 ? R 2021 6:21 [kworker/7:1]
root 339 0.0 0.0 0 0 ? S< 2021 0:00 [ata_sff]
root 705 0.0 0.0 0 0 ? S 2021 0:00 [scsi_eh_0]
root 707 0.0 0.0 0 0 ? S< 2021 0:00 [scsi_tmf_0]
root 719 0.0 0.0 0 0 ? S 2021 0:00 [scsi_eh_1]
root 724 0.0 0.0 0 0 ? S< 2021 0:00 [scsi_tmf_1]
root 743 0.0 0.0 0 0 ? S< 2021 0:00 [ttm_swap]
root 817 0.0 0.0 0 0 ? S< 2021 0:03 [kworker/7:1H]
root 818 0.0 0.0 0 0 ? S< 2021 1:54 [kworker/0:1H]
root 830 0.0 0.0 0 0 ? S 2021 76:49 [jbd2/vda1-8]
root 831 0.0 0.0 0 0 ? S< 2021 0:00 [ext4-rsv-conver]
root 892 0.0 0.0 0 0 ? S< 2021 0:25 [kworker/2:1H]
root 900 0.0 0.0 0 0 ? S< 2021 0:02 [kworker/3:1H]
root 918 0.0 0.0 0 0 ? S< 2021 0:02 [kworker/5:1H]
root 919 0.0 0.0 48412 11632 ? Ss 2021 2:18 /usr/lib/systemd/systemd-journald
root 922 0.0 0.0 0 0 ? S< 2021 30:08 [kworker/6:1H]
root 930 0.0 0.0 0 0 ? S< 2021 0:20 [kworker/1:1H]
root 948 0.0 0.0 45612 2412 ? Ss 2021 0:00 /usr/lib/systemd/systemd-udevd
root 973 0.0 0.0 0 0 ? S< 2021 0:20 [kworker/4:1H]
root 1340 0.0 0.0 0 0 ? S< 2021 0:00 [nfit]
root 1543 0.0 0.0 0 0 ? S 2021 3:52 [jbd2/vdb1-8]
root 1544 0.0 0.0 0 0 ? S< 2021 0:00 [ext4-rsv-conver]
root 1570 0.0 0.0 55532 1048 ? S<sl 2021 1:10 /sbin/auditd
root 1600 0.0 0.0 21664 1208 ? Ss 2021 15:43 /usr/sbin/irqbalance --foreground
dbus 1601 0.0 0.0 58244 2272 ? Ss 2021 0:20 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
root 1605 0.0 0.0 26424 1744 ? Ss 2021 0:21 /usr/lib/systemd/systemd-logind
polkitd 1607 0.0 0.0 612376 12376 ? Ssl 2021 0:08 /usr/lib/polkit-1/polkitd --no-debug
ntp 1609 0.0 0.0 29960 2004 ? Ss 2021 0:34 /usr/sbin/ntpd -u ntp:ntp -g
rabbitmq 1622 0.2 0.2 6055440 87260 ? Ssl 2021 908:46 /usr/lib64/erlang/erts-8.0.3/bin/beam.smp -W w -A 128 -P 1048576 -t 5000000 -stbt db -zdbbl 128000 -K true -- -root /usr/lib64/erlang -progname erl -- -home /var/
root 1624 0.0 0.0 574328 16756 ? Ssl 2021 32:09 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
rabbitmq 1899 0.0 0.0 13608 2432 ? S 2021 3:08 /usr/lib64/erlang/erts-8.0.3/bin/epmd -daemon
mysql 1939 21.2 4.9 6882464 1617448 ? Sl 2021 88789:57 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
root 1940 0.0 0.0 90176 2188 ? Ss 2021 1:00 /usr/libexec/postfix/master -w
postfix 1973 0.0 0.0 90456 3560 ? S 2021 0:12 qmgr -l -t unix -u
root 1983 0.0 0.0 494340 8752 ? Ssl 2021 13:46 /usr/sbin/rsyslogd -n
root 2234 0.1 0.0 153988 6992 ? Ssl 2021 420:07 /usr/local/bin/redis-server 0.0.0.0:6379
root 2273 0.0 0.0 102900 5520 ? S 1月13 0:00 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-eth0.pid -lf /var/lib/NetworkManager/dhclient-5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03-eth
root 2289 0.4 3.4 10092176 1135124 ? Sl 10:30 3:03 /opt/jdk1.8.0_102/bin/java -Djava.util.logging.config.file=/opt/govern/datasource/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderL
rabbitmq 2472 0.0 0.0 4356 524 ? Ss 2021 6:43 erl_child_setup 1024
root 2757 0.0 0.0 112924 3932 ? Ss 2021 4:02 /usr/sbin/sshd -D
root 2760 0.0 0.0 25908 932 ? Ss 2021 0:00 /usr/sbin/atd -f
root 2762 0.0 0.0 126388 1624 ? Ss 2021 0:20 /usr/sbin/crond -n
root 2768 0.0 0.0 548004 8620 ? Ssl 1月13 0:01 /usr/sbin/NetworkManager --no-daemon
root 2816 0.0 0.0 0 0 ? S 1月08 0:05 [kworker/2:0]
rabbitmq 2850 0.0 0.0 11592 444 ? Ss 2021 0:29 inet_gethost 4
rabbitmq 2851 0.0 0.0 13716 700 ? S 2021 0:40 inet_gethost 4
root 2864 0.0 0.0 51128 1892 ? Ss 2021 44:42 /usr/local/hostguard/bin/hostguard -l /usr/local/hostguard/log
root 3118 0.0 0.0 46608 1268 ? Ss 2021 0:00 nginx: master process nginx
nginx 3119 0.0 0.0 47084 2572 ? S 2021 2:06 nginx: worker process
root 3341 0.4 10.3 8687412 3390992 ? Sl 2021 1985:09 /opt/jdk1.8.0_102/bin/java -Djava.util.logging.config.file=/opt/govern/wydataeye/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderL
root 3515 0.1 0.0 1396608 12044 ? Sl 1月05 25:52 /usr/local/hostguard/bin/hostguard -l /usr/local/hostguard/log
root 3636 0.1 3.4 8052700 1134900 ? Sl 2021 469:33 /opt/jdk1.8.0_102/bin/java -Djava.util.logging.config.file=/opt/govern/cas/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManag
root 3815 0.2 3.5 7958108 1162612 ? Sl 2021 854:34 /opt/jdk1.8.0_102/bin/java -Djava.util.logging.config.file=/opt/govern/wydaas/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogMa
root 3918 0.1 4.1 8053700 1348288 ? Sl 2021 703:14 /opt/jdk1.8.0_102/bin/java -Djava.util.logging.config.file=/opt/govern/wydataquality/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoad
root 4041 3.1 7.8 8017936 2584252 ? Sl 2021 13100:34 /opt/jdk1.8.0_102/bin/java -Djava.util.logging.config.file=/opt/govern/wytaskwatcher/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLo
root 4153 0.0 0.0 0 0 ? S 1月07 0:37 [kworker/5:1]
root 4497 0.0 0.0 0 0 ? S 10:53 0:00 [kworker/u16:2]
root 5117 0.0 0.0 0 0 ? S 2021 0:00 [kworker/2:2]
postfix 5976 0.0 0.0 90280 4212 ? S 19:47 0:00 pickup -l -t unix -u
root 6040 0.0 0.0 155560 6332 ? Ds 20:27 0:00 sshd: root@pts/0
root 6042 0.0 0.0 116052 2568 pts/0 Ss 20:27 0:00 -bash
root 6094 0.0 0.0 155472 1872 pts/0 R+ 20:53 0:00 ps -aux
root 8199 0.0 0.0 0 0 ? S 2021 0:00 [kworker/7:2]
root 9147 0.4 3.6 7954932 1204068 ? Sl 2021 577:09 /opt/jdk1.8.0_102/bin/java -Djava.util.logging.config.file=/opt/govern/bms/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManag
root 9779 0.0 0.0 0 0 ? S 2021 0:00 [kworker/4:1]
root 12889 0.0 0.0 0 0 ? S 2021 1:26 [kworker/4:0]
root 13231 0.0 0.0 0 0 ? S 2021 4:35 [kworker/5:0]
root 14010 0.0 0.0 0 0 ? S 2021 0:05 [kworker/u16:1]
root 22232 0.0 0.0 0 0 ? S 2021 1:08 [kworker/1:0]
root 22574 0.0 0.0 0 0 ? S 2021 0:00 [kworker/0:2]
root 26917 0.0 0.0 116136 2752 tty1 Ss+ 1月13 0:01 -bash
root 27291 0.0 0.0 97144 2672 ? Ss 1月12 0:00 login -- root
root 29514 0.0 0.0 0 0 ? S 2021 0:00 [kworker/3:2]
root 30703 0.0 0.0 0 0 ? S 2021 0:00 [kworker/6:0]

以树形结构显示【程序】和【进程】之间的关系:pstree

命令格式

pstree [选项] [PID或用户名]

命令参数

选项 含义
-a 显示启动每个进程对应的完整指令,包括启动进程的路径、参数等。
-c 不使用精简法显示进程信息,即显示的进程中包含子进程和父进程。
-n 根据进程 PID 号来排序输出,默认是以程序名排序输出的。
-p 显示进程的 PID。
-u 显示进程对应的用户名称。

在使用 pstree 命令时,如果不指定进程的 PID 号,也不指定用户名称,则会以 init 进程为根进程,显示系统中所有程序和进程的信息;反之,若指定 PID 号或用户名,则将以 PID 或指定命令为根进程,显示 PID 或用户对应的所有程序和进程。

查看指定进程的进程树

# pstree -p 2289
java(2289)-+-{java}(2290)
|-{java}(2291)
|-{java}(2292)
|-{java}(2293)
|-{java}(2294)
|-{java}(2295)
|-{java}(2296)
|-{java}(2297)
|-{java}(2298)
|-{java}(2299)
|-{java}(2300)
|-{java}(2301)
|-{java}(2302)
... # pstree
[root@gly-deploy-07 ~]# pstree
systemd─┬─NetworkManager─┬─dhclient
│ └─2*[{NetworkManager}]
├─atd
├─auditd───{auditd}
├─beam.smp─┬─erl_child_setup───inet_gethost───inet_gethost
│ └─139*[{beam.smp}]
├─crond
├─dbus-daemon
├─epmd
├─hostguard───hostguard───18*[{hostguard}]
├─irqbalance
├─java───2149*[{java}]
├─java───182*[{java}]
├─java───170*[{java}]
├─java───80*[{java}]
├─java───75*[{java}]
├─java───107*[{java}]
├─java───71*[{java}]
├─login───bash
├─master─┬─pickup
│ └─qmgr
├─mysqld───70*[{mysqld}]
├─nginx───nginx
├─ntpd
├─polkitd───6*[{polkitd}]
├─redis-server───3*[{redis-server}]
├─rsyslogd───2*[{rsyslogd}]
├─sshd───sshd───bash───pstree
├─systemd-journal
├─systemd-logind
├─systemd-udevd
└─tuned───4*[{tuned}]

查看【指定用户】启动的进程树

# pstree mysql
mysqld───70*[{mysqld}]
(显示了 mysql 用户启动了1个进程【mysqld】,并且 mysqld 进程拥有 69 个子进程(外加 1 个父进程,共计 70 个进程)。) # pstree root
systemd─┬─NetworkManager─┬─dhclient
│ └─2*[{NetworkManager}]
├─atd
├─auditd───{auditd}
├─beam.smp─┬─erl_child_setup───inet_gethost───inet_gethost
│ └─139*[{beam.smp}]
├─crond
├─dbus-daemon
├─epmd
├─hostguard───hostguard───18*[{hostguard}]
├─irqbalance
├─java───2153*[{java}]
├─java───182*[{java}]
├─java───170*[{java}]
├─java───80*[{java}]
├─java───75*[{java}]
├─java───107*[{java}]
├─java───71*[{java}]
├─login───bash
├─master─┬─pickup
│ └─qmgr
├─mysqld───70*[{mysqld}]
├─nginx───nginx
├─ntpd
├─polkitd───6*[{polkitd}]
├─redis-server───3*[{redis-server}]
├─rsyslogd───2*[{rsyslogd}]
├─sshd───sshd───bash───pstree
├─systemd-journal
├─systemd-logind
├─systemd-udevd
└─tuned───4*[{tuned}] # pstree nginx
nginx

查看指定进程(PID)的全部【进程】信息

# ll /proc/2289/

查看指定进程ID(PID)的线程信息

查看指定进程(PID)的全部【线程】信息

# ll /proc/2289/task/
dr-xr-xr-x 7 root root 0 1月 14 20:28 5952
dr-xr-xr-x 7 root root 0 1月 14 20:28 5953
dr-xr-xr-x 7 root root 0 1月 14 20:28 5954
dr-xr-xr-x 7 root root 0 1月 14 20:28 5955
dr-xr-xr-x 7 root root 0 1月 14 20:28 5980
dr-xr-xr-x 7 root root 0 1月 14 20:28 5981
dr-xr-xr-x 7 root root 0 1月 14 20:28 5982
dr-xr-xr-x 7 root root 0 1月 14 20:28 5983
...
# ll /proc/<process-id>/task/<thread-id>

统计指定进程(PID)的线程数

方式1 /proc/

# ll /proc/2289/task/ | wc -l

方式2 pstree

# pstree -p 2289 |wc -l
2153

推荐文献

最新文章

  1. 阿里技术协会好文推荐:Android绘制流程http://click.aliyun.com/m/8719/
  2. 【求助】WPF 在XP下 有的Textbox光标会消失
  3. NOIP2001统计单词个数[序列DP]
  4. 分布式学习材料Distributed System Prerequisite List
  5. python dict.get()和dict[&#39;key&#39;]的区别
  6. linux进程及进程控制
  7. css 透明(transparent)
  8. hdu 2068
  9. acess() 判断目录是否存在
  10. C++ Code_TabControl
  11. python基础教程第6章——抽象
  12. 三点半们耐热i哦好家哦i囧囧【
  13. [ext4]04 磁盘布局 - Meta Block Groups
  14. Spring Boot:The field file exceeds its maximum permitted size of 1048576 bytes
  15. P1265 公路修建 最小生成树
  16. vjson.hpp
  17. TP内部方法访问
  18. python----面对对象三大特征2
  19. Goldengate OGG常见问题与错误列表
  20. 阿里云香港主机自动换IP

热门文章

  1. xShell执行js脚本
  2. django rest 自定义返回数据接口和异常处理
  3. Springboot中@Autowired为何获取了我们没有注入的Bean?
  4. springboot启动图标banner
  5. 基础实验之访问控制列表ACL应用
  6. rgb变为灰度图像
  7. Java数据类型基础
  8. 转载&#183;Pycharm Pro“This license 56ZS5PQ1RF has been cancelled” 激活码失效处理记录
  9. python读书笔记-网页制作
  10. 【JIRA】jira issue reindex