千家信息网

linux下如何查询进程

发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,这篇文章主要讲解了"linux下如何查询进程",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"linux下如何查询进程"吧!查询进程的命令:1、ps命令,
千家信息网最后更新 2025年01月22日linux下如何查询进程

这篇文章主要讲解了"linux下如何查询进程",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"linux下如何查询进程"吧!

查询进程的命令:1、ps命令,能查看系统中所有运行进程的详细信息,语法"ps aux"或"ps -le";2、top命令,能实时监听进程运行状态,语法"top 选项";3、pstree命令,能查看进程树,以树形结构显示程序和进程之间的关系。

本教程操作环境:CentOS 6系统、Dell G3电脑。

进程是正在执行的一个程序或命令,每个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。

无论是 Linux 系统管理员还是普通用户,监视系统进程的运行情况并适时终止一些失控的进程,是每天的例行事务。

Linux 中虽然使用命令进行进程管理,但是进程管理的主要目的是一样的,即查看系统中运行的程序和进程、判断服务器的健康状态和强制中止不需要的进程。

那么linux下查询进程命令是什么?下面本篇文章给大家分享一些linux查询进程的命令。

Linux ps命令:查看正在运行的进程

ps 命令是最常用的监控进程的命令,通过此命令可以查看系统中所有运行进程的详细信息。

ps 命令的基本格式如下:

[root@localhost ~]# ps aux#查看系统中所有的进程,使用 BS 操作系统格式[root@localhost ~]# ps -le#查看系统中所有的进程,使用 Linux 标准命令格式

选项:

  • a:显示一个终端的所有进程,除会话引线外;

  • u:显示进程的归属用户及内存的使用情况;

  • x:显示没有控制终端的进程;

  • -l:长格式显示更加详细的信息;

  • -e:显示所有进程;

可以看到,ps 命令有些与众不同,它的部分选项不能加入"-",比如命令"ps aux",其中"aux"是选项,但是前面不能带"-"。

大家如果执行 "man ps" 命令,则会发现 ps 命令的帮助为了适应不同的类 UNIX 系统,可用格式非常多,不方便记忆。所以,我建议大家记忆几个固定选项即可。比如:

  • "ps aux" 可以查看系统中所有的进程;

  • "ps -le" 可以查看系统中所有的进程,而且还能看到进程的父进程的 PID 和进程优先级;

  • "ps -l" 只能看到当前 Shell 产生的进程;

有这三个命令就足够了,下面分别来查看。

【例 1】

[root@localhost ~]# ps aux
#查看系统中所有的进程USER PID %CPU %MEM  VSZ  RSS   TTY STAT START TIME COMMANDroot   1  0.0  0.2 2872 1416   ?   Ss   Jun04 0:02 /sbin/initroot   2  0.0  0.0    0    0   ?    S   Jun04 0:00 [kthreadd]root   3  0.0  0.0    0    0   ?    S   Jun04 0:00 [migration/0]root   4  0.0  0.0    0    0   ?    S   Jun04 0:00 [ksoftirqd/0]…省略部分输出…

表 1 中罗列出了以上输出信息中各列的具体含义。

表 1 ps命令输出信息含义
表头含义
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进程状态。常见的状态有以下几种:
  1. -D:不可被唤醒的睡眠状态,通常用于 I/O 情况。

  2. -R:该进程正在运行。

  3. -S:该进程处于睡眠状态,可被唤醒。

  4. -T:停止状态,可能是在后台暂停或进程处于除错状态。

  5. -W:内存交互状态(从 2.6 内核开始无效)。

  6. -X:死掉的进程(应该不会出现)。

  7. -Z:僵尸进程。进程已经中止,但是部分程序还在内存当中。

  8. -<:高优先级(以下状态在 BSD 格式中出现)。

  9. -N:低优先级。

  10. -L:被锁入内存。

  11. -s:包含子进程。

  12. -l:多线程(小写 L)。

  13. -+:位于后台。

START该进程的启动时间。
TIME该进程占用 CPU 的运算时间,注意不是系统时间。
COMMAND产生此进程的命令名。

【例 2】"ps aux"命令可以看到系统中所有的进程,"ps -le"命令也能看到系统中所有的进程。由于 "-l" 选项的作用,所以 "ps -le" 命令能够看到更加详细的信息,比如父进程的 PID、优先级等。但是这两个命令的基本作用是一致的,掌握其中一个就足够了。

[root@localhost ~]# ps -leF S UID PID PPID C  PRI Nl ADDR  SZ WCHAN TTY      TIME  CMD4 S   0   1    0 0  80   0 -    718 -     ?    00:00:02  init1 S   0   2    0 0  80   0 -      0 -     ?    00:00:00  kthreadd1 S   0   3    2 0 -40   - -      0 -     ?    00:00:00  migration/01 S   0   4    2 0  80   0 -      0 -     ?    00:00:00  ksoflirqd/01 S   0   5    2 0 -40   - -      0 -     ?    00:00:00  migration/0…省略部分输出…

