1、进程管理

1、什么是进程,什么是线程

1、什么是程序

一般情况下,代码,安装包等全部都是应用程序。

2、什么是进程

应用程序运行起来的能够提供某种服务的实例。

3、什么是线程

进程中处理具体事务的东西。

一个进程中,至少有一个线程,可以有多个线程(多线程)

2、进程的三种状态

    就绪态
阻塞态
运行态

3、查看进程(ps)

ps 是获取当系统进程的命令

-a         #显示一个终端的所有进程
-u         #选择有效的用户id或者是用户名
-x         #显示没有控制终端的进程,同时显示各个命令的具体路径。

-aux 一般情况下是一起使用,相同的参数组合还有一个 -ef 参数

-ef 和 -aux之间的区别?

-ef : 会打印出父级PID
-aux : 会打印出CPU、内存相关的使用情况

[root@localhost opt]# ps -a -u -x
[root@localhost opt]# ps -aux
USER       PID %CPU %MEM   VSZ   RSS TTY     STAT START   TIME COMMAND
root         1 0.0 0.4 43696 4044 ?       Ss   Oct12   0:02 /usr/lib/systemd/

USER 指的是运行当前进程的用户
PID 进程的编号
%CPU CPU的占用率(指在单位时间之内占用CPU的时间比)
%MEM : 内存的占用率
VSZ : 应用程序向系统申请的内存(虚拟内存)
RSS : 应用程序实际上使用的内存大小
TTY : 应用程序正在使用的终端(?代表后台运行,也就是说不占用任何终端)
tty终端 : 操作系统的终端
pts终端 :虚拟终端

STAT 进程的状态

            R :正在运行状态(正在使用CPU)
S :睡眠状态
D   不可中断睡眠,即在睡眠的过程中不可以接收信号唤醒=》执行的IO操作得不到硬件设备的响应
T   停止的进程
Z   僵尸进程
X   死掉的进程(几乎看不见,因为死了就立即回收了)
<   标注了<小于号代表优先级较高的进程
N   N代表优先级较低的进程
s   包含子进程
+   +表示在前台运行的进程(前台运行就是指在命令行中运行)
l   小写字母l,代表以线程的方式运行,即多线程
|   管道符号代表多进程

知识储备:

nice 设置进程的优先级

-n : 设置具体的进程优先级

-20 ~ 20 : 数字越大优先级越小
START : 进程开始的时间
TIME : 进程占用CPU的总时间
COMMAND : 进程运行的命令

4、ps详解+

USER:   运行进程的用户
PID:   进程ID
%CPU:   CPU占用率
%MEM:   内存占用率
VSZ:   占用虚拟内存,单位:kb(killobytes)
VSZ是指已分配的线性空间大小,这个大小通常并不等于程序实际用到的内存大小,产生这个的可能性很多
比如内存映射,共享的动态库,或者向系统申请了更多的堆,都会扩展线性空间大小。

RSS:   占用实际内存,单位:kb(killobytes)
RSZ是Resident Set Size,常驻内存大小,即进程实际占用的物理内存大小
TTY:   进程运行的终端
STAT: 进程状态     man ps (/STATE)            
R     运行
S     可中断睡眠 Sleep,即在睡眠的过程中可以接收信号唤醒=》执行的IO操作可以得到硬件设备的响应
D     不可中断睡眠,即在睡眠的过程中不可以接收信号唤醒=》执行的IO操作得不到硬件设备的响应
T     停止的进程
Z     僵尸进程
X     死掉的进程(几乎看不见,因为死了就立即回收了)
<     标注了<小于号代表优先级较高的进程
N     N代表优先级较低的进程
s     包含子进程
+     +表示是前台的进程组
l     小写字母l,代表以线程的方式运行,即多线程
|     管道符号代表多进程

START:   进程的启动时间
TIME:   进程占用CPU的总时间

COMMAND: 进程文件,进程名
带[]号的代表内核态进程
不带[]号的代表用户态进程

5、top命令

实时查看进程的命令。

1、基本参数

默认情况下,top命令是3秒刷新一次

-d 指定刷新的频率
-p 查看指定进程的信息
-u 查看指定用户的进程
-n 查看指定top次数的信息

[root@localhost ~]# top
[root@localhost ~]# top -d 1 # 1秒刷新一次
[root@localhost ~]# top -d 1 -p 进程的pid
[root@localhost ~]# top -d 1 -p `pgrep nginx | head -1`
[root@localhost ~]# top -d 1 -p `pgrep sshd | head -1`,33 # 查看sshd以及pid为33的进程
[root@localhost ~]# top -d 1 -u nginx # 查看指定用户进程
[root@localhost ~]# top -b -n 2 > top.txt # 将2次top信息写入到文件

2、系统整体统计信息

top - 11:35:39 up 1 day, 25 min, 3 users, load average: 0.00, 0.01, 0.05
Tasks: 91 total,   1 running, 90 sleeping,   0 stopped,   0 zombie
%Cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st