24.Linux进程管理工具——ps,pstree,pgrep,kill,top,htop,vmstat

发布于:2023-01-24 ⋅ 阅读:(27) ⋅ 点赞:(0) ⋅ 评论:(0)

1.        ps

显示系统进程瞬间的运行动态的命令ps

(1)选项:-A:所有的进程均显示出来,与 -e 具有同样的效果;

                    -a:显示现行终端机下的所有进程,包括其他用户的进程;

                    -u:以用户为主的进程状态;

                     -x:通常与 -a 一起使用,可列出完整信息;

输出格式规划:-l :较长,较详细的将该PID的信息列出;

(2)ps -ef

[root@WWcentos ~]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 14:30 ?        00:00:09 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2      0  0 14:30 ?        00:00:00 [kthreadd]
root          4      2  0 14:30 ?        00:00:00 [kworker/0:0H]
root          6      2  0 14:30 ?        00:00:00 [ksoftirqd/0]
root          7      2  0 14:30 ?        00:00:00 [migration/0]

#UID:代表执行者身份;

#PID:进程的ID号;

#PPID:父进程的ID号;

#C:CPU使用的资源百分比;

#STIME:进程启动到现在的时间;

#TTY:登陆者的终端位置;

#TIME:使用掉的CPU的时间;

#CMD:所下达的指令名称;

(3)ps -aux

[root@WWcentos ~]# ps -aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.7 128528  7176 ?        Ss   14:30   0:09 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    14:30   0:00 [kthreadd]
root          4  0.0  0.0      0     0 ?        S<   14:30   0:00 [kworker/0:0H]
root          6  0.0  0.0      0     0 ?        S    14:30   0:00 [ksoftirqd/0]
root          7  0.0  0.0      0     0 ?        S    14:30   0:00 [migration/0]
root          8  0.0  0.0      0     0 ?        S    14:30   0:00 [rcu_bh]
root          9  0.0  0.0      0     0 ?        R    14:30   0:00 [rcu_sched]

#USER:该进程属于哪个使用者账号;

#PID:该进程的进程ID号;

#%CPU:该进程使用掉的CPU资源百分比;

#%MEM:该进程所占用的物理内存百分比;

#VSZ:该进程使用掉的虚拟内存量(字节 kbytes)

#RSS:该进程占用的固定内存量(字节 kbytes)

#TTY:该进程是在那个终端机上面运作,若与终端机无关,则显示 ?        tty1-tty6是本机上面的               登入者程序        若为pts/0等等的,则表示为由网络连接进主机的程序

#STAT:该程序目前的状态:

                R:该进程目前正在运作,或者是可被运作的;

                S:该进程目前处在睡眠状态当中,但可被某些讯号(signal)唤醒;

                T:该进程目前正在侦测或者是停止了;

                Z:该程序已经终止,但是其父程序却无法正常的终止他,造成zombie(僵尸)程序的                          状态

#START:该进程被触发启动的时间;

#TIME:该进程实际使用CPU运作的时间;

#COMMAND:该程序的实际指令;

2.        pstree

用于查看进程树之间的关系,即哪个进程是哪个父进程,哪个子进程。

(1)命令选项:-p        同时列出每个进程的PID

(2)环境准备:安装pstree命令:

 yum install psmisc-22.20-11.e17.x86_64
 或者:
 yum install epel-release
 yum install htop

3.        pgrep

通过pgrep来获得正在被调度的进程的相关信息,pgrep通过匹配其程序名,找到匹配的进程。

(1)命令选项:-l        同时显示进程名和PID

以apache为例(前提这个软件得先启用)
[root@WWcentos ~]# pgrep httpd
2371
2372
2373
2374
[root@WWcentos ~]# pgrep -l httpd
2371 httpd
2372 httpd
2373 httpd
2374 httpd

#pgrep命令用来查找进程的信息,通常会和pkill命令来连用,在指定条件下kill问题进程。

4.        killall        kill        pkill

  4.1        pkill

(1)pkill是ps命令和kill命令的结合,按照进程名来杀死指定进程。通常会和pgrep命令连用。

[root@localhost ~]# pgrep -l httpd
1438 httpd
1439 httpd
1440 httpd
1441 httpd
1442 httpd
1443 httpd
[root@localhost ~]# pkill httpd
[root@localhost ~]# pgrep -l httpd
[root@localhost ~]#

   4.2        killall

