一.进程
1.进程
程序是静态的代码文件
进程是指程序运行时的形态
进程是程序的一个副本
进程是有生命周期的(准备期,运行期,终止期)
2.进程和线程
进程是资源调用的最小单位
线程是进程的最小单位
程序执行流是从上到下贯穿运行的
当进程是多任务,cpu是多核心,多任务应该同时被每个核心处理,每个核心处理的任务叫线程,线程资源是共享的。
3.进程的状态
进程状态 | 状态 |
---|---|
R(TASKS_RUNNING) | 可执行状态(running,ready) |
S(TASK_INTRRUPTABLE) | 可唤醒休眠 |
D(TASK_UNINTRRUPTABLE) | 不可唤醒状态 |
T(TASK_STOP) | 暂停状态 |
Z(EXIT_ZOMBIE) | 僵死态 |
二.进程查看命令
gnome-system-monitor #图形进程查看工具
ps #进程的查看
- ps 命令的三种执行风格 unix bsd GNU
- bsd风格
命令 | Value |
---|---|
a | 与终端相关的进程 |
x | 与终端无关的进程 |
u | 用户信息归类的查看方式 |
f | 进程层级关系 |
o | 显示指定参数 后跟pid,comm,nice,pri,papu,ppid,stat,user,group |
- unix风格
命令 | Value |
---|---|
-e | 显示所有进程(相当于上面的ax) |
-f | 显示信息的完整格式 |
-eH | -H |
-o | 显示指定参数 |
–sort= | 排序(GNU风格) |
ps ax -o %mem,comm --sort= -%mem | less #根据内存倒序排序,去掉-就是正序排序
- ps ax显示信息如下
显示 | Value |
---|---|
PID | 进程id |
TTY | 进程用到的终端 |
STAT | 进程状态 |
TIME | 进程占用cpu时长 |
COMMAND | 进程名称 |
- ps aux显示信息如下:
显示 | Value |
---|---|
USER | 进程所有人 |
PID | 进程id |
%CPU | 进程所使用cpu的用量 |
%MEM | 进程所用到的内存用量 |
VSZ | 进程使用的虚拟内存大小 |
RSS | 进程常驻内存中的数据大小 |
TTY | 进程用到的终端 |
STAT | 进程状态 |
START | 进程运行时长 |
TIME | 进程占用cpu时长 |
COMMAND | 进程名称 |
- pgrep进程过滤
命令 | Value |
---|---|
pgrep -u uid | 显示指定用户进程 |
pgrep -U user | 显示指定用户进程 |
pgrep -t tty | 显示指定终端进程 |
pgrep -l user | 显示进程名称 |
pgrep -a user | 显示进程的完整名称 |
pgrep -P PID | 进程的子进程 |
-
pidof bash查看bash的pid
-
top
top
内部命令:
命令 | 功能 |
---|---|
P | CPU排序 |
M | 内存排序 |
T | 累计cpu时间排序 |
l | 关闭/开启 uptime信息 |
t | 关闭/开启cpu&task |
s | 指定刷新频率 |
k | 操作进程 |
u | 查看指定用户进程 |
#PID 进程id
#USER 进程所有者的用户名
#PR 优先级
#NI nice值,负值表示高优先级,正值表示低优先级
#VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
#RES 进程使用的、未被患处的物理内存大小,单位kb。RES=CODE+DATA
#SHR 共享内存大小,单位kb
#S 进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)
#%CPU 上次更新到现在的CPU时间占用百分比
#%MEM 进程使用的物理内存百分比
#TIME+ 进程使用的CPU时间总计,单位1/100s
#COMMAND 命令名/命令行
三.进程优先级
系统是多任务多用户的操作模式
任务的重要性是有区分的
如何确定任务的重要性
“优先级”
范围:0-139
内核自控优先级:0-99
用户可控优先级:100-139
nice:-20-19
renice -n -5 43331 #更改优先级
nice -n -5 vim & #指定优先级打开进程
ps—>pri----0-39
nice----------20-19
priority------0-139(100-139)
value | 含义 |
---|---|
S | sleeping |
< | 优先级高 |
s | 顶级进程 |
T | stop |
N | 优先级低 |
R | running |
+ | 运行在前台 |
四.进程前后台调用
命令 | Value |
---|---|
ctrl+z | 把占用shell的进程打入后台挂起 |
bg | 把后台挂起的进程运行起来 |
fg | 把后台进程调回前台 |
& | 运行进程在后台 |
jobs | 查看当前shell中在后台的所有工作 |
五.进程信息号
1.进程信息号
数字 | Value |
---|---|
1 | 重新加载系统配置文件(source) |
2 | 清空内存中的进程数据 |
3 | 清空内存中的鼠标(ctrl+\) |
9 | 强行结束进程(不能被阻塞) |
15 | 正常关闭进程(会被阻塞) |
18 | 运行被暂停的进程 |
19 | 暂停进程(不会被阻塞) |
20 | 暂停进程(会被阻塞) |
2.进程信号控制工具
kill 进程信号 pid
killall 进程信号 进程名字
pkill 进程信号 进程条件
六.system守护进程
systemctl命令用法
命令 | Value |
---|---|
systemctl start ssh | 开启 |
systemctl stop ssh | 关闭 |
systemctl status ssh | 查看状态 |
systemctl reload ssh | 重新加载 |
systemctl restart ssh | 重新启动服务 |
systemctl enable ssh | 重新服务开机启动 |
systemctl enable --now ssh | 设定服务开机启动并当前开启服务 |
systemctl disable ssh | 设定服务开机不启动 |
systemctl list-units ssh | 查看系统所有服务当前状态 |
systemctl list-unit-files ssh | 查看服务开机状态 |
systemctl list-dependencies ssh | 列出服务依赖性 |
systemctl mask ssh | 冻结服务 |
systemctl unmask ssh | 解锁 |
systemctl set-default ssh | 设定系统运行模式(multi-user.target无图形网络模式;graphical-target有图形的网络模式) |
systemctl get-default ssh | 查看系统运行模式(0-6) |