1.什么是进程
进程(Process):进程是程序运行时的状态
• 程序是静态的文件
• 进程是运行中的程序的一个副本(运行程序时会把程序复制到内存缓存空间中)
• 进程存在生命周期(准备期,运行期,终止期)
准备期——把代码缓存到系统硬件
运行期——处于工作状态
终止期——工作完成后,系统把所占用的系统资源全部回收(如果系统不能回收资源系统会越来越卡)
•进程是资源调配的最小单位,线程是进程的最小单位,进程中的所有资源被线程共享
进程状态
| 状态 | 定义 |
|---|---|
| R(TASK_RUNNING) | 可执行状态(RUNNING,READY) |
| S(TASK_INTERRUPTIBLE) | 可唤醒睡眠状态 |
| D (TASK_UNINTERRUPTIBLE) | 不可唤醒睡眠状态 |
| T(TASK_STOPPED) | 暂停(停止)状态 |
| Z( EXIT_ZOMBIE) | 僵死态 |
1.可运行状态
Running——进行正在运行中
Ready——所有东西加载完毕,在等待队列等待CPU处理
2.可唤醒睡眠状态
S——程序使用CPU处理时,所使用CPU时间过长,(因为CPU处理进程的个数是有限的)所以程序被CPU中止进行下一个进程,进程在这个阶段可以被唤醒
3.不能唤醒睡眠状态
D——所需要的工作中的条件不满足,程序被终止,不能唤醒,等条件满足后才能被唤醒
不能被唤醒的情形:如加载磁盘里比较大的文件,没有加载完毕前不能被唤醒
4.暂停(停止)状态
T——进程被暂停。暂停状态是由用户调整的,所以需要用户的指令来唤醒
5.僵死态
Z——父级进程比子进程结束晚,子进程的资源由父级进程回收。当子进程在系统中所调用的系统资源没有结束时,如果父级进程先结束掉,则没有人回收子进程,一直占用资源成为僵死态。系统不能回收资源会越来越卡。
2.进程查看
2.1 Pstree 命令查看进程树:树形结构显示进程
[root@workstation Desktop]# pstree

注意:
因为内核不能负载这么多进程,所以开启守护进程systemd是守护进程对进程进行管理,systemd的作用是对子进程进行初始化,守护进程在系统开启时自动打开。
2.2 PS 命令的常规用法
==PS——显示当前命令执行时进程状态
[root@workstation Desktop]# whatis ps

[root@workstation Desktop]# man ps

| ps命令参数 | 功能 |
|---|---|
| •a | 显示与终端相关进程(BSD) |
| •x | 显示所有与终端无关进程(BSD) |
| •u | 以用户为归类来显示进程状态信息(BSD) |
| •f | 层级结构显示进程信息(BSD) |
| •o | 指定查看选项,pid,comm,nice,pri,pcpu,stat,ppid |
| • -e | 显示所有进程(uinx) |
| • -f | 显示完整格式信息(unix) |
| • -H | 层级结构显示进程的相关信息(unix) |
| • -o | 指定查看选项,pid,comm,nice,%cpu,%mem,nice (unix) |
注意:UNLIX参数带(-)和BSD格式参数不带(-)
PS 命令显示信息
| UNIX格式字段 | 解释 |
|---|---|
| USER | 用户名称 |
| PID | 进程id |
| %CPU | 进程占用cpu的百分比 |
| %MEM | 进程占用内存资源的百分比 |
| VSZ | 虚拟内存占用大小 |
| RSS | 常驻内容量(不被系统回收的资源) |
| TTY | 字符终端 |
| STAT | 进程状态 |
| START | 程序开始运行时间 |
| TIME | 占用cpu总时间 |
| COMMAND | 进程名称 |

| BSD格式字段 | 解释 |
|---|---|
| UID | 用户名称 |
| PID | 进程ID |
| PPID | 父级进程ID |
| C | 进程占用cpu的用量 |
| STIME | 程序开始运行时间 |
| TTY | 字符终端 |
| TIME | cpu处理进程的时间 |
| CMD | 进程名称 |

•ps a——显示与终端相关进程(BSD)


•ps x——显示所有与终端无关进程(BSD)

•ps ax——显示所有进程,包括与终端相关进程和与终端无关进程(BSD)
注意:ps ax显示进程以资源的方式进行归类(PID从小到大排列)

•ps u——以用户为归类来显示进程状态信息(BSD)

•ps f ——层级结构显示进程信息(BSD)


• ps -e 显示所有进程(uinx)

• ps -f 显示完整格式信息(unix)

