【Linux】系统进程管理
目录
1.什么是进程和线程
1.1进程
1.2线程
2.进程状态
3.进程的查看方法
3.1在图形界面查看进程
3.2在命令行查看进程
ps
ps命令练习
pgrep
pidof
top
4.进程的前后台调用
5.进程的优先级---nice,renice
6.进程信号--kill,killall,pkill
7.systemd守护进程---systemctl
1.什么是进程和线程
1.1进程
1. 进程是程序在操作系统中的一次执行过程,是系统进行资源分配和调度的基本单位。
2. 进程包含了程序执行所需的各种资源,如内存空间、文件描述符等。
3. 每个进程都有自己独立的内存空间和系统资源,不同进程之间相互隔离。
4. 程序是静态的代码文件,进程是指程序运行时的形态(调用系统资源将静态的代码文件运行起来)。
5. 进程是程序的一个副本。
6. 进程是有生命周期的(准备期,运行期,终止期);生命周期通常从安装开始,到最终被用户卸载结束。在这个过程中,它会经历不同的阶段,包括引导、运行、维护和再次引导。
1.2线程
1. 线程是进程中的一个执行单元,是 CPU 调度和分派的基本单位。
2. 一个进程可以包含多个线程,这些线程共享进程的内存空间和系统资源
3. 每个线程有自己独立的栈空间和程序计数器、
4. 线程之间可以并发执行,提高程序的执行效率
5. 当进程是多任务,cpu是多核心,多任务应该同时被每个核心处理,每个核心处理的任务叫线程
2.进程状态
为了弄明白正在运行的进程是什么意思,我们需要知道进程的不同状态。一个进程可以有几个状态(在Linux内核里,进程有时候也叫做任务)。
1.R(TAKS_RUNNING)可执行态(running,ready)
2.S(TASK_INTRRUPTABLE)可唤醒休眠
3.D(TASK_UNINTRRUPTABLE)不可唤醒休眠
4.T(TASK_STOP)暂停状态
5.Z(TASK_ZOMBIE)僵死态
3.进程的查看方法
3.1在图形界面查看进程
gnome-system-monitor //在命令行中打开图形中的进程工具
3.2在命令行查看进程
ps
---进程状态查看
ps具有三种命令的执行风格
unix //ps命令的参数跟- 例如 ps -e ,ps -o
bsd //ps命令不用跟- ,例如 ps ax ,ps aux
GUN //长参数
--------------------------------------------------------------------------------------------------------------
ps参数
a
//与终端相关的进程
x
//与终端无关的进程
ps ax //查看所有进程信息
u
//使用用户信息归类的查看方式
f
//进程层级关系
o
//显示指定参数
pid comm nice pri pcpu ppid stat user group %mem %cpu
【使用部分参数来验证】
-e
//显示所有进程,相当于bsd风格的ps ax
-f
//显示信息的完整格式
-H
//显示进程的层级结构,相当于bsd风格的ps f,与之不同的是使用缩进
-o
//与bsd风格的ps o 作用一摸一样,显示指定参数
--sort=
//对进程进行排序 ,=后面跟的是依据什么参数继续排序,=后跟“-”进行倒序
ps命令练习
问题:使用ps查看内存使用量排前五的进程的pid
pgrep
//进程过滤
pgrep参数
-u
//u 后面跟所要过滤出来进程的uid
-U
//U 后面跟的是进程名
-t
//tty显示指定终端进程
-l
//显示进程名称
-a
//显示进程的完整名称
-P
//显示进程的子进程
pidof
pidof vim
//查看vim的pid
top
//动态进程查看
------------------------------------------------------------------------------------------------------------------------------
top参数
-d
//指定刷新频率
top -d 0.1 //默认为3s
-n
//指定显示的批次数量,次数结束就不刷新
top -d 1 -n 2 //在刷新频率为1s/次的情况下,刷新两次就不刷新
-b
//不显示系统信息,只显示进程信息
top -b
-------------------------------------------------------------------------------------------------------------------------
top内部命令
//在top界面键盘输入对应的字母就会排序一次
P
//cpu排序
M
//内存排序
T
//累计占用cpu时间排序
-------------------------------------------------------------------------------------------------------------------------
l
//关闭/开启uptime信息
t
//关闭/开启cpu&task
s
//指定刷新频率
k
//操作进程
u
//查看指定用户进程
4.进程的前后台调用
<ctrl> + <z> //把占用shell的进程打入后台挂起
bg //把后台挂机的进程运行起来
fg //把后台进程调回前台
命令& //运行进程在后台
jovs //查看当前shell中在后台的工作
5.进程的优先级---nice,renice
进程优先级是 Linux 内核用于决定 CPU 资源分配的关键指标,优先级越高的进程越有可能被 CPU 优先调度执行。
优先级范围值:
#范围: 0--139
#内核自控优先级范围:0-99
#用户可控优先级:100-139
linux的优先级对应用户优先级为----nice值
-20-19
unix的优先级对应用户优先级为----pri值
0-39
更改优先级
nice
//指定优先级打开进程
renice
//更改优先级
6.进程信号--kill,killall,pkill
进程信号有0-31种
其中以下的是可控的,其他为不可控
7.systemd守护进程---systemctl
systemctl status firewalld //查看进程状态,以火墙为例
systemctl stop firewalld //关闭当前状态
systemctl start firewalld //启动当前状态
systemctl disable firewalld //禁止开机启动
systemctl enble firewalld //开启开机启动
systemctl disable --now firewalld //禁止当前与开机的状态
systemctl enable --now firewalld //禁止当前与开机的状态
systemctl list-units //查看系统所有服务的当前状态
systemctl list-unit-files //查看系统服务开机的状态
systemctl list-dependencies //列出系统服务依赖性,启动服务所依赖的服务
systemctl mask firewalld //冻结服务
systemctl unmask firewalld //解冻
systemctl get-default //查看系统运行模式
系统运行模式有6种,0-6
#0-6
#0 关机
#1 单用户模式
#2 无图形网络模式
#3 无图形网络模式
#4 无图形网络模式
#5 图形网络模式
#6 重启
runlevel //查看系统运行模式的数字
init //设置当前状态的系统运行模式
systemctl set-default 系统运行模式 //设定系统运行模式
#multi-user.target 无图形网络模式
#graphical.target 有图形的网络模式
当不小心把默认系统模式设置为runlevel6.target后
在初始化界面按“e”
如图运行就能恢复为有图形的系统模式了