Linux系统中的进程管理
- 什么是进程?
程序:通常为二进制程序放置在存储媒介中(如硬盘、光盘、软盘、磁盘等),以物理文件的形式存在;
进程:程序被触发后,执行者的权限与属性、程序的程序代码与所需数据等都会被加载到内存中,操作系统并给予这个内存内的单元一个标识符(PID),可以说,进程就是一个正在运行中的程序。
2.查看进程
(1)图形方式查看
(2)进程查看命令
ps -A | 查看所有进程 |
---|---|
ps -a | 在环境中的所有进程,不包含环境信息 |
ps -u | 显示进程用户信息 |
ps a | 显示当前环境中运行的进程,包含环境信息 |
ps x | 列出系统中所有运行包含tty输出设备 |
ps f | 显示进程父子关系 |
ps e | 显示进程的详细信息(系统资源的调用) |
ps -l | 只查看自己的bash相关进程 |
ps 常用组合
ps aux | 显示系统中所有进程并显示进程用户 |
---|---|
ps ef | 显示进程详细信息并显示进程父子关系 |
ps ax | 显示当前系统中的所有进程 |
pstree | 显示当前系统的进程树 |
ps aux显示的项目中各字段的意义
USER:该进程所属用户;
PID:该进程的进程标识符;
%CPU:该进程使用掉的CPU资源百分比;
%MEM:该进程所占用的物理内存百分比;
VSZ:该进程使用掉的虚拟内存量(KB);
RSS:该进程占用的固定的内存量(KB);
TTY:该进程是在那个终端机上面运行,若与终端机无关则显示?另外,tty1~tty6是本机上面的登陆者程序,若为pts/0等的,则表示为由网络连接进主机的进程;
STAT:该进程目前的状态,状态显示在下文中介绍;
START:该进程被触发启动的时间;
TIME:该进程实际使用CPU运行的时间;
COMMAND:该进程的实际命令。
显示进程指定信息
ps -o xxx | 显示进程的指定信息 |
---|---|
ps -o comm | 进程名称 |
ps -o user | 进程所有人 |
ps -o group | 进程所有组 |
ps -o %cpu | 进程cpu使用率 |
ps -o %mem | 进程内存使用率 |
ps -o pid | 进程id |
ps -o nice | 进程优先级 |
示例:
进程排序
ps ax --sort=+%cpu|-%cpu
ps ax --sort=+%mem|-%-mem
练习
用一条命令抓取系统cpu使用量排在前五的pid
stat中显示的信息
S | 进程状态 |
---|---|
l | 内存中有锁定空间 |
N | 优先级低 |
< | 优先级高 |
“+” | 前台运行 |
s | 顶级进程 |
进程优先级
1.进程优先级范围
-20——19
2.优先级查看
ps ax -o pid,nice,comm
3.指定某个优先级开启进程
nice -n 优先级数字 进程名称
nice -n 5 vim ##开启vim并且指定程序优先级为5
4.改变进程优先级
renice -n 优先级数字 进程pid
renice -n -5 1806 ##改变1806进程的优先级为-5
示例
环境中进程的前后台调用
jobs | 查看被打入环境后台的进程 |
---|---|
ctrl+z | 把占用终端的进程打入后台 |
fg jobsnum | 把后台进程调回前台 |
bg jobsnum | 把后台暂停的进程运行 |
comm & | 让命令直接在后台运行 |
5.进程信号
(1)常用信号等级
man 7 signal #查看信号详细信息
1 | 进程重新加载配置 |
---|---|
2 | 删除进程在内存中的设置 |
3 | 删除鼠标在内存中的数据 |
9 | 强行结束单个进程(不能被阻塞) |
15 | 正常关闭进程(可能会被阻塞) |
18 | 运行暂停的进程 |
19 | 暂停某个进程(不能被阻塞) |
20 | 把进程打入后台(可以被阻塞) |
kill -2 (在另一个shell中进行,相当于ctr+c)
用法:
kill -信号 进程pid
killall -信号 进程名字
pkill -u student -信号 #管理student用户的进程
6.进程的动态监控
top
1 | 显示cpu每个CPU核的负载 |
---|---|
s | 调整刷新频率 |
c | CPU负载排序 |
m | 内存使用量排序 |
h | 查看帮助 |
u | 查看指定用户进程 |
k 对指定进程发起信号 先输入pid 后输入对应信号
q 退出
7.控制服务
(1)什么是服务
服务指在操作系统中,用以支持各种功能的程序.
(2)用什么控制服务
系统初始化进程可以对服务进行相应的控制
(3)当前系统初始化进程是什么
systemd #系统初始化进程
pstree #显示系统中的进程树
4.进程控制命令
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 |