Linux查看进程的几种方法(ps、top、pstree)
简要:
ps aux:显示所有进程
ps -le(ps -lef): 显示更详细的信息
ps -lu 用户名: 只输出与“用户名”相关的进程
ps -l: 只输出当前终端产生的进程
top:动态交互显示进程、cup、内存,类似windows任务管理器(按“q”退出top命令)
pstree -aup:命令树形式显示进程
kill -9 3652309 3650384(加上sudo)(3652309和3650384是PID号,进程号):杀死对应进程
一、ps 命令
ps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。
ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。
1)ps aux:显示所有进程
- a:显示当前终端下的所有进程信息,包括其他用户的进程。
- u:使用以用户为主的格式输出进程信息。
- x:显示当前用户在所有终端下的进程。
示例:
[chengaoxiang@terminal-rn-cxzenicu-0-xyjwmdib-65c5c6c668-mxk67:~]$>>ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 4436 3344 ? Ss 2022 0:00 /bin/bash /usr/sbin/sshd -D
root 7 0.0 0.0 12352 7464 ? S 2022 0:00 sshd_origin: /usr/sbin/sshd_origin -D [listener] 0 of 10-100 startups
root 13 7.7 0.0 735452 20992 ? Sl 2022 5444:01 /home/chenmi/node_exporter/node_exporter-1.3.1.linux-amd64/node_exporter
root 14 0.1 0.0 716120 21040 ? Sl 2022 101:55 /home/chenmi/node_exporter/nvidia_gpu_exporter
root 28 0.0 0.0 3880 2336 ? Ss 2022 0:34 /usr/sbin/cron
root 29 1.6 0.0 5592624 27276 ? Sl 2022 1184:43 /home/chenmi/process-exporter-0.7.10.linux-amd64/process-exporter -config.path /home/chenmi/process-exporter-0.7.10.linux-amd64
root 99 0.0 0.0 13604 8608 ? Ss 2022 0:00 sshd_origin: tunnel [priv]
tunnel 101 0.0 0.0 13852 6136 ? S 2022 2:23 sshd_origin: tunnel
root 102 0.0 0.0 13600 8460 ? Ss 2022 0:00 sshd_origin: tunnel [priv]
tunnel 104 0.0 0.0 13848 6108 ? S 2022 1:43 sshd_origin: tunnel
root 105 0.0 0.0 13608 8728 ? Ss 2022 0:00 sshd_origin: tunnel [priv]
tunnel 107 0.0 0.0 13860 6204 ? S 2022 3:34 sshd_origin: tunnel
chengao+ 5254 0.0 0.0 4144 2556 ? Ss 2022 0:00 SCREEN
chengao+ 5255 0.0 0.0 4376 3644 pts/6 Ss+ 2022 0:00 /bin/bash
chenmi 7852 0.0 0.0 9024 4236 ? Ss 2022 0:02 tmux -2
chenmi 7855 0.0 0.0 7356 4200 pts/12 Ss+ 2022 0:00 -bash
chenmi 9008 0.0 0.0 7240 4036 pts/13 Ss+ 2022 0:00 -bash
root 12587 0.0 0.0 13660 8724 ? Ss 2022 0:00 sshd_origin: tunnel [priv]
输出参数说明:
USER:该进程是由哪个用户产生的。
PID:进程的 ID。
%CPU:该进程占用 CPU 资源的百分比,占用的百分比越高,进程越耗费资源。
%MEM:该进程占用物理内存的百分比,占用的百分比越高,进程越耗费资源。
VSZ:该进程占用虚拟内存的大小,单位为 KB。
RSS:该进程占用实际物理内存的大小,单位为 KB。
TTY:该进程是在哪个终端运行的。其中,tty1 ~ tty7 代表本地控制台终端(可以通过 Alt+F1 ~ F7 快捷键切换不同的终端),tty1~tty6 是本地的字符界面终端,tty7 是图形终端。pts/0 ~ 255 代表虚拟终端,一般是远程连接的终端,第一个远程连接占用 pts/0,第二个远程连接占用 pts/1,依次増长。
STAT:进程状态。常见的状态有以下几种:
-D:不可被唤醒的睡眠状态,通常用于 I/O 情况。
-R:该进程正在运行。
-S:该进程处于睡眠状态,可被唤醒。
-T:停止状态,可能是在后台暂停或进程处于除错状态。
-W:内存交互状态(从 2.6 内核开始无效)。
-X:死掉的进程(应该不会出现)。
-Z:僵尸进程。进程已经中止,但是部分程序还在内存当中。
-<:高优先级(以下状态在 BSD 格式中出现)。
-N:低优先级。
-L:被锁入内存。
-s:包含子进程。
-l:多线程(小写 L)。
-+:位于后台。
START:该进程的启动时间。
TIME:该进程占用 CPU 的运算时间,注意不是系统时间。
COMMAND:产生此进程的命令名。
2)ps -le 或(ps -lef): 显示更详细的信息
- -l:长格式显示更加详细的信息;
- -e:显示所有进程;
- -f:使用完整的(full)格式显示进程信息;
"ps aux"命令可以看到系统中所有的进程,"ps -le"命令也能看到系统中所有的进程。由于 "-l" 选项的作用,所以 "ps -le" 命令能够看到更加详细的信息,比如父进程的 PID、优先级等。但是这两个命令的基本作用是一致的,掌握其中一个就足够了。
示例:
[chengaoxiang@terminal-rn-cxzenicu-0-xyjwmdib-65c5c6c668-mxk67:~]$>>ps -le
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1 0 0 80 0 - 1109 - ? 00:00:00 sshd
4 S 0 7 1 0 80 0 - 3088 - ? 00:00:00 sshd_origin
4 S 0 13 1 7 80 0 - 183863 - ? 3-18:45:32 node_exporter
4 S 0 14 1 0 80 0 - 179030 - ? 01:41:57 nvidia_gpu_expo
5 S 0 28 1 0 80 0 - 970 - ? 00:00:34 cron
4 S 0 29 1 1 80 0 - 1398156 - ? 19:45:04 process-exporte
4 S 0 99 7 0 80 0 - 3401 - ? 00:00:00 sshd_origin
5 S 8895 101 99 0 80 0 - 3463 - ? 00:02:23 sshd_origin
4 S 0 102 7 0 80 0 - 3400 - ? 00:00:00 sshd_origin
5 S 8895 104 102 0 80 0 - 3462 - ? 00:01:43 sshd_origin
4 S 0 105 7 0 80 0 - 3402 - ? 00:00:00 sshd_origin
5 S 8895 107 105 0 80 0 - 3465 - ? 00:03:34 sshd_origin
5 S 8906 5254 1 0 80 0 - 1036 poll_s ? 00:00:00 screen
0 S 8906 5255 5254 0 80 0 - 1094 poll_s pts/6 00:00:00 bash
5 S 8892 7852 1 0 80 0 - 2256 - ? 00:00:02 tmux: server
输出参数说明:
F:进程标志,说明进程的权限,常见的标志有两个:1(进程可以被复制,但是不能被执行),4(进程使用超级用户权限);
S:进程状态。具体的状态和"psaux"命令中的 STAT 状态一致;
UID:运行此进程的用户的 ID;
PID:进程的 ID;
PPID:父进程的 ID;
C:该进程的 CPU 使用率,单位是百分比;
PRI:进程的优先级,数值越小,该进程的优先级越高,越早被 CPU 执行;
NI:进程的优先级,数值越小,该进程越早被执行;
ADDR:该进程在内存的哪个位置;
SZ:该进程占用多大内存;
WCHAN:该进程是否运行。"-"代表正在运行;
TTY:该进程由哪个终端产生;
TIME:该进程占用 CPU 的运算时间,注意不是系统时间;
CMD:产生此进程的命令名。
3)ps -lu 用户名: 只输出“用户名”指定的进程
- -u:指定用户名或用户uid;
- -l:同上;
示例(这里chengaoxiang的UID是8906):
[chengaoxiang@terminal-rn-cxzenicu-0-xyjwmdib-65c5c6c668-mxk67:~]$>>ps -lu chengaoxiang
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
5 S 8906 5254 1 0 80 0 - 1036 poll_s ? 00:00:00 screen
0 S 8906 5255 5254 0 80 0 - 1094 poll_s pts/6 00:00:00 bash
5 S 8906 33822 33820 0 80 0 - 3474 - ? 00:02:30 sshd_origin
4 S 8906 33830 33822 0 80 0 - 216772 futex_ pts/0 00:00:42 python3.7
0 S 8906 33871 33822 0 80 0 - 1493 - ? 00:00:44 sftp-server
5 S 8906 34888 34883 0 80 0 - 3474 - ? 00:00:00 sshd_origin
0 S 8906 34889 34888 0 80 0 - 1094 poll_s pts/2 00:00:00 bash
4 S 8906 40593 33822 0 80 0 - 189886 futex_ pts/1 00:00:09 python3.9
4 S 8906 45843 33822 0 80 0 - 4927287 futex_ pts/4 00:01:56 python3.9
0 T 8906 77424 34889 0 80 0 - 1563 do_sig pts/2 00:00:00 top
0 T 8906 77430 34889 0 80 0 - 1563 do_sig pts/2 00:00:00 top
5 S 8906 77459 77457 0 80 0 - 3475 - ? 00:00:00 sshd_origin
0 S 8906 77460 77459 0 80 0 - 1094 poll_s pts/3 00:00:00 bash
5 S 8906 77542 77540 0 80 0 - 3475 - ? 00:00:00 sshd_origin
0 S 8906 77543 77542 0 80 0 - 1094 do_wai pts/5 00:00:00 bash
4)ps -l: 只输出当前终端产生的进程
示例(可见,该终端只产生了两个进程:一个是登录之后生成的 Shell,也就是 bash;另一个是正在执行的 ps 命令。):
[chengaoxiang@terminal-rn-cxzenicu-0-xyjwmdib-65c5c6c668-mxk67:~]$>>ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 8906 78035 78034 0 80 0 - 1094 do_wai pts/7 00:00:00 bash
0 R 8906 78053 78035 0 80 0 - 1454 - pts/7 00:00:00 ps
二、top 命令
以全屏交互式的界面显示进程排名,及时跟踪包括CPU、内存等系统资源占用情况,默认情况下每3秒刷新一次,其作用基本类似于Windows系统中的任务管理器。
按“q”退出top命令。
示例:
[chengaoxiang@terminal-rn-cxzenicu-0-xyjwmdib-65c5c6c668-mxk67:~]$>>top
top - 15:11:52 up 163 days, 1:56, 11 users, load average: 4.06, 4.32, 4.36
Tasks: 56 total, 1 running, 49 sleeping, 6 stopped, 0 zombie
%Cpu(s): 3.2 us, 2.1 sy, 0.0 ni, 94.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 772682.1 total, 200051.0 free, 99103.9 used, 473527.3 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 669258.4 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 4436 3344 2680 S 0.0 0.0 0:00.16 sshd
7 root 20 0 12352 7464 6384 S 0.0 0.0 0:00.48 sshd_origin
13 root 20 0 735452 21544 11692 S 0.0 0.0 5448:17 node_exporter
14 root 20 0 716120 20468 8732 S 0.0 0.0 102:00.74 nvidia_gpu_expo
28 root 20 0 3880 2336 2012 S 0.0 0.0 0:34.33 cron
29 root 20 0 5592624 28020 10760 S 0.0 0.0 1185:43 process-exporte
99 root 20 0 13604 8608 7140 S 0.0 0.0 0:00.01 sshd_origin
101 tunnel 20 0 13852 6136 4592 S 0.0 0.0 2:23.77 sshd_origin
102 root 20 0 13600 8460 6988 S 0.0 0.0 0:00.01 sshd_origin
104 tunnel 20 0 13848 6108 4620 S 0.0 0.0 1:43.14 sshd_origin
105 root 20 0 13608 8728 7252 S 0.0 0.0 0:00.01 sshd_origin
107 tunnel 20 0 13860 6204 4656 S 0.0 0.0 3:34.21 sshd_origin
5254 chengao+ 20 0 4144 2556 1836 S 0.0 0.0 0:00.00 screen
5255 chengao+ 20 0 4376 3644 2924 S 0.0 0.0 0:00.04 bash
7852 chenmi 20 0 9024 4236 3364 S 0.0 0.0 0:02.90 tmux: server
7855 chenmi 20 0 7356 4200 3540 S 0.0 0.0 0:00.03 bash
9008 chenmi 20 0 7240 4036 3420 S 0.0 0.0 0:00.00 bash
12587 root 20 0 13660 8724 7244 S 0.0 0.0 0:00.01 sshd_origin
12589 tunnel 20 0 15076 7628 4588 S 0.0 0.0 0:06.11 sshd_origin
20551 houliya 20 0 2612 532 464 S 0.0 0.0 0:00.00 sh
20561 houliya 20 0 910224 62788 36024 S 0.0 0.0 1:12.86 node
输出参数说明:
Tasks【系统任务】:xx total,总进程数;running,正在运行的进程数;sleeping,休眠的进程数;stopped,中止的进程数;zombie,僵死进程数。
%Cpu(s)【cpu信息】:us,用户占用;sy,内核占用;ni,优先级调度占用;id,空闲CPU;wa,I/O等待占用;hi,硬件中断占用;si,软件中断占用;st,虚拟化占用。了解空闲的CPU百分比,主要看%id部分。
MiB Mem【内存信息】:total,总内存空间;used,已用内存;free,空闲内存;buffers,缓存区域。
MiB Swap【交换空间信息】:total,总交换空间;used,已用交换空间;free,空闲交换空间;cached,缓存空间。
三、pstree 命令(不常用)
以树状图的方式展现进程之间的派生关系,显示效果比较直观。
- -a:显示每个程序的完整指令,包含路径,参数或是常驻服务的标示;
- -c:不使用精简标示法;
- -G:使用VT100终端机的列绘图字符;
- -h:列出树状图时,特别标明现在执行的程序;
- -H<程序识别码>:此参数的效果和指定”-h”参数类似,但特别标明指定的程序
- -l:采用长列格式显示树状图;
- -n:用程序识别码排序。预设是以程序名称来排序;
- -p:显示程序识别码
- -u:显示用户名称;
示例:
[chengaoxiang@terminal-rn-cxzenicu-0-xyjwmdib-65c5c6c668-mxk67:~]$>>pstree -aup
sshd,1 /usr/sbin/sshd -D
|-cron,28
|-node_exporter,13
| |-{node_exporter},18
| |-{node_exporter},19
| |-{node_exporter},20
| |-{node_exporter},21
| |-{node_exporter},22
| |-{node_exporter},119
| |-{node_exporter},120
| |-{node_exporter},121
| |-{node_exporter},122
……
三、kill杀死进程(PID)或父进程(PPID)
kill -9 3652309 3650384(加上sudo)(3652309和3650384是PID号,进程号)