• ps -H 层级结构显示进程的相关信息(BSD)
[root@workstation Desktop]# ps -e -f -H

• ps -o 指定查看选项,如pid,comm,nice,%cpu,%mem,nice


ps可以对当前的某些资源进行排序
[root@workstation Desktop]# ps axo pid,comm,%mem --sort=%mem正序显示

[root@workstation Desktop]# ps axo pid,comm,%mem --sort=-%mem倒序显示


2.3 pgrep 进程过滤命令
pgrep 显示指定信息进程
| pgrep命令参数 | 功能 |
|---|---|
| • -u uid | 显示指定用户进程 |
| • -U name | 显示指定用户进程 |
| • -t tty | 显示指定终端进程 |
| • -l | 显示进程名称 |
| • -a | 显示完整格式进程名 |
| • -P pid | 显示指定进程的子进程 |








2.4 pidof 根据进程名称获取pid
• pidof vim ——查看一个命令进程的ID
[root@workstation Desktop]# watch -n 1 date

2.5 top命令的用法
top命令可以真实查看进程状况,具有实时显示功能,默认3s刷新一次

| top 显 示 进 程 信 息 详 解 |
|---|
| top——系统当前时间 |
| up——系统运行时长 |
| user——登录当前系统的用户数量 |
| load average——系统的负载,分别代表平均负载1分钟 5分钟 15 分钟的队列长度(uptime) |
| task——任务总量 |
| running——运行进程数量 |
| sleeping——休眠进程数量 |
| stopped——暂停进程数量 |
| zombie——僵死进程数量 |
| %cpu(s)——cpu占用百分比/使用量 |
| us——用户空间,用户占用CPU量 |
| sy——内核空间,内核占用CPU量 |
| ni ——nice,进程优先级调整占用的CPU量调整时间 |
| id——空闲时间 |
| wa ——等待I/O输入输出时间 |
| hi ——处理硬件中断时间 |
| si ——处理软件中断时间 |
| st ——被虚拟化程序占用的百分比 |
| mem——物理内存使用量 |
| buff/cache——缓存=buff等待写入磁盘的+cache读取的,都可以被系统回收利用(内存的空闲使用量=free+buff/cache) |
| Swap——虚拟内存使用量,交换分区占用 |
| PR——优先级 |
| NI ——优先级代表的nice值 |
| VIRT——虚拟CPU |
| RES——常驻内存 |
| SHR——贡献资源 |
| S——状态 |
top的相关参数
| top内部参数 | 功能 |
|---|---|
| P | cpu百分比排序 |
| M | 内存百分比 |
| T | 累计占用cpu时间 |
| l | 开启/关掉uptime信息 |
| t | 开启/关闭task&cpu信息 |
| s | 调整刷新频率 |
| k | 终止进程 |
| u | 查看指定用户进程 |
P ——cpu百分比排序

M ——内存百分比排序

T ——累计占用cpu时间排序

l ——开启/关掉uptime信息
uptime直接显示系统负载,l关闭负载


t ——开启/关闭task&cpu信息,显示模式不一样




1——显示整体CPU整体负载

s ——调整刷新频率

k ——终止进程

u ——查看指定用户进程 (q退出)


| top命令参数 | 功能 |
|---|---|
| top -d | 指定刷新间隔 |
| top -b | 以批次方式显示 |
| top -n | 显示批次数量 |
top -d 指定刷新间隔
[root@workstation Desktop]# top -d 1

top -b 以批次方式显示
[root@workstation Desktop]# top -b -d1

top -n 显示批次数量
[root@workstation Desktop]# top -b -d1 -n 2
3.进程优先级
按照资源占用划分进程类型
| 资源使用量 | 进程类型 |
|---|---|
| cpu使用密集(计算量大,如视频处理) | CPU-Bound |
| I/O使用密集(如编辑器) | I/O-Bound |
注意:对CPU使用密集的程序多分配CPU,但是要调高I/O使用密集程序的优先级
内核优先级的范围
•对Linux而言优先级被划分成固定个数 (0-139),共140个优先级(内核把程序划分为140个队列)
•1-99为实时有优先级,数字越大优先级越高,不能人为干预,是内核对于程序本身的控制,系统自用
•100-139为静态优先级(共40个),数字越小优先级越高,是人为能干预的
NICE值
NICE值:-20~19对用静态优先级,数字越小优先级越高
普通用户只可以调低优先级,超级用户任意调整
关于优先级的命令
• ps ax –o • nice –n 优先级 程序
• reince–n 优先级 程序pidnice,pid,comm ——查看进程优先级

