Linux中init和systemd进程、ps命令和top命令、进程和线程介绍

一.进程、线程的关系

1.进程:

2.线程:

二.进程分类

1.按运行主体分

2.按运行方式

3.按隶属关系分

4.按运行环境分

三.init守护进程

1.含义:

2.运行级别

四.systemd进程

1.system进程类似于init,可以成为是init的优一级产物,和init一样,systemd进程pid=1

2.部分systemd命令

五.ps命令查看进程

1.-a显示所有用户的进程

2.-u显示用户名和启动时间

3.-x显示没有控制终端的进程

4.-e显示所有进程,包括-x的内容

5.-l以长格式显示

6.-f输出信息更完整

7.-w以宽行显示,可以使用多个w进行加宽显示

8.ps命令可以自定义显示字段 

六.top命令查看进程

1.-d接数字,查看进程界面时更新间隔,默认5秒

2.-b,多次执行top命令,搭配定向符将处理数据输出到文件

3.-n通常和-b搭配,指定显示几次top命令结果

4.-i不显示僵尸进程信息

5.-c不止显示命令名称还显示进程的整个命令路径

6.-s,让top命令在安全模式下运行,此时不允许top的交互

7.-p指定某个pid来查看

8.top的输出信息解析

9.top命令执行过程可以使用交互按键命令如下

七.信号控制进程

1.部分编号和信号

2.给所有指定进程发信号

八.作业控制进程

1.前台进程

2.后台进程

3.命令


一.进程、线程的关系

1.进程:

已经启动了的,可执行的运行实例

(1)进程和程序(二进制文件,存储在磁盘中,是封闭的)没有一一对应关系,进程也可以说是相同的程序在不同的数据集合上运行

(2)进程还具有并发性和交往性,进程并发线程,各个线程执行不同的任务

(3)一个进程可以拥有多个线程,一个线程同时只能被一个进程拥有

2.线程:

线程是操作系统能够进行运算调度的最小单位

(1)线程被包含在进程当中,是进程中的实际运作单位

(2)一条线程指进程里一个单一顺序的控制流(计算机执行一个程序中语句的顺序)

(3)每一个线程有成都旭的入口、执行序列、程序出口,线程不能单独执行,要被组成进程才能被执行

二.进程分类

1.按运行主体分

(1)系统进程

对内存资源分配和进程切换负责,运行起来后不受用户包括root用户的干预

(2)用户进程

是由执行用户程序、影虎程序、内核之外的系统程序产生的,用户可以进行运行/关闭

2.按运行方式

(1)交互式进程分

由shell终端启动的进程,运行与后台/前台,需要用户进行交互操作的进程

(2)批处理进程

可以成为一个进程集合,主要负责按照一定的顺序启动其他进程,在后台运行不需要用户交互

(3)守护进程

系统启动守护进程也启动,系统关闭时终止,与控制终端独立区分开,以一定周期执行处理某种任务,在后台运行

3.按隶属关系分

(1)父进程

可以创建、控制其他进程的进程

(2)子进程

被其他进程创建、控制的进程

注意:

子进程从父进程继承的内容:

用户UID和组GID,环境变量,共享内存,文件打开时的描述符,堆和栈,关闭标志,进程组号,当前工作目录,根目录,资源限制,控制终端等

子进程不继承的:

进程号ID,自己独有的文件描述符和目录,父进程的进程正文text和锁定内存memory locks(父进程的锁),异步输入和异步输出等

4.按运行环境分

(1)前台进程

在当前的终端输入命令之后,这个命令对应的进程会在结束之前一直占用终端来显示或执行任务,这期间是不能输入其他命令的

(2)后台进程

在当前终端输入命令之后,这个命令对应的进程不会占据当前终端,这期间用户可以时输入执行其他命令

三.init守护进程

init进程按顺序启动进程,前一个启动后一个才启动,启动时间长

1.含义:

