Linux下的进程管理

一、什么是进程

1.通俗来讲,进程就是指计算机中正在运行的程序的实例,而进程既可以是程序代码,也可以是数据,还可以是系统资源等等。

2.每个进程都有自己独立的内存空间和系统资源,每个进程都拥有自己的执行上下文,而进程之间也可以通过操作系统提供的机制进行通信。

二、进程的状态

1.进程可大致分为五个状态

R(TAKS_RUNNING)                         可执行态(running,ready)

S(TASK_INTRRUPTABLE)               可唤醒休眠

D(TASK_UNINTRRUPTABLE)          不可唤醒休眠 

T(TASK_STOP)                                 暂停状态

Z(TASK_zombie)                               僵死态

三、进程查看的方法

1.如何在图形中查看进程

打开

会发现类似于Windows的任务管理器

也可以利用代码来打开比如

 2.常用的进程查看的命令

2.1首先是ps的命令,如下

ps 进程查看                

ps 命令的三种执行风格:bsd unix GNU

ps后加上               

a 与终端相关的进程(当用户登陆系统后产生的进程都是带终端的)                

x 与终端无关相关的进程                

u 用户信息归类的查看方式              

 f 进程层级关系                

o 显示指定参数                 

   pid comm nice pri pcpu ppid stat,user,group                

-e 显示所有进程                

-f 显示信息的完整格式              

-H 显示进程的层级结构                

-o 显示指定参数              

--sort=

ps ax显示信息如下(显示所有的进程):

其中有以下元素               

PID 进程id                

TTY 进程用到的终端              

STAT 进程状态                

TIME 进程占用cpu的总时长                

COMMAND 进程名称

ps aux显示信息如下(即进程的所有者的信息):

其中有一些元素               

USER 进程所有人                

PID 进程id                

%CPU 进程使用cpu的用量                

%MEM 进程所用到的内存用量                

VSZ 进程使用的虚拟内存大小                

RSS 进程常驻内存中的数据大小                

TTY 进程用到的终端                

STAT 进程状态                

START 进程运行时长                

TIME 进程占用cpu时长              

COMMAND 进程名称

其中,特别的,ps axo后输入你想看的内容则其只会显示出你输入的内容

如ps axo pid,%mem等

例,怎么找出系统内存占用量排在前五的,从大到小

命令:ps axo pid,%mem --sort=-%mem | tail -n 5 |tac

2.2pgrep的命令(用来过滤进程),如下:

pgrep后加上

-u uid 显示指定用户进程              

-U user 显示指定用户进程                

-t tty 显示指定终端进程              

-l 显示进程名称                

-a 显示进程的完整名称                

-P 进程的子进程

2.3pidof命令,是用来查看vim的pid

接着是动态进程的查看

top命令,如下

top后加上

-d 指定刷新频率                  

-b 以批次方式显示                  

-n 指定显示的批次数量

单独的top命令后会显示以下内容

其中每个元素分别代表以下

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中的内容显示信息:

14:27:23 系统时间                  

up 1:00 运行时长                  

2 users 系统中有两个用户登陆                  

load average: 0.20, 0.05, 0.02                                                          

Tasks: 337 total 任务总量       1 running 正在运行           336 sleeping 休眠人物数量                      0 stopped 被暂停数量                   0 zombie 僵死人物数量

%Cpu(s)              0.3 us 用户空间                   0.5 sy 内核空间                   0.0 ni nice值调整时间    98.7 id 空闲时间                   0.0 wa 等待io时间                   0.5 hi 处理硬件中断时间                   0.0 si 处理软件中断时间                   0.0 st 被偷走的时间(vm使用时间)                                   MiB Mem :7653.6 total, 总量    5742.6 free 空闲   1414.5 used 占用         770.7 buff/cache 缓存 

top内部指令:                   

P cpu排序                  

M 内存排序                  

T 累计占用cpu时间排序                  

l 关闭/开启uptime信息                    

t 关闭/开启cpu&task                  

s 指定刷新频率                  

k 操作进程                  

u 查看指定用户进程

四、进程的前后台调用

1.首先是命令,如下:

ctrl+z 把占用shell的进程打入后台挂起

bg 把后台挂起的进程运行起来

fg 把后台进程调回前台

命令&   运行进程在后台

jobs 查看当前shell中在后台的所有工作

