一、进程和线程
程序执行流是从上到下贯穿运行的,当进程是多任务物,cpu是多核心,多任务应该同时被每个核心处理,每个核心处理的任务叫线程线程,线程的资源是可以共享的,而进程是不可以共享的。
1、进程定义
#程序是静态的代码文件;
#进程是指程序运行时的形态;
#进程是程序的一个副本;
#进程是有生命周期的(准备期,运行期,终止期);
#进程是资源调用的最小单位
2、线程定义
#线程是进程的最小单位
3.进程状态
进程状态表示 | 含义 |
---|---|
R(TASK_RUNNING) | 可执行态(running,ready) |
S(TASK_INTRRUPTABLE) | 可唤醒休眠 |
D(TASK_UNINTRRUPABLE) | 不可唤醒休眠 |
T(TASK_STOP) | 暂停状态 |
Z(EXIT_ZOMBIE) | 僵死态 |
二、进程查看
1、鼠标查找
2、命令查看
- gnome-system-monitor ##图形进程查看工具
- ps ##进程查看
##ps 命令含有三种风格,分别是UNIX,BSD,GUN。可以使用man ps命令查看:
命令 | 作用 |
---|---|
ps a | 查看与终端相关的进程(当用户登录系统后产生的进程都是带终端的) |
ps x | 与终端无关的进程 |
ps u | 用户信息递归的查看方式 |
ps f | 显示进程的层级关系 |
ps o | 显示指定参数(user(用户),pid(pid号),tty(终端),comm(进程命令),nice(nice号),stat(状态),pri(优先级),%cpu(cpu的使用),ppid(父进程的pid) |
ps -e | 显示所有进程 |
ps -f | 显示信息的完整格式 |
ps -H | 显示进程的层级结构 |
ps -o | 显示指定参数 |
ps - -sort | 按照指定的条件进行排序 %cpu 或 %mem 等,只能排序一个参数 |
- ps ax显示信息如下
参数 | 含义 |
---|---|
PID | 进程id |
TTY | 进程用到的终端 |
STAT | 进程状态 |
TITME | 进程占用cpu时长 |
CIOMMAND | 进程名称 |
- ps aux显示信息如下
参数 | 含义 |
---|---|
USER | 进程所有人 |
PID | 进程id号 |
%CPU | 进程使用CPU的用量 |
%MEM | 进程所用到的内存用量 |
VSZ | 进程所用虚拟内存大小 |
RSS | 进程常驻内存中的数据大小 |
TTY | 进程所用到的终端 |
STAT | 进程状态 |
START | 进程运行时长 |
TIME | 进程占用cpu所用时长 |
COMMAND | 进程名称 |
- pgrep ##进程过滤
命令 | 作用 |
---|---|
pgrep -u uid | 显示指定用户进程 |
pgrep -U USER | 显示指定用户进程 |
pgrep -t tty | 显示指定终端进程 |
pgrep -l | 显示进程名称 |
pgrep -a | 显示进程完整名称 |
pgrep -P pid | 显示该进程下的子进程id |
- pidof vim ##查看vim的pid
- top ##动态进程查看
以上top查询到的参数说明:
参数 | 含义 |
---|---|
17:59:13 | 系统时间 |
up 8:39 | 运行时长 |
1 user | 系统用户数量为1个 |
load average 0.09,0.27,0.20 | 三个数分别代表不同时间段的系统平均负载(1min、5min、以及10min) |
320 total | 任务总量 |
3 running | 正在运行的个数为3 |
317 sleeping | 休眠进程的数量为4 |
0 stopped | 被暂停进程数量为0 |
0 zombie | 僵死进程的数量为0 |
%Cpu(s) | cpu占用情况 |
5.4us | 用户空间 |
1.3sy | 系统空间 |
0.0 | nice值调整时间 |
92.6id | 空闲时间 |
0.0wa | 等待io时间 |
0.3hi | 处理硬件中断时间 |
0.3si | 出路软件中断时间 |
0.0st | 被偷走的时间(vm使用时间) |
MiB Mem 1800.6 | 内存分区的总量 |
115.3 free | 内存分区的空闲 |
1283.8 used | 被占用的总量 |
401.6 buff/cache | 缓存 |
MiB Swap | 交换分区用量(后面的参数与内存分区的表示是一样的) |
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/100秒 |
COMMAND | 命令名/命令行 |
##top命令执行后的内部参数
命令 | 作用 |
---|---|
P | CPU排序 |
M | 内存排序 |
T | 累计占用cpu时间排序 |
l | 关闭/开启uptime信息 |
t | 关闭/开启cpu&task |
s | 指定刷新频率 |
k | 操作进程 |
u | 查看指定用户进程 |
-
top -d 数字 ##指定刷新频率(默认刷新频率是3秒)
-
top -b ##以批次方式显示
-
top -n 数字 ##表示以指定显示的批次数量显示
三、进程优先级
系统是多任务多用的操作模式,任务的重要性是有区分的,通过优先级来确定任务的重要性
“优先级”(PRI越小,优先级优先级就越高)
优先级的范围 :0-139
内核自控优先级范围:0-99
用户可控优先级:100-139
nice数优先级的范围:-20~19
- renice -n nice pid ## 更改指定进程的优先级
- nice -n nice pid ## 以指定优先级打开进程
进程优先级的三种表示分别为pri、nice、priority,三种表示相互对应:
表示方法 | 数字等级 |
---|---|
ps–>pri | 39-0 |
nice | 20-19 |
priority | 0-139(用户可更改的为100-139) |
进程的状态显示:
显示字母 | 代表含义 |
---|---|
S | sleeping |
< | 优先级高 |
s | 顶级进程 |
T | stop进程 |
N | 优先级低 |
R | 正在运行的进程 |
+ | 运行在前台 |
四、进程的后台调用
-
< ctrl >+< z > ## 把占用shell的进程打入后台挂起(进入后台后,不可以对后台的进程进行操作)
-
bg ## 把后台挂起的程序运行起来(可以对进程进行操作)
-
fg ##把后台进程调回前台
-
& ##将进程打入后台运行(可以对后台的进程进行操作)
- jobs ##查看当前shell中在后台的所有进程
五、进程信息号
1、进程信号
进程信号 | 数字含义 |
---|---|
1 | 重新加载在系统配置文件(source) |
2 | 清空内存中的进程数据 |
3 | 清空内存中的鼠标(ctrl+\) |
9 | 强行结束进程(不能被阻塞) |
15 | 正常关闭进程(可能会被阻塞) |
18 | 运行被暂停的进程 |
19 | 暂停进程(不会被阻塞) |
20 | 暂停进程(会被阻塞) |
2、进程信号控制工具
- kill -进程信号 pid ##对进程号为pid的进程进行相应的进程操作
- killall -进程信号 进程名字 ##对同一类的进程进行操作
pkill -进程信号 进程条件 ##对某一进程条件进行操作
六、systemd守护进程
systemdctl命令的用法:
命令 | 用法 |
---|---|
start | 开启 |
stop | 关闭 |
status | 查看状态 |
reload | 重新加载 |
restart | 重新启动服务 |
enable | 设定服务开机启动 |
enable --now | 设定服务开机启动并当前开启服务 |
disable | 设定服务开机不启动 |
list-units | 查看系统所有服务当前状态 |
list-unit-files | 查看服务开机状态 |
list-dependencies | 列出服务的依赖性 |
mask | 冻结服务 |
unmask | 解冻服务 |
set-default | 设定系统运行模式 |
get-default | 查看系统运行模式 |
- get-default ##查看系统运行模式(0-6)
模式 | 功能 |
---|---|
0 | POWEROFF(关机) |
1 | single(单机模式) |
2 | noG+NETWORK(无图形的网络模式) |
3 | noG+NETWORK |
4 | noG+NETWORK |
5 | G+NETWORK(有图形的网络模式 ) |
6 | REBOOT(重启) |
七、系统中的审计登录
-
w ##显示正在登录的系统账号( /var/run/utmp)
-
w -i ##显示登录来源
-
last ##登陆成功现在已经退出的(/var/log/wtmp)
-
lastb ##试图登录但未成功(/var/log/btmp)
-
puttyt ##登录失败