是一个由内核启动的用户级进程,init始终是第一个进程,进程编号为1,如果内核无法找到init并且运行/bin/sh文件也失败那么系统将无法启动

2.运行级别

运行级别可以在/etc/inittab内指定

[root@redhat9 ~]# vim /etc/inittab

(1)0级别表示停机,不建议设置为默认级别

(2)1级别表示单用户模式,只允许root用户,可以用在系统升级维护的情况下

(3)2级别表示多用户模式但排除NFS文件共享

(4)3级是标准的运行级别,不排除NFS在外的多用户模式

(5)4级别是安全模式

(6)5级别是图形界面形式

(7)6级别是重启,不建议设置为默认级别

四.systemd进程

1.system进程类似于init,可以成为是init的优一级产物,和init一样,systemd进程pid=1

2.部分systemd命令

命令

含义
systemctl reboot 重启系统
systemctl poweroff/systemctl halt 关闭系统
systemctl suspend 挂起系统,挂起时,信息存储到内存中断电丢失数据
systemctl hibernate 系统休眠,信息写入硬盘,断电不丢失数据
systemctl hybrid-sleep 休眠并挂起系统
systemctl rescue 进入救援模式
systemd-analyze 查看启动耗时
loginctl 查看当前登录的用户
hostnamectl 查看当前主机信息
localectl 查看本地设置
timedatectl 设置时区

五.ps命令查看进程

1.-a显示所有用户的进程

[root@redhat9 ~]# ps -a
    PID TTY          TIME CMD
   5479 tty2     00:00:00 gnome-session-b
  40815 pts/3    00:00:00 ps

2.-u显示用户名和启动时间

[root@redhat9 ~]# ps -u
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root        5470  0.0  0.0 374144  5684 tty2     Ssl+ 03:35   0:00 /usr/libexec/gdm-wayl
root        5479  0.0  0.1 521436 19412 tty2     Sl+  03:35   0:00 /usr/libexec/gnome-se
root       37922  0.0  0.0 224240  5976 pts/0    Ss+  19:37   0:00 bash
root       38168  0.0  0.0 224584  6216 pts/2    Ss+  20:05   0:00 -bash
root       40664  0.0  0.0 224224  5692 pts/3    Ss   20:37   0:00 -bash
root       40816  0.0  0.0 225500  3548 pts/3    R+   21:24   0:00 ps -u

3.-x显示没有控制终端的进程

[root@redhat9 ~]# ps -x | head
    PID TTY      STAT   TIME COMMAND
      1 ?        Ss     0:12 /usr/lib/systemd/systemd rhgb --switched-root --system --deserialize 31
      2 ?        S      0:00 [kthreadd]
      3 ?        I<     0:00 [rcu_gp]
      4 ?        I<     0:00 [rcu_par_gp]
      5 ?        I<     0:00 [netns]
      7 ?        I<     0:00 [kworker/0:0H-events_highpri]
      9 ?        I<     0:00 [kworker/0:1H-events_highpri]
     10 ?        I<     0:00 [mm_percpu_wq]
     12 ?        I      0:00 [rcu_tasks_kthre]

4.-e显示所有进程,包括-x的内容

[root@redhat9 ~]# ps -e |head
    PID TTY          TIME CMD
      1 ?        00:00:12 systemd
      2 ?        00:00:00 kthreadd
      3 ?        00:00:00 rcu_gp
      4 ?        00:00:00 rcu_par_gp
      5 ?        00:00:00 netns
      7 ?        00:00:00 kworker/0:0H-events_highpri
      9 ?        00:00:00 kworker/0:1H-events_highpri
     10 ?        00:00:00 mm_percpu_wq
     12 ?        00:00:00 rcu_tasks_kthre

5.-l以长格式显示