五、进程的优先级

 1.每个进程都有一个优先级(priority)值,它决定了进程在系统中的调度顺序。简单讲。就是哪个重要就要先优先哪个,则给他优先级高。优先级越高的进程就越先被调度执行。

2.优先级的种类 分为:

2.1静态优先级:由用户或管理员在进程启动时或运行中手动设置,范围为 -20 (最高优先级)到 19 (最低优先级),数值越小优先级越高。

2.2 动态优先级:由内核根据进程的运行状态(如 CPU 使用时间、睡眠时长等)自动调整,以平衡系统资源分配。

3.静态优先级的命令,如下:

首先是优先级的范围,为范围: 0--139   内核自控优先级范围:0-99    用户可控优先级:100-139

其次是命令

nice -n -5 cat            指定优先级打开进程

renice -n -5 进程号    更改优先级

在这里可以调节优先级高低

nice值越负数,则优先级更高

 可以利用watch -n 1 "ps ax -o pid,comm,nice,pri | grep gedit"来监控,使用命令更改优先级是就可以及时的观察。

注:必须要有进程在运行才可以监控其优先级

六、进程信号使用

1.进程信号的主要几个元素,如下:

SIGHUP 1     终止进程 终端断开连接时发送给与该终端关联的进程,常用于重新加载配置文件

SIGINT   2     终止进程 用户在终端按下 Ctrl+C 时发送给当前前台进程

SIGQUIT 3    终止进程并生成核心转储文件用户在终端按下 Ctrl+\ 时发送给当前前台进程

SIGTERM 15 终止进程 通常用于请求进程正常终止,是系统默认的终止信号

SIGKILL 9      强制终止进程不能被捕获、阻塞或忽略,用于强制终止无法正常响应的进程

SIGCONT 18 继续执行暂停的进程        用于恢复被暂停的进程

SIGSTOP 19 暂停进程 不能被捕获、阻塞或忽略,用于暂停进程的执行

SIGSTOP 20 暂停进程 可以被捕获、阻塞或忽略,用于暂停进程的执行

2.信号的特点

2.1可捕获、阻塞和忽略:像 SIGHUP 、 SIGINT 、 SIGTERM 这类信号,进程可以编写相应的信号处理 函数来捕获它们,也可以选择阻塞(暂时不处理)或者忽略这些信号。

2.2不可捕获、阻塞和忽略: SIGKILL 和 SIGSTOP 信号比较特殊,进程无法对其进行捕获、阻塞或忽 略操作,这保证了在必要时可以强制终止或暂停进程。

3.进程信号命令,如下:

kill 进程信号 pid 处理精确指定的进程

killall 进程信号 进程名字 按照进程名称批量处理进程

pkill 进程信号 进程条件     按照条件处理进程

先建立多个vim,利用killall -9 进程名字来处理完全部vim

 

再例如

用pkill命令 

 七、systemd守护进程

1.Systemd 是 Linux 系统中新一代的初始化系统(init system),它旨在替代传统的 SysVinit 和 Upstart 等初始化系统,除此之外,Systemd还提供了一套强大的工具和机制,用于管理系统的启动、服务的管理、资源的分配等。它的 设计目标是提高系统的启动速度、简化服务管理、增强系统的可靠性和可维护性。

2.守护进程特点

在后台运行:守护进程不会占用终端,不会受到用户登录或注销的影响,持续在后台执行任务。

生命周期长:一般从系统启动开始运行,直到系统关闭才停止,为系统提供长期稳定的服务。

无控制终端:守护进程没有控制终端,不会接收来自终端的输入,也不会将输出显示在终端上。

自成进程组和会话:守护进程通常会创建自己的进程组和会话,以确保独立于控制终端和其他进 程。

 3.systemd守护进程命令

systemctl后加上

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 查看系统运行模式      系统运行模式     0-6        0 关机       1 单用户模式        2 无图形网络模式           3 无图形网络模式               4 无图形网络模式                5 图形网络模式                 6 重启

我们可以通过这个命令来查看现在的默认启动级别是什么 

我们也可以通过这个命令来看runlevel处于哪个启动级别

我们可以利用init后加上数字来更改启动级别

 例如,init3进入到以下无图形界面

我们也可以利用 

来更改默认的启动级别 

 我们也可以在开机界面

按e进入编辑模式

 

在quiet后加上想要更改的启动级别数字去更改 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值