(1)killall命令用于杀死指定名字的进程。

(2)命令:killall 进程名

以apache为例:
[root@localhost ~]# ps -ef |grep httpd
root       2264      1  0 20:28 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     2265   2264  0 20:28 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     2266   2264  0 20:28 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     2267   2264  0 20:28 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     2268   2264  0 20:28 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     2269   2264  0 20:28 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
root       2356   1321  0 20:40 pts/0    00:00:00 grep --color=auto httpd
[root@localhost ~]# killall httpd
[root@localhost ~]# ps -ef |grep httpd
root       2364   1321  0 20:41 pts/0    00:00:00 grep --color=auto httpd

  4.3        kill

(1)kill命令用来终止指定的进程(terminate a process)的运行。通常,终止一个前台进程用ctrl+c ,对于后台进程就必须用kill命令来终止进程PID。kill命令是通过向进程发送指定的信号来结束进程的,在默认情况下采用编号为15的TERM信号。TERM信号将终止所有不能捕获该信号的进程;对于那些可以捕捉该信号的进程就要用编号为9的kill信号强行杀掉该进程。

(2)kill命令的信号号码:

kill命令可以带信号号码选项,也可不带。如果没有信号号码,kill命令就会发出终止信号(15),这个信号可以被进程捕获,使得进程在退出之前可以清理并释放资源。

[root@localhost ~]# kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

注意:只有第九种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权限忽略。

常用信号:HUP        1        终端断线

                   INT        2        中断(只要能用ctrl+c退出的,都能使用kill -2 进程号 中断)

                 SIG        9        强制终止

                TERM        15        终止

(3)kill -0         不发送任何信号,常用来检测进程是否存在。如果存在,可以通过 echo $? 拿到                              值为0,否则值为1

以apache为例
[root@localhost ~]# pgrep -l httpd
1506 httpd
1507 httpd
1508 httpd
1509 httpd
1510 httpd
1511 httpd
[root@localhost ~]# kill -0 1506
[root@localhost ~]# echo $?
0
[root@localhost ~]# ps -ef |grep httpd
root       1506      1  0 10:43 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     1507   1506  0 10:43 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     1508   1506  0 10:43 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     1509   1506  0 10:43 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     1510   1506  0 10:43 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     1511   1506  0 10:43 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
root       1516   1348  0 10:44 pts/0    00:00:00 grep --color=auto httpd
[root@localhost ~]# pkill httpd
[root@localhost ~]# kill -0 1506
-bash: kill: (1506) - No such process
[root@localhost ~]# echo $?
1

5.        top

(1)动态地持续监控进程的状态。

[root@WWcentos ~]# top
top - 11:16:15 up  1:08,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 136 total,   1 running, 135 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  5.9 sy,  0.0 ni, 94.1 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   995676 total,   387172 free,   248724 used,   359780 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   596700 avail Mem

#第一行:

11:16:15 当前的系统时间;

up 1:08 系统已经运行了一小时8分钟,在此期间没有重启过;

1 user 当前有一个用户在登录系统;

load average 后面的三个数分别是1分钟、5分钟、15分钟的负载情况。数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。

#第二行:Tasks 任务进程:

系统现在共有137个进程,其中处于运行的有1个,135个在休眠(sleeping),stopped 停止状态的有0个,zombie状态(僵尸)的有0个。

#第三行:CPU状态: 

0.0 us    用户空间占用CPU的百分比

 5.9 sy   内核空间占用CPU的百分比

0.0 ni     改变过优先级的进程占用CPU的百分比

94.1 id   空闲CPU百分比

0.0 wa    IO等待占用CPU的百分比

0.0 hi     硬中断(Hardware IRQ)占用CPU的百分比

0.0 si     软中断(Software Interrupts)占用CPU的百分比

#第四行:运行内存状态

995676 total   物理内存总量(1GB)

387172 free     空闲内存总理(387M)

248724 used  使用的交换区总量(248M)

359780 buff/cache 缓存内存量(359M)

#第五行:swap 交换分区

2097148 total  交换区总量(2G)

2097148 free   空闲的交换区总量(2G)

0 used     使用的交换区总量(0M)

596700 avail Mem  缓冲的交换区总量(596M)

