1.什么是进程
程序放置在存储媒体中,为实体文件的形体存在
进程:程序被触发后,执行者的权限与属性,程序的程序码与所需数据等都会被载入内存中,操作系统会给进程一个识别码(PID)
可以说,进程就是一个正在运行的程序。
2.进程的状态
R(running) | 该程序正在运行中。 |
S(sleeping) | 该程序目前正在睡眠状态(idle),但可以被唤醒(signal)。 |
D | 不可被唤醒的睡眠状态,通常进程可能在等待I/O的情况。 |
T(stop) | 停止状态,可能是在工作控制(背景暂停)或除错(traced)状态。 |
Z(Zombie | 僵尸状态,程序已经终止但却无法被移除至内存外。 |
3.查看进程
1)图形方式查看
[root@client Desktop]# gnome-system-monitor
2)进程查看命令
a.常用命令 ps
参数 | 含义 |
---|---|
-A | 所有进程 |
-a | 在当前环境中运行的进程,不包函环境信息 |
-u | 显示进程用户信息 |
a |
在当前环境中运行的进程 |
x | 列出系统中所有运行包含tty输出设备 |
f | 显示进程的父子关系 |
e | 显示进程的详细信息(系统资源的调用) |
ps -A ##查看所有进程
ps -a ##在当前环境中运行的进程,不包函环境信息
ps -u ##显示进程用户信息
ps a ##在当前环境中运行的进程
ps x ##列出系统中所有运行包含tty输出设备
ps f ##显示进程的父子关系(ps为/bin/bash的子进程)
注意:父进程关闭子进程关闭;
孤儿程序受系统的初始化程序控制。
ps e ##显示进程的详细信息(系统资源的调用)
pstree ##显示当前系统的进程树
b.ps常用组合
参数 | 意义 |
aux | 显示系统中所有进程并显示进程用户 |
ef | 显示进程详细信息并显示进程父子关系 |
ax | 显示当前系统中的所有进程 |
ps aux
ps ef
ps ax
c.显示进程指定信息
参数 | 意义 |
-o ***** | 显示进程的指定信息 |
-o comm | 进程名称 |
-o user | 进程所有人 |
-o group | 进程所有组 |
-o %cpu | 进程cpu使用率 |
-o %mem | 进程内存使用率 |
-o pid | 进程id |
-o nice | 进程优先级 |
ps -o comm
ps -o user
ps -o group
ps -o %cpu
ps -o %mem
ps -o pid
ps -o nice
e.g.
ps -o pid,comm,user,%cpu ##查看进程pid,user,进程名称,cpu使用率
d.进程排序
ps ax --sort=+%cpu / -%cpu(降序) ##按cpu使用率排序
ps ax --sort=+%mem / -%mem(降序) ##按内存使用率排序
e.g.
ps ax --sort=+%cpu ##按cpu使用率升序排序
ps ax --sort=-%mem ##按内存使用率降序排序
e.STAT中显示的信息
参数 | 含义 |
S | 进程状态 |
l | 内存中有锁定空间 |
N | 优先级低 |
< | 优先级高 |
+ | 前台运行 |
s | 顶级进程 |
R+ | 正在运行 |
4.进程优先级
1)进程优先级范围
-20~19(越负优先级越高)
2)优先级查看
ps ax -o pid,nice,comm
3)指定某个优先级开启进程
nice -n 优先级数字 进程名称
nice -n -5 vim & ##开启vim并且指定程序优先级为-5
4)改变进程优先级:renice
reince -n 优先级数字 进程pid
renice -n -10 2750 ##改变进程2750的优先级为-10
5.环境中进程的前后台调用
jobs | 查看被打入环境后台的进程 |
ctrl+z | 把占用终端的进程打入后台 |
fg jobsnum | 把后台进程调回前台 |
bg jobsnum | 把后台暂停的进程运行 |
comm & | 让命令直接在后台运行 |
6.进程信号
常用信号等级
1 | 进程重新加载配置(进程不关闭的情况下重新加在配置) |
2 | 删除进程在内存中的数据(不能是锁定的内存(锁定的空间数据被删除进程就会被关闭))(ctrl+c) |
3 | 删除鼠标在内存中的数据(ctrl+\) |
9 | 强行结束单个进程(不能被阻塞) |
15 | 正常关闭进程(可能会被阻塞) |
18 | 运行暂停的程序 |
19 | 暂停某个进程(不能被阻塞) |
20 | 把进程打入后台 (可以被阻塞) |
man 7 signal | 查看信号详细信息 |
kill -信号 进程pid
killall -信号 进程名字
对于SIGKILL信号,进程是不能忽略的。这是一个 “我不管你在做什么,立刻停止”的信号。
e.g.
kill -9 3117 ##强行结束3117(不能被阻塞)
7.进程的动态监控:top
1 | 显示cpu每个核的负载 |
s | 调整刷新频率 |
c | cpu负载排序 |
m | 内存使用量排序 |
h | 查看帮助 |
u | 查看指定用户进程 |
k | 对指定的进程发起信号 |
z | 显示颜色 |
b | 高亮显示 |
q | 退出 |
e.g.
top 查看
按s更改刷新频率 3.0s改为1.0s
8.控制服务
1)什么是服务
定义:系统中运行的对于系统本身没有意义但是对客户主机有重大意义的程序叫做服务性软件简称服务。
cs模型: c-->client s-->server
2)用什么控制服务
系统初始化进程可以对服务进行相应的控制。
3)当前系统初始化进程是什么
1.systemd ##系统初始化进程
2.pstree ##显示系统中的进程树
4)进程控制命令
##以sshd服务为例子:
ssh -------->sshd
client server
systemctl ##服务控制命令
systemctl status sshd ##查看服务状态,inactive(不可用),active(可用)
systemctl start sshd ##开启服务
systemctl stop sshd ##关闭服务
systemctl restart sshd ##重启服务
systemctl reload sshd ##重新加载服务配置
systemctl enable sshd ##设定服务开机启动
systemctl disable sshd ##设定服务开机不启动
systemctl list-units ##列出已经开启服务当前状态
systemctl list-unit-files ##列出所有服务开机启动的状态 disable,enable,static
systemctl list-dependencies ##列出服务的依赖
systemctl set-default multi-user.target ##设定系统启动级别为多用户模式(无图形)
systemctl set-default graphical.target ##设定系统启动级别为图形模式
e.g.
systemctl status sshd ##查看服务状态,inactive(不可用),active(可用)
systemctl stop sshd ##关闭服务
systemctl start sshd ##开启服务
systemctl restart sshd ##重启服务
可以看到,两次sshd服务的pid不同,说明重启了
systemctl reload sshd ##重新加载服务配置
重新加载没有重启,pid不改变。
systemctl disable sshd ##设定服务开机不启动
systemctl enable sshd ##设定服务开机启动
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 sshd ##冻结服务 (关的时候锁)
systemctl unmask sshd ##解锁服务