文章目录
概念
进程(Process)
1.系统进行资源分配和调度的基本单位,是操作系统结构的基础。
2.是计算机中的程序关于某数据集合上的一次运行活动,在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。
3.程序是指令、数据及其组织形式的描述,进程是程序的实体。
线程(thread)
1:是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。
2.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务
进程管理
查看进程
图形界面查看
gnome-system-monitor
#开启进程管理界面
命令方式查看
ps [option]
#报告当前系统的进程状态
top
#实时动态地查看系统的整体运行情况
进程相关信息解释
分类 | PS命令显示 | TOP命令显示 (不填为一样) | 含义 |
---|---|---|---|
ID | PID | 进程id进程识别号 | |
PPID | 父进程id | ||
用户 | USER | 进程所有者的用户名, | |
GROUP | 进程所有者的组名 | ||
终端 | TTY | 启动进程的终端名。若不是从终端启动的进程则显示为 ? | |
级别 | PRI | PR | 进程优先级别;动态值;值越大优先级越小;PRI(new)=PRI(old)+ni, |
NI | nice值;静态值;负值表示高优先级,正值表示低优先级;范围为 -20~19,可手动调整,方法跳转 | ||
资源使用 | %CPU | 上次更新到现在的CPU时间占用百分比 | |
%MEM | 进程使用的物理内存百分比 | ||
VSZ | VIRT | 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES | |
SWAP | 进程使用的虚拟内存中,被换出的大小,单位kb | ||
RSS | RES | 进程使用的、未被换出的物理内存大小,单位kb | |
SHR | 共享内存大小,单位kb | ||
TIME | TIME+ | 进程使用的CPU时间总计,PS静态时间单位秒,TOP动态动态单位1/100秒 | |
进程状态 | STAT | S | 进程状态。(下面有详细的) |
程序 | CMD | COMMAND | 程序名称或命令显示 |
COMMAND | 程序或命令及具体操作选项 |
状态代码
代码 | 名称 | 意义 |
---|---|---|
R | running | 正在运行的程序或者是可运行程序,处于运行队列中 |
S | sleep | 程序处于睡眠状态,可以被唤醒 |
D | uninterruaptible sleep | 同样是睡眠状态,但是不可以被唤醒, |
T | stopped | 停止状态,不可被唤醒, |
t | trace | 停止且可以跟踪状态 |
Z | “zombie” | 僵尸进程,跳过父进程被先结束的进程 |
X | dead | 退出状态,进程即将被销毁 |
< | 拥有高优先级别 | |
N | 拥有低优先级别 | |
L | 有些页被锁进内存 | |
s | 包含子进程 | |
l | 多线程 | |
+ | 在前台进程组运行 |
PS命令查看进程
PS常用查看命令
ps -A或-e #列出所有进程
ps -a #当前环境内所有进程,不包含环境信息
ps a #当前环境内所有进程,包含环境信息
ps x #当前环境内所有进程,包含tty输出设备
ps -u [user] #显示用户进程信息,不输入user默认为当前用户
ps f #结构显示进程父子关系
ps e #显示详细信息,系统资源调用
PS常用组合命令
ps aux #显示所有进程,并且显示进程用户
ps ef #显示进程详细信息,并且显示父子关系
ps ax #显示当前系统中所有进程
pstree #以树形结构显示当前所有进程
PS进程显示排序
ps ax --sort=[+|-]key
#'+'表示升序,不输入默认为升序;'-'表示降序;'key'以什么关键词为排序内容
ps -e --sort=+%cpu
#显示全部进程并且以CPU使用率为关键词,升序排列
ps -A --sort=-pid
#显示全部进程并且以PID号为关键词,降序排列
进程优先级
进程优先级概念
每个进程都有两个影响其调度的值:
第一个是动态值,内核经常更改这个值,也就是ps -l命令里的pri值
第二个是静态值,只是偶尔被用户手工更改,即ps -l里的ni值PRI即进程的优先级,此值越小进程的优先级别越高。而NI,也就是我们所要说的nice值(通过nice命令设置),其表示进程可被执行的优先级的修正数值。
如前面所说,PRI值越小越快被执行,那么加入nice值后,将会使得PRI变为:PRI(new)=PRI(old)+nice。所以,nice命令设置的优先级不是程序最终的优先级,而只是优先级的修正数值。
对任何进程而言,ni这个值可以从-20到19不等,分为40个级别,其中数值越小优先级越高,数值越大优先级越低,-20的优先级最高,19的优先级最低,需要注意的是普通用户只能在0~19之间调整应用程序的优先权值,只有超级用户有权调整更高的优先权值(从-20~19)。
NICE值调整
进程未运行,nice命令
nice [-n] nu'm comm
-n:设置nice级别
#num为级别是数字,默认是0,由-20~19
#且n可省略
#comm为调整优先级别的进程或命令
例如:将vim的ni级别调整为-5并开启
进程已运行,renice命令
renice [-n] num [-gpu]PID
-n:设置nice级别
-g:指定进程组的ID;
-p<程序识别码>:改变该程序的优先权等级,此参数为预设值,默认开启。
-u:指定开启进程的用户名。
#num为级别是数字,默认是0,由-20~19
#且-n可省略,但是级别数字必须为第一个参数出现
#PID为要改变进程的PID号码
例如:将已运行的vim的ni级别改为5
进程前后台调用
ctrl+z | 将占用终端的进程打入后台 |
命令jobs | 查看打入后台进程![]() [1]+:1为jobsnum;+号为默认首选使用 |
f+g+[jobsnum] | 把后台进程调回前台,不输入jobsnum时默认’+'号选项 |
b+g+[jobsnum] | 把后台暂停进行在后台运行,不输入jobsnum时默认’+'号选项 |
命令+& | 让命令直接在后台运行 |
信号级别
基本概念
摘自百度百科:
软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。进程之间可以互相通过系统调用kill发送软中断信号。内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件。注意,信号只是用来通知某进程发生了什么事件,并不给该进程传递任何数据。
常用信号
信号代号 | 信号名称 | 说 明 |
1 | SIGHUP | 该信号让进程立即关闭,然后重新读取配置文件之后重启 |
2 | SIGINT | 中断键盘输入,删除进程在内存中的内容 |
3 | SIGQUIT | 退出键盘输入,删除鼠标在内存的数据 |
9 | SIGKILL | 用来立即结束单个进程,不能被阻塞,一般用于强制中止进程 |
15 | SIGTERM | 正常结束进程的信号,能被阻塞 |
18 | SIGCONT | 该信号可以让暂停的进程恢复执行,不能被阻塞 |
19 | SIGSTOP | 该信号可以暂停前台进程,打入后台,不能被阻断 |
20 | SIGTSTP | 该信号可以暂停前台进程,打入后台,能被阻断 |
查看进程信号对应或解释
kill -l
#查看信号对应含义
man 7 signal
#可产看具体信号含义
信号控制
kill命令:用来删除执行中的程序或工作
kill -信号 进程PID
#对PID号进程,进行对应信号操作
killall命令:使用进程的名称来杀死进程,使用此指令可以杀死一组同名进程
killall -信号 进程名字
#多个相同进程名称开启时,可以同时操作
pkill命令:可以按照进程名杀死进程
pkill -u username [-信号]
#根据用户名username进行,信号操作
#信号默认为9
进程动态查询
top命令
第一行:当前时间、系统的运行时间、登录用户数、系统平均负载(平均负载有3个值,最近1分钟的、5分钟的、15分钟的,值越大,说明系统的负载越高)
第二行:进程总数、运行、休眠、停止、僵化的进程数
第三行:us:用户空间占用cpu百分比;sy:内核空间占用cpu百分比;ni:用户进程空间内改变过优先级的进程占用cpu百分比;id:空闲cpu百分比;wa:等待输入输出的cpu时间百分比、hi:cpu服务于硬中断所消耗的时间总额、si:cpu服务于软中断所消耗的时间总额,st:虚拟机监控程序占用时间
第四行是:物理内存:total:物理内存总量;free:空闲内存总量;used:使用的物理内存总量;buff/cache:用作内核缓存的内存量
第五行针对的是系统交换空间,total:交换区总量;free:空闲减缓去总量;used:使用交换区总量;avail:可使用交换区总量;
第六及以下:按照关键词进行内容分类展示
操作 | 显示内容 |
---|---|
按1 | 显示cpu每个核的负载,再安一次合并 |
按s | 按照输入数字,单位秒,调整刷新频率 |
按c | 按照CPU负载由大到小排序pic_center |
按m | 按照内存使用量由大到小排序 |
按h | 查看帮助信息 |
按u | 查看指定用户的进程动态,不输入为所有 |
按k | 对指定进程号发起信号 |
按r | 重新安排一个进程的优先级别 |
按q | 退出 |
控制服务
概念
服务:后台运行的程序,一般随系统的启动而自动的启动,且在用户退出或者注销后仍能继续运行。
服务与进程的关系:系统初始化进程可以对服务进行相应的控制
linux系统初始化进程:systemd
可用pstree
命令显示进程树查看,systemd为树根
管理系统服务
系统服务状态:
名称 | 含义 |
---|---|
loaded | 系统服务已经初始化完成,加载过配置 |
active(running) | 正有一个或多个程序正在系统中执行 |
atcive(exited) | 仅执行一次就正常结束的服务。目前并没有任何程序在系统中执行 |
atcive(waiting) | 正在执行当中,不过还再等待其他的事件才能继续处理 |
inactive | 服务关闭 |
enbaled | 服务开机启动 |
disabled | 服务开机不自启 |
static | 表示该服务与其他服务相关联,不能单独设置该服务的启动状态,不可被管理 |
failed | 系统配置错误 |
服务常规操作:
systemctl status server_name
#查看服务状态(inactive,active)
systemctl start server_name
#开启服务
systemctl stop server_name
#关闭服s务
systemctl restart server_name
#重启服务
systemctl reload server_name
#重新加载服务配置
服务自启动管理:
systemctl enable server_name
#设定服务开机启动
systemctl disable server_name
#设定服务开机不启动
服务列表查询:
systemctl list-units
#列出已经开启服务的当前状态
systemctl list-unit-files
#列出所有服务开机启动的状态(disable,enable,static)
systemctl list-dependencies
#列出服务的依赖
初始化启动模式:
systemctl set-default multi-user.target
#设定系统启动级别为多用户模式,无图像模式
systemctl set-default graphical.target
#设定系统启动级别为图像模式
服务冻结
systemctl mask server_name
#冻结服务
systemctl unmask server_name
#解冻服务