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

[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

推荐文献

[Linux]常用命令之【netstat/ps/lsof/ss/kill/】#进程/服务/端口#的更多相关文章

  1. linux常用命令:netstat 命令

    netstat命令用于显示与IP.TCP.UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况.netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP ...

  2. 【操作系统之九】Linux常用命令之netstat

    一.概念netstat命令用于显示与IP.TCP.UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况.netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP ...

  3. Linux 常用命令标记

    1.linux 服务器之间拷贝文件 scp 本地用户名@IP地址:文件名1 远程用户名@IP地址:文件名2 该命令可以变型为目的服务器204上输入如下命令:红色部分是需要接受目的地,-r是递归复制该文 ...

  4. linux常用命令 ps

    linux常用命令 ps Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些线程的快照,就是执行ps命令的那个时刻的那些进程 ...

  5. 测试必知必会系列- Linux常用命令 - ps(重点)

    21篇测试必备的Linux常用命令,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1672457.html 查看所 ...

  6. Linux 常用命令大全2

    Linux 常用命令大全 [帮助命令] command —help man command man 2 command 查看第2个帮助文件 man -k keyword 查找含有关键字的帮助 info ...

  7. linux常用命令的介绍

    本文主要介绍Linux常用命令工具,比如用户创建,删除,文件管理,常见的网络命令等 如何创建账号: 1. 创建用户 useradd -m username -m 表示会在/home 路径下添加创建用户 ...

  8. Linux 常用命令使用方法大搜刮

    Linux 常用命令使用方法大搜刮 1.# 表示权限用户(如:root),$ 表示普通用户  开机提示:Login:输入用户名  password:输入口令   用户是系统注册用户成功登陆后,可以进入 ...

  9. linux常用命令 、查看日志、web排查

    linux常用命令 ps aux|grep xxx (比如 ps aux|grep tomcat ps aux|grep tomcat-portalvip ps aux|grep nginx 等) r ...

  10. 100个命令Linux常用命令大全

    Linux常用命令大全100条: 1,echo "aa" > test.txt 和 echo "bb" >> test.txt//>将原 ...

随机推荐

  1. md5信息摘要算法实现(python 和 go版本)

    纯手写实现的md5信息摘要算法 github地址如下 https://github.com/kittysmith5/dgst/blob/main/md5 python3版本代码 #!/usr/bin/ ...

  2. SQL Server 错误:特殊符号“•”导致的sql查询问题

    问题描述: 对于一些标题或字符串,例如: 如果导入数据库,就会发现会自动变成?号了: 在进行SQL查询的时候,会出现一个同一条sql语句在mysql直接执行sql可以查询到,但是mssql进行查询的时 ...

  3. 看懂插入才算看懂redis跳表

    跳表的数据结构 forward相当于9之于8,12之于8 插入算法流程: 1.初始化两个数组update和rank数组:update表示每一层的前继节点.rank表示update节点到头结点的距离(用 ...

  4. python3GUI--200行代码写一个上课点名程序(附源码)

    @ 目录 一.准备工作 1.Tkinter 2.PIL 二.预览 1.启动 2.开始点名-顺序点名 3.开始点名-随机点名 4.手动加载人名单 5.开始点名-顺序点名-Pyqt5版本 6.人名单格式 ...

  5. Linux系统管理实战-进程管理

    进程管理 了解进程 状态/生命周期 查看进程 管理进程 kill killall pkill 进程的调度 进程的nice 了解进程状态/生命周期 什么是进程? 进程的状态? 进程的生命周期? 查看进程 ...

  6. Linux中/etc目录下passwd和shadow文件

    /etc/passwd介绍 首先,通过cat /etc/passwd 来查看文件/etc/passwd中内容: root:x:0:0:root:/root:/bin/bash daemon:x:1:1 ...

  7. redis事务和锁机制、持久化操作RDB/AOF

    一.Redis事务介绍 Redis事务是一个单独的隔离操作 :事务中的所有命令都会序列化.按顺序地执行.事务在执行的过程中,不会被其他客户端发送来的命令请求所打断.Redis事务的主要作用就是串联多个 ...

  8. 使用navicat连接本地数据库时,出现错误1251错误

    在安装完MySQL的时候,我们现在一般都使用Navicat来连接数据库,可惜出现下面的错误:1251-Client does not support authentication protocol r ...

  9. 在gibhub上传本地项目代码(新手入门)

    一.首先注册github账号 地址:https://github.com/ 二.其次下载安装git工具 地址:https://gitforwindows.org/ 直接进入安装,这里就不多做介绍 三. ...

  10. 查看mmdetection中模型的配置信息

    方法一 可以直接打开mmdetection中的目录查看,/configs目录下都是对应的模型的配置 示例: 可以找到_base_目录下的这四个文件文件查看配置. 方法二 读取配置文件查看 在命令行中输 ...