Linux系统中的进程和端口查看命令

本章将和大家分享Linux系统中的进程和端口查看命令。

一、ps命令

Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。

1、基本语法

ps [选项]

2、常用选项

  • a:显示所有进程
  • -a:显示同一终端下的所有程序
  • -A:显示所有进程的信息。
  • c:显示进程的真实名称
  • -N:反向选择
  • -e:显示所有进程(与 -A 相同)。
  • e:显示环境变量
  • -f:以全格式显示进程信息,包括父进程ID(PPID)、CPU使用率(%CPU)、内存使用率(%MEM)等。
  • -H:显示树状结构
  • r:显示当前终端的进程
  • T:显示当前终端的所有程序
  • -u:显示指定用户的进程信息,可以通过用户名来限制显示的进程列表。
  • -C <command>:显示由指定命令启动的进程的信息。
  • --lines<行数>:每页显示的行数
  • --width<字符数>:每页显示的字符数
  • --help:显示帮助信息
  • --version:显示版本显示
  • -l:显示长格式信息,包括更多细节,如进程命令行、进程状态等。
  • -p:显示指定进程ID(PID)的进程信息。
  • -o:自定义输出格式,可以指定要显示的列和排序方式。
  • -x:显示没有控制终端的进程。
  • -aux:BSD风格的选项组合,显示详细的进程信息,包括所有用户的进程、进程所有者、CPU和内存使用情况等。
  • -ef:System V风格的选项组合,以全格式显示系统中所有进程的列表,包括其他用户的进程。

3、输出字段

ps 命令默认显示的列有:

  • PID:进程 ID。
  • TTY:控制终端。
  • TIME:所使用的 CPU 时间。
  • CMD:启动的命令。

通过 -o 选项,你可以指定输出格式,例如:

  • %cpu:CPU 使用百分比。
  • %mem:内存使用百分比。
  • %c:进程优先级。
  • args:命令行参数。
  • pcpu:当前 CPU 使用百分比。
  • pmem:当前内存使用百分比。

4、输出信息解释

  • UID:进程所有者的用户ID。
  • PID:进程的唯一标识符,即进程ID。
  • PPID:父进程的进程ID。
  • %CPU:进程使用的CPU资源的百分比。
  • %MEM:进程使用的内存资源的百分比。
  • VSZ:进程的虚拟内存大小(以KB为单位)。
  • RSS:进程占用的物理内存大小(以KB为单位)。
  • TTY:进程所关联的终端。
  • STAT:进程的状态(如R表示运行,S表示睡眠,Z表示僵尸等)。
  • START:进程启动的时间。
  • TIME:进程运行过程中占用CPU的总时间。
  • COMMAND:启动进程的命令名称。

5、示例

1)显示所有进程

ps -e  
或  
ps -A

2)以全格式显示所有进程

ps -ef

3)显示特定用户的进程

ps -u 用户名

4)显示指定进程ID的进程信息

ps -p PID

5)显示指定命令名称的进程

ps -C 命令名

6)自定义输出格式

ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem

6、常用方式

ps -ef #显示所有当前进程(常用)
ps -aux #显示所有当前进程(显示更详细的信息)(常用)
ps -ax #显示所有当前进程
ps -u pungki #根据用户过滤进程
ps -aux --sort -pcpu | less #根据 CPU 使用来升序排序
ps -aux --sort -pmem | less #根据用户过滤进程
ps -aux --sort -pcpu,+pmem | head -n 10 #查询使用cpu和内存最高的前10个应用
ps -C getty #通过进程名和PID过滤
ps -f -C getty #带格式显示的,通过进程名和PID过滤
ps -L 1213 #根据线程来过滤进程
ps -axjf(或pstree) #树形显示进程
ps -eo pid,user,args # 显示安全信息
ps -U root -u root u #格式化输出 root 用户(真实的或有效的UID)创建的进程

二、netstat命令

netstat 命令在 Linux 系统中是一个非常有用的工具,用于显示网络连接、路由表、网络接口统计信息、伪装连接(masquerade connections)和多播成员信息等。

1、基本语法

netstat [选项]

2、常用选项

  • -a 或 --all: 显示所有连接状态,包括监听连接和非监听连接。
  • -n 或 --numeric: 显示数字形式的地址和端口,而不是尝试解析它们。
  • -t 或 --tcp: 仅显示 TCP 连接。
  • -u 或 --udp: 仅显示 UDP 连接。
  • -l 或 --listening: 仅显示监听连接。
  • -p 或 --programs: 显示与每个连接/监听端口相关的程序名称。
  • -r 或 --route: 显示路由表。
  • -i 或 --interfaces: 显示网络接口信息。
  • -s 或 --statistics: 显示每种协议的统计信息。
  • -v 或 --verbose: 显示更详细的输出。
  • -m 或 --masquerade: 显示伪装连接。
  • -g 或 --groups: 显示多播组成员信息。
  • -b 或 --broadcaster: 显示广播地址信息。
  • -e: 显示扩展信息,例如uid等。
  • -c: 每隔一个固定时间,执行该netstat命令。

提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到。

3、示例

1)列出所有端口 (包括监听和未监听的)

 ## 列出所有端口 
 netstat -a
 ## 列出所有 tcp 端口 
 netstat -at
 ##列出所有 udp 端口 
 netstat -au

2)列出所有处于监听状态的Sockets

### 只显示监听端口 
netstat -l
### 只列出所有监听 tcp 端口
netstat -lt
### 只列出所有监听 udp 端口 
netstat -lu
### 只列出所有监听 UNIX 端口 
netstat -lx

3)找出程序运行的端口(常用)

netstat -tulnp | grep <程序名或端口号>

例如:找出 nginx 运行的端口

[root@localhost Software]# netstat -tulnp | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      8981/nginx: master

或者使用ss命令(现代Linux发行版推荐使用):

ss -tulnp | grep <程序名或端口号>

选项与netstat命令中的类似。

4)找出运行在指定端口的进程(常用)

例如:找出运行在80端口的进程

[root@localhost Software]# netstat -lntp | grep :80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      8981/nginx: master

5)显示所有监听的 TCP 端口及其关联的程序(常用)

netstat -tlpn

6)显示所有 TCP 和 UDP 的监听端口及其关联的程序(常用)

netstat -tulnp

7)显示所有TCP和UDP连接

netstat -atu

8)显示所有连接,包括监听和非监听的 TCP 连接

netstat -an | grep ESTABLISHED