对于进程的管理
进程状态
R(Running):该程序正在运行中
S(Sleep):该程序目前正在睡眠状态(idle),但可以被唤醒(signal)
D:不可被唤醒的睡眠状态,通常进程可能在等待I/O的情况。
T停止状态(stop):可能是在工作控制(背景暂停)或除错(traced)状态
Z(Zombie):僵尸状态,程序已经终止但却无法被移除至内存外
查看进程
1)以图形方式查看
gnome-system-monitored
2)进程查看命令——ps
ps
-A ##所有进程
-a ##在当前环境中运行的进程,不包含环境信息
-u ##显示进程用户信息
a ##在当前环境中运行的进程
x ##列出系统中所有运行包含tty输出设备
f ##显示进程的父子关系
e ##显示进程的详细信息(系统资源的调用)
ps常用组合
ps aux ##显示系统中所有进程并显示进程用户
ps ef ##显示进程详细信息并显示进程父子关系
ps ax ##显示当前系统中的所有进程
pstree ##显示当前系统的进程树
显示进程指定信息参数——ps -o
comm ##进程名称
user ##进程所有人
group ##进程所有组
%cpu ##进程cpu使用率
%mem ##进程内存使用率
pid ##进程id
多个一起显示中间要加逗号,例如:comm,user,group
–sort=%cpu#cpu资源按照升序排列 --sort=-%cpu#cpu资源按照降序排列,如果要按照其他信息排列,就用其他,比如%mem就是按照占据内存资源排列
stat中显示的信息
S ##进程状态
l ##内存中有锁定空间
N ##优先级低
< ##优先级高
+ ##前台运行
s ##顶级进程(不是任何进程的子进程)
进程的优先级
进程优先级范围
-20——19 越小优先级越高
优先级的查看命令——nice
ps ax -o pid,nice,comm #顺序显示进程的pid,优先级,进程名称
指定某个优先级开启进程
nice -n 优先级 进程名称 #开启某个进程并且指定优先级
例子:nice -n 16 vim & #开启vim并且指定程序优先级为16
改变进程优先级
renice -n 优先级 进程pid #改变某个已经开启的进程的优先级
例子:renice -n -5 3816 #改变3816进程的优先级为-5
环境中进程的前后台调用
jobs ##查看被打入环境后台的进程并显示进程数(jobsnum)
ctrl+z ##把占用终端的进程打入后台
fg jobsnum ##把后台进程调回前台
bg jobsnum ##把后台暂停的进程运行
comm & ##让命令直接在后台运行
进程信号
常用信号等级
1 ##进程重新加载配置
2 ##删除进程在内存中的数据
3 ##删除鼠标在内存中的数据
9 ##强行结束单个进程(不能被阻塞)
15 ##正常关闭进程 (可能会被阻塞)
18 ##运行暂停的进程
19 ##暂停某个进程 (不能被阻塞)
20 ##把进程打入后台 (可以被阻塞)
man 7 signal ##查看信号详细信息
一共有30个不同的信号等级,但是能被控制且常用的都是上文列出来的,其余具体详见https://blog.csdn.net/weixin_44243574/article/details/86473028
kill -信号 pid #对于pid进程进行控制
killall -信号 **** #对于所有名字里有****的进行控制
pkill -u student -信号 #对于某个用户的所有进程进行控制
在某些情况下,假如进程正在进行而且不能中断,那么进程可以忽略这个SIGTERM信号,但是对于SIGKILL信号,进程是不能忽略的
这是一个强制性信号,如果发送SIGKILL信号给进程,Linux就将进程停止在那
进程的动态监控
top命令
1 #显示cpu每个核的负载
s #调整刷新频率
c #CPU负载排序
m #内存使用量排序
h #查看帮助
u #查看指定用户进程
k #对指定进程发起信号
q #退出
对于服务的控制
1、什么是服务
服务是一类进程的集合(功能复杂,所使用的进程不只一个)
企业中的cs模型:c-client(用户)、s-server(企业) #企业提供服务并收取费用,用户享受服务并缴纳费用
定义:系统中运行的对于系统本身没有意义,但是对客户主机有重大意义的程序叫做服务性软件,简称服务
2、用什么控制服务
系统初始化进程可以对服务进行相应的控制
3、当前系统初始化进程是什么
systemctl ##显示系统初始化进程
pstree ##显示系统中的进程树
4、进程控制命令
在系统中的很多命令实际上都是基于系统提供的服务,比如ssh命令就是基于sshd服务,在sshd服务中的cs模型如下
ssh————->sshd 用户使用由sshd服务提供的ssh命令
client server
服务控制命令——systemctl
以下都是systemctl命令的参数
status 服务名称 ##查看服务状态,inactive(不可用),active
start 服务名称 ##开启服务
stop 服务名称 ##关闭服务
restart 服务名称 ##重启服务
reload 服务名称 ##重新加载服务配置
enable 服务名称 ##设定服务开机启动
disable 服务名称 ##设定服务开机不启动
list-units ##列出已经开启的服务当前状态
mask 服务名称 ##冻结服务
unmask 服务名称 ##解冻服务
list-dependencies ##列出服务的依赖
set-default multi-user.target ##设定系统启动级别为多用户模式(无图形的文本模式)
set-default graphical.target ##设定系统启动级别为图形模式
list-unit-files ##列出所有服务开机启动的状态
服务的状态(STATE)
disable(关闭)
enable(开启)
static(#静止的#属于依赖性,作为其他程序的前置条件,开机时无需去管,其他服务打开时自动打开)
masked(锁定的)