• reince –n 优先级 pid ——更改进程优先级


• nice –n 优先级 程序——调整开启进程时的指定优先级

4.进程前后台调用
进程前后台调用相关命令
| 指令 | 含义 |
|---|---|
| jobs | 查看后台任务 |
| ctrl+z | 将前台运行进程打入后台 |
| bg+后台运行job号 | 激活后台挂起的进程 |
| fg+后台运行job号 | 调回进程 |
| & | 运行在后台 |
ctrl+z——将前台运行进程打入后台
jobs——查看后台任务

bg+后台运行job号——激活后台挂起的进程


fg+后台运行job号—— 调回进程

&——进程开启后运行在后台

5.信号
5.1 man 7 signal——查看信号
[root@workstation Desktop]# man 7 signal

5.2 进程信号
可控信号类型
| 可控信号 | 含义 |
|---|---|
| 1 | 刷新 |
| 2 | 中断键盘输入 |
| 3 | 退出键盘 |
| 9 | 强制结束进程 |
| 15 | 正常关闭进程 |
| 18 | 激活进程 |
| 19 | 强制暂停(系统不阻止) |
| 20 | 正常暂停(会被系统阻塞,系统认为不适合暂停) |
1 ——刷新
让进程再次读取配置
2 ——中断键盘输入

3 ——退出键盘
快捷键:ctrl+\退出鼠标,鼠标动才会出现(如:看视频时鼠标会隐藏)
9 ——强制结束进程

15——正常关闭

18 ——激活进程

19——强制暂停(系统不阻止)

20——正常暂停(会被系统阻塞,系统认为不适合暂停)

5.3 信号命令
kill 信号 pid


killall 信号 进程名称

pkill 信号 进程名称 (类似于pgrep)



6.守护进程systemd
服务型软件的控制不能用kill或者killall这种单独的程序管理工具进行管理,要用systemctl进行管理

6.1 守护进程的定义
• 守护进程就是通常讲Daemon进程
• 是linux后台执行的服务进程
• 不需要终端,是独立于控制终端、周期性地执行某种任务或等待处理某些发生事件
• 不会随终端关闭而停止,直到接受停止信息才会结束(或手动关闭)
6.2 守护进程类型
| 守护进程类型 | 使用系统及特点 |
|---|---|
| Sysv init | 经典的守护进程类型延用到rhel6(链式启动服务) |
| upstart | 做到并行启动rhel6中应用 |
| systemd | 独立完成启动,rhel7中使用 |
systemctl 用法之一
| 指令 | 用途 |
|---|---|
| systemctl list-unit-files | 查看服务开机运行情况 |
| systemctl list-units | 查看服务当前运行情况 |
| systemctl list-dependencies | 查看服务依赖性 |
| systemctl status service | 查看服务状态 |
| systemctl start service | 开启服务 |
| systemctl stop service | 关闭服务 |
| systemctl reload service | 重新加载服务配置 |
设定实验环境:
在虚拟机中(超级用户):
网卡设定: nm-connection-editor






真机下运行:ssh -l root 172.25.254.165

systemctl list-units --type=service
查看系统当中所有服务当前的运行情况


sshd服务使主机可以让别人通过ssh连接
systemctl list-unit-files --type=service
查看服务开机运行情况

systemctl list-dependencies service 查看服务依赖性

systemctl status service 查看服务状态

systemctl stop service 关闭服务


关闭sshd服务后,真机无法与虚拟机相连
systemctl start service 开启服务


sshd服务开启后,真机可以和虚拟机相连
systemctl restart =stop+start


systemctl reload service 重新加载服务配置(类似于kill -1)

systemctl 用法之二
| 指令 | 用途 |
|---|---|
| systemctl restart service | 重新启动服务 |
| systemctl enable service | 设定服务开启启动 |
| systemctl enable –now service | 设定服务开机启动并开启服务 |
| systemctl disable service | 设定服务开机关闭 |
| systemctl set-default multi-user.target | 设定系统运行级别为无图形网络模式 |
| systemctl set-default graphical.target | 设定系统运行级别为图形网络模式 |
systemctl restart service 重新启动服务
systemctl disable service 设定服务开机关闭

systemctl enable service 设定服务开启启动
后面需要start开启

systemctl enable –now service 一次性设定服务开机启动并开启服务(=enable+start)

systemctl set-default multi-user.target 设定系统运行级别为无图形网络模式


init 5手动开启图形(不是永久的)


systemctl set-default graphical.target 设定系统运行级别为图形网络模式
是永久设定


480

被折叠的 条评论
为什么被折叠?