#第七行 各进程(任务)的状态监控

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
     1 root      20   0  128256   6964   4192 S  0.0  0.7   0:01.99 systemd
     2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd
     4 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H
     5 root      20   0       0      0      0 S  0.0  0.0   0:00.17 kworker/u256:0
     6 root      20   0       0      0      0 S  0.0  0.0   0:00.17 ksoftirqd/0
     7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0
     8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh

#PID         进行的标识号;

#USER     运行此进程的用户;

#PR          进程优先级;

#NI           nice值。Linux支持的nice级别从19(最低 优先级)到 -20(最高 优先级),默认为0

#VIRT       进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

#RES        进程使用的,未被换出的物理内存大小,单位kb。RES=CODE+DATA

#SHR       共享内存大小,单位kb。  

#S             指进程的运行状态。S表示休眠,等待唤醒。

#%CPU    上次更新到现在的CPU时间占用百分比

#%MEM    进程使用的物理内存百分比

#TIME+     进程使用的CPU时间总计,单位1/100秒

#COMMAND     进程名称(命令名/命令行)。如果COMMAND 为[defunct],则代表僵尸进程,                            可用kill -9杀掉 .


(2)        top 命令实现窗口排序(快捷键):

A        start time

M        %MEM                内存大小排序

N        PID                      PID大小排序

P        %CPU                  CPU使用率排序

T        TIME+                    运行时间多少的排序

6.        htop

(1)环境:安装epel源:

yum install httpd://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch

安装 htop:yum install htop

(2)实时监控画面:

 #左上区域:显示了CPU,物理内存和交换分区的信息;

#右上区域:显示了任务数量,平均负载和连接运行时间等信息。

快捷键:

#F1        显示帮助信息;

#F2        配置界面中的显示信息;

#F3        按照进程名进行搜索进程,或者直接输入“/”。 

 #F4        过滤器,相当于模糊查找,不区分大小写,下方输入要搜索的内容。

#F5        以树形图方式显示。

#F6        排序方式,按下F6之后,按照自己的选择方式来排序。

#F7,F8        调整进程nice值,F7表示减小nice值(减小优先级),选择某一进程,按F7或者F8增                      大或者减小nice值。

#F9        杀死进程,选择某一进程按F9即可杀死此进程。

#F10        退出htop

7.        vmstat:

(1)展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。相比top,我们可以看到整个机器的CPU,内存,IO的使用情况。

(2)官方解释:

VMSTAT(8)                                                              Linux 系统管理员手册                                                             VMSTAT(8)

NAME
       vmstat - 报告虚拟内存的统计信息

总览
       vmstat [-n] [延时[次数]]
       vmstat [-V]

描述
       vmstat 对系统的进程情况、内存使用情况、交换页和 I/O 块使用情况、 中断以及 CPU 使用情况进行统计并报告相应的信息。

       第一个显示内容指出了计算机自上次重启至今的平均使用情况。 后面的每一行信息是按 延时 定期地显示系统的各部分信息。 进程信息和内存信息都是即时产生的。

   选项
       -n 开关令第一次的信息只显示一次而不是周期地产生。

       延时 是以秒为单位的刷新时间间隔。 如果没有给出此延时时间,则仅显示系统启动至今的平均值。

       次数 指的是更新的次数。 如果没有指定此数而又定义了延时时间,则次数的默认值是无穷次。

       -V 开关可以用来输出该命令的版本信息。

输出信息简介
   Procs
       r: 等待运行的进程数
       b: 处在非中断睡眠状态的进程数
       w: 被交换出去的可运行的进程数。
       此数由 linux 计算得出,但 linux 并不耗尽交换空间

   Memory
       swpd: 虚拟内存使用情况,单位:KB
       free: 空闲的内存,单位KB
       buff: 被用来做为缓存的内存数,单位:KB

   Swap
       si: 从磁盘交换到内存的交换页数量,单位:KB/秒
       so: 从内存交换到磁盘的交换页数量,单位:KB/秒

   IO
       bi: 发送到块设备的块数,单位:块/秒
       bo: 从块设备接收到的块数,单位:块/秒

   System
       in: 每秒的中断数,包括时钟中断
       cs: 每秒的环境(上下文)切换次数

   CPU
       按 CPU 的总使用百分比来显示
       us: CPU 使用时间
       sy: CPU 系统使用时间
       id: 闲置时间

(3)一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数。

例如:vmstat 2 1        #2代表每两秒采集一次     1代表采集次数


网站公告

欢迎关注微信公众号

今日签到

点亮在社区的每一天
签到