表 2 罗列出以上输出信息中各列的含义。

表 2 ps -le 命令输出信息
表头含义
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 -l" 命令就足够了:

[root@localhost ~]# ps -l#查看当前登录产生的进程F S UID   PID  PPID C PRI NI ADDR SZ WCHAN TTY       TIME CMD4 S 0   18618 18614 0  80  0 - 1681  -     pts/1 00:00:00 bash4 R 0   18683 18618 4  80  0 - 1619  -     pts/1 00:00:00 ps

可以看到,这次从 pts/1 虚拟终端登录,只产生了两个进程:一个是登录之后生成的 Shell,也就是 bash;另一个是正在执行的 ps 命令。

Linux top命令:持续监听进程运行状态

ps 命令可以一次性给出当前系统中进程状态,但使用此方式得到的信息缺乏时效性,并且,如果管理员需要实时监控进程运行情况,就必须不停地执行 ps 命令,这显然是缺乏效率的。

为此,Linux 提供了 top 命令。top 命令可以动态地持续监听进程地运行状态,与此同时,该命令还提供了一个交互界面,用户可以根据需要,人性化地定制自己的输出,进而更清楚地了进程的运行状态。

top 命令的基本格式如下:

[root@localhost ~]#top [选项]

选项:

  • -d 秒数:指定 top 命令每隔几秒更新。默认是 3 秒;

  • -b:使用批处理模式输出。一般和"-n"选项合用,用于把 top 命令重定向到文件中;

  • -n 次数:指定 top 命令执行的次数。一般和"-"选项合用;

  • -p 进程PID:仅查看指定 ID 的进程;

  • -s:使 top 命令在安全模式中运行,避免在交互模式中出现错误;

  • -u 用户名:只监听某个用户的进程;

在 top 命令的显示窗口中,还可以使用如下按键,进行一下交互操作:

  • ? 或 h:显示交互模式的帮助;

  • P:按照 CPU 的使用率排序,默认就是此选项;

  • M:按照内存的使用率排序;

  • N:按照 PID 排序;

  • T:按照 CPU 的累积运算时间排序,也就是按照 TIME+ 项排序;

  • k:按照 PID 给予某个进程一个信号。一般用于中止某个进程,信号 9 是强制中止的信号;

  • r:按照 PID 给某个进程重设优先级(Nice)值;

  • q:退出 top 命令;

我们看看 top 命令的执行结果,如下:

[root@localhost ~]# toptop - 12:26:46 up 1 day, 13:32, 2 users, load average: 0.00, 0.00, 0.00Tasks: 95 total, 1 running, 94 sleeping, 0 stopped, 0 zombieCpu(s): 0.1%us, 0.1%sy, 0.0%ni, 99.7%id, 0.1%wa, 0.0%hi, 0.1%si, 0.0%stMem: 625344k total, 571504k used, 53840k free, 65800k buffersSwap: 524280k total, 0k used, 524280k free, 409280k cachedPID   USER PR NI VIRT  RES  SHR S %CPU %MEM   TIME+ COMMAND19002 root 20  0 2656 1068  856 R  0.3  0.2 0:01.87 top1     root 20  0 2872 1416 1200 S  0.0  0.2 0:02.55 init2     root 20  0    0    0    0 S  0.0  0.0 0:00.03 kthreadd3     root RT  0    0    0    0 S  0.0  0.0 0:00.00 migration/04     root 20  0    0    0    0 S  0.0  0.0 0:00.15 ksoftirqd/05     root RT  0    0    0    0 S  0.0  0.0 0:00.00 migration/06     root RT  0    0    0    0 S  0.0  0.0 0:10.01 watchdog/07     root 20  0    0    0    0 S  0.0  0.0 0:05.01 events/08     root 20  0    0    0    0 S  0.0  0.0 0:00.00 cgroup9     root 20  0    0    0    0 S  0.0  0.0 0:00.00 khelper10    root 20  0    0    0    0 S  0.0  0.0 0:00.00 netns11    root 20  0    0    0    0 S  0.0  0.0 0:00.00 async/mgr12    root 20  0    0    0    0 S  0.0  0.0 0:00.00 pm13    root 20  0    0    0    0 S  0.0  0.0 0:01.70 sync_supers14    root 20  0    0    0    0 S  0.0  0.0 0:00.63 bdi-default15    root 20  0    0    0    0 S  0.0  0.0 0:00.00 kintegrityd/016    root 20  0    0    0    0 S  0.0  0.0 0:02.52 kblockd/017    root 20  0    0    0    0 S  0.0  0.0 0:00.00 kacpid18    root 20  0    0    0    0 S  0.0  0.0 0:00.00 kacpi_notify