[root@redhat9 ~]# ps -l
F S   UID     PID    PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
0 S     0   40664   40662  0  80   0 - 56056 do_wai pts/3    00:00:00 bash
4 R     0   40826   40664  0  80   0 - 56375 -      pts/3    00:00:00 ps
F
代表这个程序标志( process flags ),说明这个程序的权限。常见号码有: 4 表示此程序的权限为
root 1 表示此子程序仅进行复制( fork )而没有实际执行( exec
S
这个程序的状态,
R 程序正在运作中
S程序目前正在睡眠状态, 但可以被唤醒
D不可被唤醒的睡眠状态(通常是在等待 I/O)
T停止状态 可能是后台暂停
Z 僵尸状态,程序已经终止但却无法被移除
X表示死掉的进程
UID/PID/PPID 代表此程序被该UID所拥有/程序的PID号码/此程序的父进程PID号码
C 代表CPU使用率,单位为百分比
PRI/NI
Priority/Nice 的缩写,代表此程序被 CPU 所执行的优先顺序,数值越小代表该程序越快被 CPU 执行
ADDR/SZ/WCHAN
ADDR 指出该程序在内存的哪个部分,如果是running的程序,一般会显示 -; SZ 代表此程序用掉多少内存, WCHAN 表示目前程序是否运作中,若为 - 表示正在运行
TTY 登入者的终端机位置,若为远程终端登入则使用动态终端界面(pts/n
TIME 使用掉的CPU时间,即此程序实际花费CPU运作的时间。
CMD 触发此进程的指令

6.-f输出信息更完整

[root@redhat9 ~]# ps -ef | head
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 03:34 ?        00:00:12 /usr/lib/systemd/systemd rhgb --switched-root --system --deserialize 31
root           2       0  0 03:34 ?        00:00:00 [kthreadd]
root           3       2  0 03:34 ?        00:00:00 [rcu_gp]
root           4       2  0 03:34 ?        00:00:00 [rcu_par_gp]
root           5       2  0 03:34 ?        00:00:00 [netns]
root           7       2  0 03:34 ?        00:00:00 [kworker/0:0H-events_highpri]
root           9       2  0 03:34 ?        00:00:00 [kworker/0:1H-events_highpri]
root          10       2  0 03:34 ?        00:00:00 [mm_percpu_wq]
root          12       2  0 03:34 ?        00:00:00 [rcu_tasks_kthre]

7.-w以宽行显示,可以使用多个w进行加宽显示

[root@redhat9 ~]# ps -ef | head
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 03:34 ?        00:00:12 /usr/lib/systemd/systemd rhgb --swit                                                                                                 ched-root --system --deserialize 31
root           2       0  0 03:34 ?        00:00:00 [kthreadd]
root           3       2  0 03:34 ?        00:00:00 [rcu_gp]
root           4       2  0 03:34 ?        00:00:00 [rcu_par_gp]
root           5       2  0 03:34 ?        00:00:00 [netns]
root           7       2  0 03:34 ?        00:00:00 [kworker/0:0H-events_highpri]
root           9       2  0 03:34 ?        00:00:00 [kworker/0:1H-events_highpri]
root          10       2  0 03:34 ?        00:00:00 [mm_percpu_wq]
root          12       2  0 03:34 ?        00:00:00 [rcu_tasks_kthre]
[root@redhat9 ~]# ps -efw | head
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 03:34 ?        00:00:12 /usr/lib/systemd/systemd rhgb --swit                                                                                                 ched-root --system --deserialize 31
root           2       0  0 03:34 ?        00:00:00 [kthreadd]
root           3       2  0 03:34 ?        00:00:00 [rcu_gp]
root           4       2  0 03:34 ?        00:00:00 [rcu_par_gp]
root           5       2  0 03:34 ?        00:00:00 [netns]
root           7       2  0 03:34 ?        00:00:00 [kworker/0:0H-events_highpri]
root           9       2  0 03:34 ?        00:00:00 [kworker/0:1H-events_highpri]
root          10       2  0 03:34 ?        00:00:00 [mm_percpu_wq]
root          12       2  0 03:34 ?        00:00:00 [rcu_tasks_kthre]
[root@redhat9 ~]# ps -efwwww | head
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 03:34 ?        00:00:12 /usr/lib/systemd/systemd rhgb --switched-root --system --deserialize 31
root           2       0  0 03:34 ?        00:00:00 [kthreadd]
root           3       2  0 03:34 ?        00:00:00 [rcu_gp]
root           4       2  0 03:34 ?        00:00:00 [rcu_par_gp]
root           5       2  0 03:34 ?        00:00:00 [netns]
root           7       2  0 03:34 ?        00:00:00 [kworker/0:0H-events_highpri]
root           9       2  0 03:34 ?        00:00:00 [kworker/0:1H-events_highpri]
root          10       2  0 03:34 ?        00:00:00 [mm_percpu_wq]
root          12       2  0 03:34 ?        00:00:00 [rcu_tasks_kthre]

8.ps命令可以自定义显示字段 

[root@redhat9 ~]# ps -axo user,pid,ppid | head
USER         PID    PPID
root           1       0
root           2       0
root           3       2
root           4       2
root           5       2
root           7       2
root           9       2
root          10       2
root          12       2

六.top命令查看进程

1.-d接数字,查看进程界面时更新间隔,默认5秒

[root@redhat9 ~]# top -d 2
top - 21:41:23 up 18:06,  3 users,  load average: 0.11, 0.37, 0.20
Tasks: 352 total,   1 running, 351 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.1 sy,  0.0 ni, 99.6 id,  0.0 wa,  0.1 hi,  0.1 si,  0.0 st
MiB Mem :  10215.9 total,   7786.7 free,   1662.8 used,   1083.9 buff/cache
MiB Swap:   4608.0 total,   4608.0 free,      0.0 used.   8553.1 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
    949 root      20   0  530196   9380   7560 S   0.5   0.1   1:25.82 vmtoolsd
      1 root      20   0  170688  14532   9408 S   0.0   0.1   0:12.16 systemd
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.23 kthreadd
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp
      5 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 netns
      7 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H-ev+
      9 root       0 -20       0      0      0 I   0.0   0.0   0:00.15 kworker/0:1H-kb+
     10 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 mm_percpu_wq
     12 root      20   0       0      0      0 I   0.0   0.0   0:00.00 rcu_tasks_kthre
     13 root      20   0       0      0      0 I   0.0   0.0   0:00.00 rcu_tasks_rude_
     14 root      20   0       0      0      0 I   0.0   0.0   0:00.00 rcu_tasks_trace
     15 root      20   0       0      0      0 S   0.0   0.0   0:00.45 ksoftirqd/0
     16 root      20   0       0      0      0 I   0.0   0.0   0:05.23 rcu_preempt
     17 root      rt   0       0      0      0 S   0.0   0.0   0:00.30 migration/0

2.-b,多次执行top命令,搭配定向符将处理数据输出到文件

[root@redhat9 ~]# top -d 2 -b > aaa.txt
[root@redhat9 ~]# head aaa.txt
top - 21:42:59 up 18:08,  3 users,  load average: 0.02, 0.26, 0.18
Tasks: 350 total,   1 running, 349 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :  10215.9 total,   7786.5 free,   1663.1 used,   1083.9 buff/cache
MiB Swap:   4608.0 total,   4608.0 free,      0.0 used.   8552.8 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
      1 root      20   0  170688  14532   9408 S   0.0   0.1   0:12.16 systemd
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.23 kthreadd
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp

3.-n通常和-b搭配,指定显示几次top命令结果

[root@redhat9 ~]# top -d 2 -b -n 3 > bbb.txt
[root@redhat9 ~]# cat bbb.txt
top - 21:44:43 up 18:09,  3 users,  load average: 0.00, 0.18, 0.16
Tasks: 351 total,   1 running, 350 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :  10215.9 total,   7786.0 free,   1663.4 used,   1084.0 buff/cache
MiB Swap:   4608.0 total,   4608.0 free,      0.0 used.   8552.5 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
      1 root      20   0  170688  14532   9408 S   0.0   0.1   0:12.16 systemd
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.23 kthreadd
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp
      5 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 netns
      7 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H-ev+
      9 root       0 -20       0      0      0 I   0.0   0.0   0:00.15 kworker/0:1H-ev+
     10 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 mm_percpu_wq
     12 root      20   0       0      0      0 I   0.0   0.0   0:00.00 rcu_tasks_kthre
     13 root      20   0       0      0      0 I   0.0   0.0   0:00.00 rcu_tasks_rude_
     14 root      20   0       0      0      0 I   0.0   0.0   0:00.00 rcu_tasks_trace
     15 root      20   0       0      0      0 S   0.0   0.0   0:00.45 ksoftirqd/0
     16 root      20   0       0      0      0 I   0.0   0.0   0:05.24 rcu_preempt
     17 root      rt   0       0      0      0 S   0.0   0.0   0:00.30 migration/0
     19 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/0
     20 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/1
     21 root      rt   0       0      0      0 S   0.0   0.0   0:02.20 migration/1
     22 root      20   0       0      0      0 S   0.0   0.0   0:00.57 ksoftirqd/1
     24 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/1:0H-ev+
     25 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp

4.-i不显示僵尸进程信息

5.-c不止显示命令名称还显示进程的整个命令路径

[root@redhat9 ~]# top -c
top - 21:47:17 up 18:12,  3 users,  load average: 0.00, 0.10, 0.13
Tasks: 351 total,   1 running, 350 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.1 hi,  0.1 si,  0.0 st
MiB Mem :  10215.9 total,   7785.3 free,   1664.0 used,   1084.1 buff/cache
MiB Swap:   4608.0 total,   4608.0 free,      0.0 used.   8551.9 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
    949 root      20   0  530196   9380   7560 S   0.7   0.1   1:26.04 /usr/bin/vmtoolsd
  40853 root      20   0       0      0      0 D   0.3   0.0   0:00.96 [kworker/2:1+usb_hub_wq]
  40890 root      20   0  226188   4296   3448 R   0.3   0.0   0:00.04 top -c
      1 root      20   0  170688  14532   9408 S   0.0   0.1   0:12.17 /usr/lib/systemd/systemd rhgb --switched-root --system --deserialize 31
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.23 [kthreadd]
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 [rcu_gp]
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 [rcu_par_gp]
      5 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 [netns]

6.-s,让top命令在安全模式下运行,此时不允许top的交互

[root@redhat9 ~]# top -s
top - 21:48:19 up 18:13,  3 users,  load average: 0.00, 0.08, 0.12
Tasks: 351 total,   1 running, 350 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.1 us,  0.1 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.1 hi,  0.0 si,  0.0 st
MiB Mem :  10215.9 total,   7785.3 free,   1664.0 used,   1084.1 buff/cache
MiB Swap:   4608.0 total,   4608.0 free,      0.0 used.   8551.9 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
  40853 root      20   0       0      0      0 I   0.3   0.0   0:01.08 kworker/2:1-pm
      1 root      20   0  170688  14532   9408 S   0.0   0.1   0:12.17 systemd
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.23 kthreadd
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp
      5 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 netns
      7 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H-events_highpri
      9 root       0 -20       0      0      0 I   0.0   0.0   0:00.15 kworker/0:1H-events_highpri
     10 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 mm_percpu_wq
     12 root      20   0       0      0      0 I   0.0   0.0   0:00.00 rcu_tasks_kthre
     13 root      20   0       0      0      0 I   0.0   0.0   0:00.00 rcu_tasks_rude_
     14 root      20   0       0      0      0 I   0.0   0.0   0:00.00 rcu_tasks_trace

7.-p指定某个pid来查看

[root@redhat9 ~]# top -p 1
top - 21:49:15 up 18:14,  3 users,  load average: 0.00, 0.06, 0.10
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :  10215.9 total,   7784.8 free,   1664.5 used,   1084.1 buff/cache
MiB Swap:   4608.0 total,   4608.0 free,      0.0 used.   8551.4 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
      1 root      20   0  170688  14532   9408 S   0.0   0.1   0:12.17 systemd

8.top的输出信息解析

主要分为统计信息区和进程信息区,前五行位统计信息区,后面都是进程信息区

[root@redhat9 ~]# top -p 1
top - 21:49:45 up 18:14,  3 users,  load average: 0.00, 0.06, 0.10
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni, 99.9 id,  0.0 wa,  0.1 hi,  0.0 si,  0.0 st
MiB Mem :  10215.9 total,   7784.8 free,   1664.5 used,   1084.1 buff/cache
MiB Swap:   4608.0 total,   4608.0 free,      0.0 used.   8551.4 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
      1 root      20   0  170688  14532   9408 S   0.0   0.1   0:12.17 systemd

统计信息区

(1)21:49:45表示当前系统时间;up 18:14表四系统启动已经18小时14分钟;user表示当前登录系统的用户数量;load average: 0.00, 0.06, 0.10表示系统上1、5、15分钟至今的平均负载,如果是1表示满负载

top - 21:49:45 up 18:14,  3 users,  load average: 0.00, 0.06, 0.10

(2)分别表示进程总数;正在运行的进程;正在休眠状态的进程数;停止的进程数;僵尸进程数

Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie

(3)分别表示用户进程占用cpu的百分比;系统进程占用cpu的百分比;用户进程空间内改变过优先级的进程占用cpu百分比;空闲cpu占用的百分比;I/O等待输入(输出进程占用cpu百分比);cpu服务于硬件中断所耗费的总时间;cpu服务于软件中断所耗费的总时间;虚拟机被hypervisor占去的时间

%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni, 99.9 id,  0.0 wa,  0.1 hi,  0.0 si,  0.0 st

(4)total表示系统的内存大小;free表示目前空余的内存大小;used表示已经使用的内存大小

MiB Mem :  10215.9 total,   7799.1 free,   1650.2 used,   1084.1 buff/cache
MiB Swap:   4608.0 total,   4608.0 free,      0.0 used.   8565.7 avail Mem

进程信息区

PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
      1 root      20   0  170688  14532   9408 S   0.0   0.1   0:12.19 systemd

PID:进程id

USER:进程所有者的名称

PR:进程优先级

NI:nice值,负值表示优先级高,反之低

VIRT:进程使用的虚拟内存总量,KB单位

RES:进程使用的,违背交换的物理内存大小,KB单位

SHR:共享内存大小,KB单位

S:进程状态,上文提到

%CPU:上次更新至今的cpu时间占用百分比

%MEM:进程占用的物理内存百分比

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

COMMAND:正在运行进程的命令名称

9.top命令执行过程可以使用交互按键命令如下

按键 含义
h,? 显示帮助信息
k 终止一个进程,提示您输入该进程的PID
i
忽略闲置进程和僵死进程
s
更改top输出信息两次刷新之间的时间,系统将提示输入新的时间
o,O
更改top 输出信息中显示的顺序。小写的 a-z 键可以将列向右移动,按大写的 A-Z键可以将列向左移动, enter 确定
f,F
从显示列表中添加或者删除项,按 f 键之后会显示列的列表,按 a-z 键即可显示或隐藏对应的列,最后按enter 确定
m
切换显示内存信息
t
切换显示进程和 cpu 状态信息
r
重新设置一个进程的优先级,系统提示用户输入需要改变的进程 PID 以及需要设置的进程优先级值。正值使优先级降低,反之则可以使该进程拥有更高的优先权,默认是10
l
切换显示平均负载和启动时间信息
c
切换显示完整命令行和命令名称信息
M
根据驻留内存大小进行排序输出
N
PID 排序
P
以CPU 使用百分比大小进行排序输出
T
根据时间 / 累计时间进行排序输出
S
切换到累计模式
W
将当前 top 设置写入 ~/.toprc 文件中
q
退出 top 显示

七.信号控制进程

1.部分编号和信号

1)  SIGHUP 重新加载配置
2)  SIGINT 键盘中断ctrl+c
3)  SIGQUIT 键盘退出
9)  SIGKILL 强制终止
15)  SIGTERM 终止(正常结束)
18)  SIGCONT 继续
19)  SIGSTOP 停止
20) SIGTSTP 暂停ctrl+z
1-31为不可靠信号(连续发送信号信号会丢失),34-64为可靠信号(连续发送信号信号不丢失)
[root@redhat9 ~]# 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

