Linux下的进程管理
进程定义
-
定义
- 程序是静态的代码文件
- 进程是指程序运行时的形态
- 进程是程序的一个副本
- 进程是有生命周期的(准备期,运行期,终止期)
-
进程&线程
- 进程是资源调用的最小单位
- 线程是进程的最小单位
-
进程的状态
- R(TASK_RUNNING) #可执行态(running,ready)
- S(TASK_INTRRUPTABLE) #可唤醒休眠
- D(TASK_UNINTRRUPABLE) #不可唤醒休眠
- T(TASK_STOP) #暂停状态
- Z(EXIT_ZOMBIE) #僵死态
进程的查看方式
-
gnome-system-monitor #图形进程查看工具
-
ps #进程查看
##进程查看有三种风格unix,bsd,GNU命令 作用 ps a 查看与终端相关的进程(当用户登录系统后产生的进程都是带终端的) ps x 与终端无关的进程 ps u 用户信息递归的查看方式 ps f 显示进程的层级关系 ps o 显示指定参数(user,pid,tty,comm,nice,stat,pri,%cpu,ppid) ps -e 显示所有进程 ps -f 显示信息的完整格式 ps -H 显示进程的层级结构 ps -o 显示指定参数 ps --sort= 以一定方式的正序显示 -
ps -ax #显示的信息如下
[1] PID:进程id
[2] TTY:进程用到的终端
[3] STAT:进程状态
[4] TIME:进程占用cpu时长
[5] COMMAND:进程名称 -
ps -aux#显示信息如下
[1] USER:进程所有人
[2] PID:进程id
[3] %CPU:进程所用cpu用量
[4] %MEM:进程所用内存用量
[5] VSZ:进程所用虚拟内存用量
[6] RSS:进程常驻内存中的数据大小
[8] TTY:进程所用到的终端
[9] STAT:进程状态
[10] START:进程所用时长
[11] COMMAND:进程名称 -
pgrep #进程过滤
参数 作用 pgrep -u uid 显示指定用户进程 pgrep -U USER 显示指定用户进程 pgrep -t tty 显示指定终端进程 pgrep -l 显示进程名称 pgrep -a 显示进程完整名称 pgrep -P pid 显示该进程下的子进程id -
pidod vim #查看vim进程id
-
top #动态进程查看
##top中的内容显示图片内容 表示信息 14:48:14 系统时间 up 1:06 运行时长 load average:0.36,0.39,0.22 三个数分别代表不同时间段的系统平均负载(一分钟、五 分钟、以及十五分钟) 397 total 任务总量 4 running 正在运行的个数 393 sleeping 休眠进程的数量 0 stopped 被暂停进程数量 0 zombie 僵死进程的数量 18.2 us 用户空间 3.0 sy 内核空间 0.0 ni nice值调整时间 76.8 id 空闲时间 0.0 wa 等待io时间 1.7 hi 处理硬件中断时间 0.3 si 处理软件中断时间 0.0 st 被偷走的时间 MiB MEM:1806.1total 内存分区的总量 100.4free 内存分区的空闲 1074.7 used 被占用的总量 631.0 buff/cache 缓存 MiB Swap 交换分区用量(后面的数据和内存分区的表示是一样的) ##top命令的参数
-
top -d 数字 #指定刷新频率(默认是3秒)
-
top -b #以批次的方式显示
-
top -n 数字 #指定显示批次的数量
##top命令内部的参数
top命令内部指令 | 作用 |
---|---|
P | 根据CPU使用的百分比进行排序 |
M | 根据内存排序 |
T | 累计占用CPU时间排序 |
l | 关闭/开启uptime信息 |
t | 关闭/开启cpu&task |
s | 指定刷新频率 |
k | 对进程进行操作 |
u | 查看指定用户进程 |
进程优先级
作用:系统是多任务多用的操作模式,任务的重要性是有区分的,通过优先级来确定任务的重要性
“优先级”(PRI越小,优先级优先级就越高)
范围 :0-139
内核自控优先级范围:0-99
用户可控优先级:100-139
nice:-20~19
-
renice -n nice pid #更改指定进程的优先级
-
nice -n nice 打开一个进程的命令 #指定优先级打开进程
进程状态显示
显示 | 意义 |
---|---|
S | sleeping |
< | 优先级高 |
s | 顶级进程 |
T | stop进程 |
N | 优先级低 |
R | 正在运行的进程 |
+ | 运行在前台 |
进程的前后台调用
-
<ctrl>+<z> #把占用shell的进程打入后台挂起(不可以对后台的进程进行操作)
-
bg #把后台挂起的进程运行起来
-
fg #把后台进程调回前台
-
& #将进程打入后台运行(可以对后台的进程进行操作)
-
jobs #查看当前shell中在后台的所有进程
进程信息号
-
进程信号:
数字 意义 1 重新加载在系统配置文件(source) 2 清空内存中的进程数据 3 清空内存中的鼠标(ctrl+\) 9 强行结束进程(不能被堵塞) 15 正常关闭进程(可能会被堵塞) 18 运行被暂停的进程 19 暂停进程(不会被堵塞) 20 暂停进程(会被堵塞) -
进程信号控制工具
-
kill -进程信号 pid #对进程号为pid的进程进行操作
-
killall -进程信号 进程名字 #对同一类的进程进行操作
-
pkill -进程信号 进程条件 #对某一进程条件进行操作
-
systemd守护进程
-
systemctl命令的用法
命令 作用 systemctl strat 开启服务 systemctl stop 关闭服务 systemctl status 查看服务的状态 systemctl reload 重新加载服务 systemctl restart 重新启动服务 systemctl enable 设定开机启动 systemctl enable --now 设定服务开机启动并当前开启服务 systemctl disable 设定服务开机不启动 systemctl list-units 查看系统所有服务当前状态 systemctl list-unit-files 查看服务开机状态 systemctl list-dependencies 列出服务依赖性 systemctl mask 冻结服务 systemctl set-default 模式 设定系统运行模式(无图形模式/有图形模式) systemctl get-default 查看系统运行模式(runlevel查看系统运行的模式数字化显示)
系统中的登录审计
-
w ##显示正在登陆系统的账号
##该信息储存在/var/run/utmp -
last ##显示登录成功现在已经退出的
##显示的信息放在/var/log/wtmp -
lastb ##显示试图登录但未成功的
##显示的信息放在/var/log/btmp