进程定义
进程查看命令
- 图形进程查看工具
2. ps 进程查看
(1)a 与终端相关的进程
ps a
(2)x 与终端无关的进程
ps x
(3)u 用户信息归类
ps au 使用用户信息归类的方式查看与终端相关的进程
(4)f
ps af 使用层级结构查看与终端相关的进程
(5)o 指定参数去显示内容
ps ao pid,user,comm 仅查看与终端相关的进程的进程id,用户名,命令名称
(6)-e 显示所有进程
ps -e
(7)-f 显示信息的完整格式
ps a -f 查看与终端相关的进程的完整信息格式
UID | PID | PPID | C | STIME | TTY | STAT | TIME | CMD |
---|---|---|---|---|---|---|---|---|
用户名 | 进程id | 子进程id | 是否加有特殊参数 | 进程用到的终端 | 状态 | 占用CPU时间 | 进程名称 |
(8)-H 显示层级结构
ps ao pid,user,comm -H
仅显示与终端相关的进程的pid,user,comm,并显示进程间的关系
ps a -f -H
显示与终端相关的进程的完整信息,并显示层级结构
(9)-o 指定参数
(10)–sort= 排序显示
ps -e -o pid,user,%cpu --sort=-%cpu
仅显示所有进程的pid,user,%cpu,同时按照所占cpu容量进行倒序排序
(11)ps axu
参数 | 注释 |
---|---|
USER | 进程拥有者 |
PID | 进程id |
%CPU | 进程占用CPU容量 |
%MEM | 进程占用内存容量 |
VSZ | 进程所占虚拟内存容量 |
RSS | 进程常驻内存内存中的数据大小 |
TTY | 进程使用终端数量 |
STAT | 进程状态 |
START | 进程运行时长 |
TIME | 进程占用CPU时长 |
COMMAND | 进程名称 |
3. pgrep 进程过滤
(1) -u uid 显示指定用户进程
pgrep -u 0 过滤出uid=0的用户(root)进程
(2)-U user 显示指定用户进程
pgrep -U root 过滤出超级用户的进程
(3)-l 显示进程名称
pgrep -U root -l 过滤出超级用户的进程,并显示进程名称
(4)-t tty 显示指定终端进程
(5)-a 显示进程的完整名称
pgrep -aU root 过滤出超级用户进程,并显示其完整名称
(6) -P 显示当前进程的子进程
pgrep -P 919 过滤出919号进程的子进程
Q:只显示进程所占cpu容量的前5个的pid
A:ps ax -o pid --sort=-%cpu | grep -v pid | head -n 5
A:ps axo pid --sort=-%cpu | head -n 6 | tail -n 5
4. pidof 查看该进程的pid
pidof cat 查看进程cat的pid
pidof gedit 查看进程gedit的pid
5. top 动态进程查看
top | 注释 |
---|---|
06:05:59 | 系统时间 |
up 1:52 | 运行时间 |
1 user | 系统中登陆的用户数 |
load average | 一段时间 (1 分钟、5分钟、15分钟) 内平均 Load |
0.01 | 表示最近1分钟平均负载 |
0.08 | 表示最近5分钟平均负载 |
0.08 | 表示最近15分钟平均负载 |
linux系统中的Load对当前CPU工作量的度量 (WikiPedia: the system load is a measure of the amount of work that a computer system is doing)。也有简单的说是进程队列的长度。
Tasks | 注释 |
---|---|
319 total | 任务总量 |
2 running | 正在运行的进程数量 |
317 sleeping | 睡眠状态的进程数量 |
0 stopped | 阻塞状态的进程数量 |
0 zombie | 僵死状态的进程数量 |
%Cpu9(s) | 注释 |
---|---|
2.0 us | 用户空间占用cpu的百分比 |
0.7 sy | 内核空间占用cpu的百分比 |
0.0 ni | 改变过优先级的进程占用cpu的百分比 |
95.0 id | 空闲时间 |
1.7 wa | wait IO等待占用cpu的百分比 |
0.3 hi | Hardware IRQ 硬中断占用cpu的百分比 |
0.3 si | software 软中断占用cpu的百分比 |
0.0 st | 虚拟机所用的系统的时间(被偷走的时间) |
MiB Mem | 注释 |
---|---|
1806.1 total | 内存总量 |
64.3 free | 内存空闲总量 |
1368.2 used | 内存已使用总量 |
373.6 buff/cache | 缓存 |
MiB Swap | 注释 |
---|---|
2048.0 total | 交换分区总容量 |
1993.0 free | 交换分区空闲容量 |
55 used | 交换分区已使用容量 |
342.3 avail Mem | 可用交换分区总量 |
(1)top命令参数
-d 指定刷新频率
top -d 1 以1秒的刷新频率动态查看进程
-b 批次查看进程
-n 指定显示的批次数量
top -b -n 3 以3批次查看进程
(2)top 内部命令
P CPU排序
M 内存排序
T CPU时间排序
l 关闭/开启uptime信息
t 关闭/开启cpu&task
s 指定刷新频率
k 操作进程
u 指定用户查看进程
进程优先级
- 进程优先级
用top或者ps -l查看进程会发现有PR(PRI) NI两个字段:
NI 是优先值,是用户层面的概念, PR是进程的实际优先级, 是给内核(kernel)看(用)的。
一般情况下,PR=NI+20, 如果一个进程的优先级PR是20, 那么它的NI(nice)值就是20-20=0。
范围: 0~139
内核自控优先级:0~99
用户可控优先级:100~139
nice:-20~19
进程调度优先级是从-20到19,一共40个级别,数字越大,表示进程的优先级越低。默认时候,进程的优先级是0。
每个进程都有两个影响其调度的值:
第一个是动态值,内核经常更改这个值,也就是ps -l命令里的pri值
第二个是静态值,只是偶尔被用户手工更改,即ps -l里的ni值。对任何进程而言,ni这个值可以从-20到19不等,其中数值越小优先级越高,数值越大优先级越低,
-20的优先级最高,19的优先级最低,需要注意的是普通用户只能在0~19之间调整应用程序的优先权值,只有超级用户有权调整更高的优先权值(从-20~19)。
PRI即进程的优先级,此值越小进程的优先级别越高。而NI,也就是我们所要说的nice值(通过nice命令设置),其表示进程可被执行的优先级的修正数值。如前面所说,PRI值越小越快被执行,那么加入nice值后,将会使得PRI变为:PRI(new)=PRI(old)+nice。
所以,nice命令设置的优先级不是程序最终的优先级,而只是优先级的修正数值。
- 设定优先级
监控进程gedit的优先级变化情况
renice -n 5
降低进程的优先级nice5级
nice -n 5 gedit
指定优先级打开进程
nice -n 5 gedit &
指定优先级打开进程,并在后台运行
状态 | 注释 |
---|---|
S | sleeping |
< | 优先级高 |
s | 顶级进程 |
T | stop |
N | 优先级低 |
R | running |
+ | 运行在后台 |
进程前后台调用
- Ctrl+z
把占用shell的进程挂起,调入后台
运行gedit进程
挂起的gedit,无法再键入内容
2. jobs查看当前shell中处于挂起状态的所有工作
- bg 把后台挂起的进程运行起来
此时,gedit中可以键入内容,不占用shell
- fg 把后台进程调入前台
占用shell
- & 在后台运行进程
不占用shell
进程信息号
- 进程信号
信号 | 注释 |
---|---|
1 | 重新加载系统配置文件(不停服,source) |
2 | 清空内存中的进程数据 |
3 | 清空内存中的鼠标(Ctrl+\ ) |
9 | 强行结束进程(不会被阻塞) |
15 | 正常关闭进程(会被阻塞) |
18 | 运行被暂停的进程 |
19 | 暂停进程(不会被阻塞) |
20 | 暂停进程(会被阻塞) |
2. 进程信号控制工具
kill 进程信号 进程号
kill -9 21393
结束进程21393
killall 进程信号 进程名称
killall -9 vim
结束所有的vim进程
pkill 进程信号 用户名称
pkill -u username
结束该用户的所有进程(只会留下一个该用户的终端)
pkill -u -9 username
结束该用户的所有进程
systemd守护进程
-
实验环境:2台主机(或是虚拟机)
-
守护进程:帮助内核处理事务的助手
-
ssh -l username IP地址
远程连接主机 -
systemctl 命令用法
命令 | 注释 |
---|---|
start | 开启 |
status | 查看状态 |
stop | 关闭 |
reload | 重新加载 |
restart | 重新启动服务 |
enable | 设定服务开机启动 |
enable --now | 设定服务开启并当前开启服务 |
disable | 设定服务开启不启动 |
list-units | 查看系统所有服务当前的状态 |
list-units-files | 查看服务开机状态 |
list-dependencies | 列出服务依赖性 |
mask | 冻结服务 |
unmask | 解锁 |
set-default | 设定系统运行模式 |
get-default | 查看系统运行模式 |
systemctl status sshd
查看状态
systemctl stop sshd
关闭
systemctl start sshd
开启守护进程
systemctl disable sshd
设定守护进程开机不启动
systemctl enable sshd
设定守护进程开机启动
systemctl mask sshd
冻结
systemctl unamsk sshd
解锁
系统中的登录审计
命令 | 注释 |
---|---|
w | 显示正在登录系统的账号 |
w -i | 显示登陆来源(var/run/utmp) |
last | 显示曾经登录成功并已经退出的账号 (/var/log/wtmp) |
lastb | 显示曾经试图登录但未成功的账号(var/log/btmp) |
w
last
lastb