我们解释一下命令的输出。top 命令的输出内容是动态的,默认每隔 3 秒刷新一次。命令的输出主要分为两部分:

  • 第一部分是前五行,显示的是整个系统的资源使用状况,我们就是通过这些输出来判断服务器的资源使用状态的;

  • 第二部分从第六行开始,显示的是系统中进程的信息;

Linux pstree命令:查看进程树

pstree 命令是以树形结构显示程序和进程之间的关系,此命令的基本格式如下:

[root@localhost ~]# pstree [选项] [PID或用户名]

表 1 罗列出了 pstree 命令常用选项以及各自的含义。

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

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

init 进程是系统启动的第一个进程,进程的 PID 是 1,也是系统中所有进程的父进程。

【例 1】

[root@1ocalhost ~]# pstreeinit──┬──abrc-dump-oopa├──abrtd├──acpid...省略部分输出...├──rayslogd───3*[{rsyslogrd}]#有3个rsyslogd进程存在├──sshd───sshd───bash───pstree#Pstree命令进程是在远程连接中被执行的├──udevd───2*[udevd]└──xinecd

【例 2】如果想知道某个用户都启动了哪些进程,使用 pstree 命令可以很容易实现,以 mysql 用户为例:

[root@1ocalhost ~]# pstree mysqlmysqid---6*[{mysqid}]

此输出结果显示了 mysql 用户对应的进程为 mysqid,并且 mysqid 进程拥有 5 个子进程(外加 1 个父进程,共计 6 个进程)。

Linux lsof命令:列出进程调用或打开的文件信息

我们知道,通过 ps 命令可以查询到系统中所有的进程,那么,是否可以进一步知道这个进程到底在调用哪些文件吗?当然可以,使用 lsof 命令即可。

lsof 命令,"list opened files"的缩写,直译过来,就是列举系统中已经被打开的文件。通过 lsof 命令,我们就可以根据文件找到对应的进程信息,也可以根据进程信息找到进程打开的文件。

lsof 命令的基本格式如下:

[root@localhost ~]# lsof [选项]

此命令常用的选项及功能,如表 1 所示。

表 1 lsof 命令常用选项及功能
选项功能
-c 字符串只列出以字符串开头的进程打开的文件。
+d 目录名列出某个目录中所有被进程调用的文件。
-u 用户名只列出某个用户的进程打开的文件。
-p pid列出某个 PID 进程打开的文件。

【例 1】

[root@localhost ~]# lsof | more#查询系统中所有进程调用的文件COMMAND PID  USER  FD    TYPE  DEVICE  SIZE/OFF  NODE  NAMEinit               1      root    cwd  DIR    8,3       4096        2           /init               1      root    rtd    DIR    8,3       4096        2           /init               1      root    txt     REG   8,3       145180    130874 /sbin/initinit               1      root    mem REG   8,3       142472    665291 /lib/ld-2.12.soinit               1      root    mem REG   8,3       58704      655087 /lib/libnss_files-2.12.so…省略部分输出…

这个命令的输出非常多。它会按照 PID,从 1 号进程开始列出系统中所有的进程正在调用的文件名。

【例 2】

[root@localhost ~]# lsof /sbin/init#查询某个文件被哪个进程调用COMMAND PID USER  FD  TYPE  DEVICE  SIZE/OFF  NODE    NAMEinit               1     root    txt  REG   8,3      145180     130874   /sbin/init

lsof 命令也可以反过来查询某个文件被哪个进程调用。这个例子就查询到 /sbin/init 文件是被 init 进程调用的。

感谢各位的阅读,以上就是"linux下如何查询进程"的内容了,经过本文的学习后,相信大家对linux下如何查询进程这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

进程 命令 系统 状态 用户 输出 运行 信息 文件 查询 终端 内存 格式 优先级 含义 程序 部分 排序 时间 正在 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 河南安防卫星授时服务器虚拟主机 如何连接到别人电脑的数据库 关于网络安全手抄报图片五年级 关于网络安全的简短文字 天津网络技术市场价 郴州湘南网络技术学校校长 全国网络安全证书西政可以加吗 网络安全建议口号 向社会发布哪些网络安全信息 GDC服务器没音频输出 华为服务器电源灯橙色闪烁 应急资源数据库建设方案 软件开发学什么课程 使命召唤17连不上服务器 易店宝网络技术有限公司 宝德服务器是oem的吗 头歌实训数据库作业答案 手抄报人人都是网络安全宣传员 服务器主板报错1d 服务器设置自动重启程序 网络安全手抄报鼠标怎么画 网易版m c怎么进服务器 教你画网络安全手抄报视频 游戏服务端能放服务器 美国网络安全案例 衡阳教育系统软件开发 自动化软件开发组职责 大学学校用的软件开发 大专毕业去干软件开发难吗 百量服务器怎么选择
0