2.给所有指定进程发信号

kill(结束进程,kill+进程号),killall(向多个进程发送结束进程信号,killall+进程名),pkill(将进程移出终端)都可以发送信号

格式:kill -信号编号 进程号

[root@redhat9 ~]# ps -ef | grep httpd
root       40089       1  0 20:36 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     40415   40089  0 20:37 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache     40416   40089  0 20:37 ?        00:00:01 /usr/sbin/httpd -DFOREGROUND
apache     40417   40089  0 20:37 ?        00:00:01 /usr/sbin/httpd -DFOREGROUND
apache     40418   40089  0 20:37 ?        00:00:01 /usr/sbin/httpd -DFOREGROUND
root       40925   40664  0 22:18 pts/3    00:00:00 grep --color=auto httpd
[root@redhat9 ~]# killall httpd
[root@redhat9 ~]# ps -ef | grep httpd
root       40931   40664  0 22:19 pts/3    00:00:00 grep --color=auto httpd

八.作业控制进程

1.前台进程

在终端中运行命令,该终端是进程的控制终端,前台进程可以接收发出的信号,允许从终端读取或写入到终端

2.后台进程

后台进程不需要交互,无终端

3.命令

(1)&符号,使程序在运行时让其在后台运行

[root@redhat9 ~]# sleep 3000 &
[1] 40741

