一.什么是进程
进程即正在进行的程序,就是系统未完成并且正在进行的工作。
二.查看进程
1.图形方式查看
gnome-system-monitor
效果如下
该界面类似于Windows操作系统的任务管理器
2.进程查看命令
命令 | 参数 | 注释 |
---|---|---|
ps | -A | 显示所有进程 |
ps | -a | 在当前环境中运行的进程,不包含环境信息 |
ps | -u | 显示进程用户信息 |
ps | a | 在当前环境中运行的进程 |
ps | x | 列出系统中所有运行包含tty输出设备 |
ps | f | 显示进程的父子关系 |
ps | e | 显示进程的详细信息(系统资源的调用) |
1)效果演示
显示所有进程
ps -A
在当前环境中运行的进程,不包含环境信息
ps -a
显示进程用户信息
ps -u
在当前环境中运行的进程
ps a
列出系统中所有运行包含tty输出设备
ps x
显示进程父子关系
ps f
显示进程的详细信息(系统资源的调用)
ps e
2)ps命令常用组合
命令 | 参数 | 注释 |
---|---|---|
ps | aux | 显示系统中所有进程并显示进程用户 |
ps | ef | 显示进程详细信息并显示进程父子关系 |
ps | ax | 显示当前系统中的所有进程 |
3)显示进程指定信息
命令 | 参数 | ||
---|---|---|---|
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 | 进程优先级 |
效果演示
显示进程名称、进程id、cpu使用率和所有人。
ps -o comm,pid,%cpu,user
显示进程id,优先级和内存使用率
ps -o pid,nice,%mem
4)进程排序
ps ax --sort=+%cpu|-%cpu ##按cpu使用率正序/逆序排序
ps ax --sort=+%mem|-%mem ##按内存使用率正序/逆序排序
效果演示
将进程按照cpu使用率逆序排列并且只显示进程cpu使用率
ps ax --sort=-%cpu -o %cpu
抓取系统中内存使用量排在前5的进程的pid
ps ax --sort=-%cpu -o pid | head -n 6 | tail -n 5
5)stat中显示的信息
字符 | 注释 |
---|---|
S | 进程状态 |
l | 内存中有锁定空间 |
N | 优先级低 |
< | 优先级高 |
+ | 前台运行 |
s | 顶级进程 |
三.进程优先级
1.优先级的范围
-20~19 数值越大优先级别越低,-20为最高,19为最低
2.优先级查看
ps ax -o pid,nice,comm
3.指定某个优先级开启进程
nice -n 优先级数字 进程名称
nice -n -5 vim & ##开启vim并且指定程序优先级为-5
如:开启vim并且指定程序优先级为-5
nice -n -5 vim &
普通用户使用此命令时可能会出现 Permission denied的情况,切换到超级用户即可
&的作用是将程序打开并打入后台而不影响当前操作(后面会提到)
若不使用&,则当前直接会进入vim界面,如下
4.改变进程优先级
renice -n 优先级数字 进程pid
renice -n -2 1806 ##改变1806进程的优先级为-5
效果演示
此处我们可以尝试将上一步中指定优先级为-5的vim程序进行更改
第一步找出该进程的pid
ps a -o pid,nice,comm
第二步将pid为3383的进程优先级修改为-10
renice -n -10 3383
再次查看确认,修改成功
ps a -o pid,nice,comm
4.环境中进程的前后台调用
命令 | 注释 |
---|---|
jobs | 查看被打入环境后台的进程 |
ctrl+z | 把占用终端的进程打入后台 |
fg jobsnum | 把后台进程调回前台 |
bg jobsnum | 把后台暂停的进程运行 |
comm & | 让命令直接在后台运行 |
效果演示
使用jobs命令查看被打入环境后台的进程
jobs
可知,当前只有vim程序在环境后台,我们再开启Firefox程序
firefox
可以看到Firefox已经在前台打开,且shell处于占用状态,无法输入命令,此时按下ctrl+z把占用终端的进程打入后台
此时Firefox进程处于后台且是停止状态,再次查看被打入环境后台的进程
jobs
第一列的中括号数字表示jobsnum,+表示默认,当+的进程调回前台时,-则会变为+成为默认
将Firefox后台运行
bg 2
再次查看后台进程
jobs
将vim调回前台(此时vim前面是+处于默认状态,fg命令后面加不加jobsnum都可以)
fg 1
5.进程信号
1)常用信号等级
数字 | 含义 |
---|---|
1 | 进程重新加载配置 |
2 | 删除进程在内存中的数据 |
3 | 删除鼠标再内存中的数据 |
9 | 强行结束单个进程(不能被阻塞) |
15 | 正常关闭进程(可能会被阻塞) |
18 | 运行暂停的进程 |
19 | 暂停某个进程(不能被阻塞) |
20 | 把进程打入后台(可以被阻塞) |
使用man 7 signal可以查看信号详细信息,此处仅列出部分信号
信号的使用
kill -信号 进程pid
killall -信号 进程名字
pkill -u student -信号
效果演示
使用ps命令查看当前进程
ps a -o pid,comm
强行关闭pid为3383的进程
kill -9 3383
查找该进程,可见已经被彻底关闭
ps a -o pid,comm | grep 3383
若要关闭所有firefox的进程,可以使用
killall -9 firefox
其他常见信号
SIGHUP | 终止进程 | 终端线路挂断 |
---|---|---|
SIGINT | 终止进程 | 中断进程 |
SIGQUIT | 建立CORE文件终止进程,并且生成core文件 | |
SIGILL | 建立CORE文件 | 非法指令 |
SIGTRAP | 建立CORE文件 | 跟踪自陷 |
SIGBUS | 建立CORE文件 | 总线错误 |
SIGSEGV | 建立CORE文件 | 段非法错误 |
SIGFPE | 建立CORE文件 | 浮点异常 |
SIGIOT | 建立CORE文件 | 执行I/O自陷 |
SIGKILL | 终止进程 | 杀死进程 |
SIGPIPE | 终止进程 | 向一个没有读进程的管道写数据 |
SIGALARM | 终止进程 | 计时器到时 |
SIGTERM | 终止进程 | 软件终止信号 |
SIGSTOP | 停止进程 | 非终端来的停止信号 |
SIGTSTP | 停止进程 | 终端来的停止信号 |
SIGCONT | 忽略信号 | 继续执行一个停止的进程 |
SIGURG | 忽略信号 | I/O紧急信号 |
SIGIO | 忽略信号 | 描述符上可以进行I/O |
SIGCHLD | 忽略信号 | 当子进程停止或退出时通知父进程 |
SIGTTOU | 停止进程 | 后台进程写终端 |
SIGTTIN | 停止进程 | 后台进程读终端 |
SIGXGPU | 终止进程 | CPU时限超时 |
SIGXFSZ | 终止进程 | 文件长度过长 |
SIGWINCH | 忽略信号 | 窗口大小发生变化 |
SIGPROF | 终止进程 | 统计分布图用计时器到时 |
SIGUSR1 | 终止进程 | 用户定义信号1 |
SIGUSR2 | 终止进程 | 用户定义信号2 |
SIGVTALRM | 终止进程 | 虚拟计时器到时 |
6.进程的动态监控
top
键入信号 | 功能 |
---|---|
1 | 显示CPU每个核的负载 |
s | 调整刷新频率 |
c | CPU负载排序 |
m | 内存使用量排序 |
h | 查看帮助 |
u | 查看指定用户进程 |
k | 对指定进程发起信号 |
q | 退出 |
7.控制服务
1)什么是服务
Linux中的服务是一类常驻在内存中的进程,这类进程启动后就在后台当中一直持续不断的运行,因为这类进程通常是负责一些系统提供的功能来服务用户的各项任务,所以这类进程被称为服务,比如crond、atd、syslog、Apache都是属于服务,服务叫做daemon进程,从它的英文含义上也可以看出这类进程的特点。
2)用什么控制服务
系统初始化进程可以对服务进行相应的控制
3)当前系统初始化进程是什么
systemd ##系统初始化进程
pstree ##显示系统中的进程树
systemctl | 服务控制命令 |
---|---|
systemctl status sshd | 查看sshd服务状态,状态有两种:inactive(不可用),active(可用) |
systemctl start sshd | 开启sshd服务 |
systemctl stop sshd | 关闭服务 |
systemctl restart sshd | 重启服务 |
systemctl reload sshd | 重新加载服务配置 |
systemctl enable sshd | 设定服务开机启动 |
systemctl disable sshd | 设定服务开机不启动 |
systemctl list-units | 列出已经开启服务当前状态 |
systemctl list-unit-files | 列出所有服务开机启动状态 |
systemctl list-dependencies | 列出服务的依赖 |
systemctl mask sshd | 锁定sshd服务 |
systemctl unmask | 解锁 |
systemctl set-default multi-user.target | 设定系统启动级别为多用户模式 |
systemctl set-default graphical.target | 设定系统启动级别为图形模式 |
查看sshd服务状态
systemctl status sshd