一、进程定义
一、进程的定义
1、程序是静态的代码文件
2、进程是指程序运行时的形态
3、进程是程序的一个副本
4、进程是有生命周期的准备期,运行期,终止期)
二、进程&线程
1、含义
进程是资源调用的最小单位
线程是进程的最小单位
2、处理方式
程序执行流是从上倒下贯穿运行的
当进程是多任务物,cpu是多核心,多任务应该同时被每个核心处理,每个核心处理的任务叫线程
线程资源是共享的.
三、进程状态
R(TAKS_RUNNING) | 可执行态(running,ready) |
---|---|
S(TASK_INTRRUPTABLE) | 可唤醒休眠 |
D(TASK_UNINTRRUPTABLE) | 不可唤醒休眠 |
T(TASK_STOP) | 暂停状态 |
Z(EXIT_ZOMBIE) | 僵死态 |
二、进程查看命令
gnome-system-monitor ##图形进程查看工具
一、ps 进程查看
1、命令
ps 命令的三种执行风格 | unix bsd GNU |
---|---|
a | 与终端相关的进程(当用户登陆系统后产生的进程都是带终端的) |
x | 与终端无关相关的进程 |
u | 用户信息归类的查看方式 |
f | 进程层级关系 |
o | 显示指定参数 pid comm nice pri pcpu ppid |
(注意ps a和ps -a都是同一种意思,只是执行的风格不一样)
查看与终端相关的进程
用用户信息归类的方式查看
2、ps ax显示信息如下:
PID | 进程id |
---|---|
TTY | 进程用到的终端 |
STAT | 进程状态 |
TIME | 进程占用cpu时长 |
COMMAND | 进程名称 |
3、ps aux显示信息如下:
USER | 进程所有人 |
---|---|
PID | 进程id |
%CPU | 进程使用cpu的用量 |
%MEM | 进程所用到的内存用量 |
VSZ | 进程使用的虚拟内存大小 |
RSS | 进程常驻内存中的数据大小 |
TTY | 进程用到的终端 |
STAT | 进程状态 |
START | 进程运行时长 |
TIME | 进程占用cpu时长 |
COMMAND | 进程名称 |
4、pgrep #进程过滤
-u uid | 显示指定用户进程 |
---|---|
-U user | 显示指定用户进程 |
-t tty | 显示指定终端进程 |
-l | 显示进程名称 |
-a | 显示进程的完整名称 |
-P | 下时进程的子进程 |
这里建议用管道符号过滤
5、pidof vim ##查看vim的pid
二、top动态进程查看
一、top的基本含义
top中的内容显示信息
09:48:51 | 系统时间 |
---|---|
up 18:54 | 运行时长 |
1 users | 系统中有一个用户登陆 |
load average: 0.75, 0.53, 0.41 | 分别对应1min 5min 15min需要加载的时间 |
Tasks的信息显示
105 | total 任务总量 |
---|---|
1 running | 正在运行 |
104 sleeping | 休眠进程数量 |
0 stopped | 被暂停数量 |
0 zombie | 僵死进程数量 |
Cpu(s)的信息
注:us+sy+id ≈ 100
0.0 us | 用户空间占用cpu的百分比(User Time) |
---|---|
0.0 sy | 系统占用cpu的百分比(System Time) |
100.0 id | 空闲cpu的百分百 |
0.0 ni | 优先级调整后的进程占cpu百分比 |
0.0 wa | 等待输入输出时间(Wait IO) |
0.0 hi | 处理硬件中断时间 |
0.0 si | 处理软件中断时间 |
0.0 st | 虚拟机(虚拟化技术)占用百分比(vm使用时间) |
MiB Mem
7664.6 total | 总量 |
---|---|
5383.9 free | 空闲 |
1312.1 used | 占用 |
968.8 buff/cache | 缓存 |
MiB Swap: 交换分区用量
二、top指令
-d | 指定刷新频率 |
---|---|
-b | 以批次方式显示 |
-n | 指定显示的批次数量 |
例如 |
top -d 1
top -b
top -n 10
三、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/100秒 |
COMMAND | 命令名/命令行 |
三、进程优先级
一、优先级定义
系统时多任务多用户的操作模式
任务的重要性是有区分的,如何确定任务的重要性,提出了优先级的概念
“优先级”
范围: 0--139
内核自控优先级范围:0-99
用户可控优先级:100-139
在linux中使用nice更改优先级
nice范围
-20到19
二、测试
设定cat优先级
方法1
renice -n -5 43331 重新设定更改设定cat优先级(程序已经开启的情况下)
方法2
nice -n -5 cat 图1、指定优先级打开进程(程序还没有打开)
ps ax -o pid,nice,comm | grep cat 图2、查看优先级
一、以方式1修改优先级
1、运行cat,并查看cat进程
[root@localhost Desktop] ps ax -o user,group,comm,pid,nice|grep cat
2、截图如下
目前的优先级为0
3、更改优先级
[root@localhost Desktop] renice -5 15784
4、结果
(优先级变为-5,变高了)
二、以方式2设定优先级
1、设定开启的优先级
2、优先级
三、ps的优先级和nice优先级的转换
ps ---- > pri :39~0 范围
nice -20~19 范围
priority 0~139 (100 ~139)
四、优先级参数解释
S | sleeping |
---|---|
R | running |
T | stop |
s | 顶级进程 |
< | 优先级高 |
N | 优先级底 |
+ | 运行在前台 |
四、进程前后台调用
一、指令
ctrl+z | 把占用shell的进程打入后台暂停,挂起 |
---|---|
bg | 把后台挂起的进程继续运行 |
fg | 把后台进程调回前台 |
& | 运行进程在后台 |
jobs | 查看当前shell中在后台的所有工作 |
二、测试
实验:将cat程序打入后台,再调回运行
1、运行cat,调回后台
[root@localhost Desktop] cat
2、使用 ctrl+z调回后台
3、使用jobs查看
[root@localhost Desktop] jobs
此时表示停止状态
4、使用fg即可调回前台
[root@localhost Desktop] fg 1
三、进程信号
一、进程定义
1 | 重新家在系统配置文件(source) |
---|---|
2 | 清空内存中的进程数据 |
3 | 清空内存中的鼠标(ctrl+) |
9 | 强行结束进程(不能被阻塞) |
15 | 正常关闭进程(会被阻塞) |
18 | 运行被暂停的进程 |
19 | 暂停进程(不会被阻塞) |
20 | 暂停进程(会被阻塞的) |
四、进程控制信号
进程信号控制工具
kill 进程信号 pid
killall 进程信号 进程名字
pkill 进程信号 进程条件
可以直接杀死进程
五、systemd守护进程
一、实验
1、守护进程含义
(1)守护进程是替内核分担程序控管的程序,通常pid为1。
(2)在linux系统中,我们会发现在系统启动的时候有很多的进程就已经开始跑了,也称为服务,这也是我们所说的守护进程。
(3)守护进程是脱离于终端并且在后台运行的进程,脱离终端是为了避免在执行的过程中的信息在终端上显示,并且进程也不会被任何终端所产生的终端信息所打断。
2、实验环境
实验环境:
服务端ip:172.25.254.110 westosa
客户端ip:172.25.254.210 westosb
远程连接操作:ssh 主机ip -l 主机ip
3、systemctl命令
systemctl 管理系统服务
服务指在系统中开启的共享系统资源到网络中的程序
cs client ------ server
start | 开启 |
---|---|
stop | 关闭 |
status | 查看状态 |
reload | 重新加载 |
restart | 重新启动服务 |
enable | 设定服务开机启动 |
enable --now | 设定服务开机启动并当前开启服务 |
disable | 设定服务开启不启动 |
list-units | 查看系统所有服务当前状态 |
list-unit-files | 查看服务开机状态 |
list-dependencies | 列出服务依赖性 |
mask | 冻结服务 |
unmask | 解锁 |
set-default | 设定系统运行模式 |
multi-user.target | 无图形网络模式 |
graphical.target | 有图形的网络模式 |
get-default | 查看系统运行模式 |
例如
图1、开启
图2、重新加载
图3、查看依赖性
系统运行模式
0 | POWEROFF |
---|---|
1 | single |
2 | noG+NETWORK |
3 | |
4 | |
5 | G+NETWORK |
6 | REBOOT |
六、系统中的登陆审计
一、指令
w ##显示正在登陆系统的账号
-i 显示登陆来源
#/var/run/utmp
last ##登陆成功现在已经退出的
##/var/log/wtmp
lastb ##试图登陆但未成功
##/var/log/btmp
二、查看登陆来源以及登陆记录
1、在客户端(westos)输入w可以查看正在登陆用户
2、在客户端(westos)使用last查看登陆记录
3、查看未登录成功的用户
七、ssh连接vmware虚拟机
一、搭载远程控制实验环境(vmware模拟器)
1、在vmware虚拟器下开启两个用户
2、设置连接方式。右键点击用户,在设置里面选择桥接模式(两个用户都进行这样的操作)
3、设置局域网ip
先进行模拟服务器设置
输入下列命令,进入此窗口,选择下面的+号键
选择以太网连接,点击creat
选择下列选项
输入以下ip,(我是以172.25.254.100作为服务器端,你们可以选择用其他ip,保证前面172.25.254.xxx相同就行)完成客户端搭建
-
4、进行客户段口设计
前面设计完全相同,ip地址改为172.25.254.200
完成搭建(westos作为服务器id为172.25.254.100,westos1作为客户端口ip地址为172.25.254.200)
二、远程开启关闭联网桥接sshd
systemctl相当于我们的经理,发布各种指令
1、输入下列命令用客户端(westos1)连接服务器(westos),服务器的id为172.25.254.100
[root@localhost Desktop] ssh -l root 172.25.254.100
root@172.25.254.100's password:
##输入密码登陆
2、完成登陆
3、输入以下命令可以查看守护进程状态为开启状态
4、 输入以下代码,可以将联网桥接sshd连接关闭
5、 重启ssh桥接