(2)ctrl+z将前台任务放到后台暂停

[root@redhat9 ~]# sleep 5000
^Z
[3]+  Stopped                 sleep 5000
[root@redhat9 ~]# ps -aux | grep sleep
root       40741  0.0  0.0 220952  1020 pts/3    S    13:53   0:00 sleep 3000
root       40743  0.0  0.0 220952   968 pts/3    S    13:53   0:00 sleep 4000
root       40748  0.0  0.0 220952  1040 pts/3    T    13:54   0:00 sleep 5000

(3)查看当前终端放在后台的进程

[root@redhat9 ~]# jobs
[1]   Running                 sleep 3000 &     #创建次序大于2了,不显示+/-号
[2]-  Running                 sleep 4000 &     #-表示最近第二个被放到后台总的工作
[3]+  Stopped                 sleep 5000   #+表示最近被放单后台的工作

(4)让任务在后台或前台进行,bg/fg %任务号

[root@redhat9 ~]# bg %3
[3]+ sleep 5000 &
[root@redhat9 ~]# jobs
[1]   Running                 sleep 3000 &
[2]-  Running                 sleep 4000 &
[3]+  Running                 sleep 5000 &
[root@redhat9 ~]# fg %1
sleep 3000
^Z
[1]+  Stopped                 sleep 3000
[root@redhat9 ~]# jobs
[1]+  Stopped                 sleep 3000
[2]   Running                 sleep 4000 &
[3]-  Running                 sleep 5000 &

(5)让'sleep 2'进程在后台执行,将输出输出到黑洞,不写黑洞则表示将输出仍然输出到当前终端

[root@redhat9 ~]# (while :; do date ; sleep 2 ; done) &>/dev/null &
[4] 40780

你可能感兴趣的:(Linux,#,进程和线程,linux,ps,top,init,systemd)