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