Linux学习笔记基础-进程管理

进程管理

进程

什么是进程?

进程(Process)是一个可执行程序的运行实例,是程序的运行过程,动态的,有生命周期的运行状态。是分配资源的实体,是资源分配的基本单位。

进程的特性

动态性:进程是一个程序运行的实例,而系统中有许多程序,程序的运行是动态的,需要时开启,不需要时关闭。而进程是跟随程序的运行产生的,所以它会动态的产生,动态的消亡。 并发性:程序是可以多个同时运行的,所以进程也是如此,可以多个进程同时执行而互不影响 独立性:进程是可以独立运行互不影响的,同时也是系统分配资源的独立单位; 异步性:多个进程同时运行时,系统资源占用就会很高,为了节省资源空间,进程会在需要时运行,不需要是在后台休眠,即进程按各自独立的、不可预知的速度向前推进 结构特征:进程由程序、数据和进程控制块三部分组成

cpu中断:即计算机处于执行期间,系统内发生了非寻常或非预期的急需处理事件,CPU暂时中断当前正在执行的程序而转去执行相应的事件处理程序,处理完毕后返回原来被中断处继续执行。协程(异步):目的是节省资源空间。

线程

线程是什么?

线程是进程中一个控制序列,每个进程都最少有一个线程,线程是调度的基本单位。在linux中线程也是一个轻量级的进程。

进程与线程的区别

1,进程与进程之间资源是独立的,互不影响的,即使一个进程崩溃也不会影响另一个进程。而线程与线程之间大部分资源是共享的,一个线程崩溃会导致一个进程随之崩溃。

2,在多个进程中,因为同进程下的线程之间资源大部分是共享的,所以在进程与进程之间切换比线程与线程之间切换所花费的开销要大。

3,创建和销毁进程慢,创建和销毁线程则比之要快

4,进程与进程之间存在上下级关系(父进程与子进程),而线程与线程之间是平级关系

查看进程

查看静态进程

语法:ps aux

参数:

a:显示一个终端的全部进程

u:显示进程的归属用户及内存的使用情况

x:显示没有控制终端的进程

-l:以长格式显示更加详细的信息

-e:显示所有进程

-f:完整格式显示,显示进程之间的父子关系

ps -le 可以查看系统中所有的进程,而且还能看到进程的父进程的 PID 和进程优先级;

ps -ef 与-le相似

ps -l 只能查看当前shell产生的进程

image-20240428200431540

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

USER :进程所属用户

PID:进程id

%CPU:该进程占用cpu资源百分比

%MEM:该进程占用物理内存的百分比

VSZ:该进程占用虚拟内存的大小,单位为KB

RSS:该进程占用实际物理内存的大小,单位为KB

TTY :该进程在那个终端运行

tty1~tty7:代表本地终端,其中tty1~tty6是本地的字符界面终端,tty7是本地的图形化界面终端

pts/0~255:代表虚拟终端(也叫伪终端),一般为远程链接终端。

?表示没有占用终端

STAT:进程状态

-D:不可中断睡眠

-S:可中断睡眠 Sleep

-R:该进程正在运行

-T:停止状态,可能是在后台暂停或处于除错状态

-Z:僵尸状态,进程已经终止,但还有部分资源未回收导致部分进程任未终止

-l:多线程

-s:包含子进程

进程状态--了解 Sl 以线程的方式运行 Ss s进程的领导者,父进程 R+ +表示是前台的进程组 S< <优先级较高的进程 SN N优先级较低的进程

START:该进程的启动时间

TIME:该进程占用CPU的运算时间

COMMAND:产生该进程的命令

image-20240428203609848

[root@localhost ~]# ps -le F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD

表头代表意义表头代表意义
F进程标志,代表进程权限。1表示进程可以复制,但不能被执行,4表示进程使用超级用户权限NI进程的优先级,数值越小优先级越高,越早被cpu执行
S进程状态,与“ps aux”中的STAT状态一至ADDR该进程在内存的那个位置
UID运行此进程的用户IDSZ该进程占用多大的内存
PID此进程的IDWCHAH该进程是否在运行,'-'表示在运行
PPID该进程的父进程的IDTTY该进程由那个终端运行
C该进程占用CPU资源的百分比TIME该进程占用CPU的运算时间
PRI进程的优先级,数值越小优先级越高,越早被cpu执行CMD产生该进程的命令

查看pid

pgrep 进程名

pidof 进程名

image-20240428210038743

ps aux | grep 进程名

例:ps aux | grep sshd

#查看所有名字中包含sshd的进程

ps aux | grep sshd| grep -v grep

#与上一条命令相似,但可以过滤掉grep的进程信息,-v:不显示过滤内容(取反)

image-20240428210354038

查看端口

查看端口的命令:ss,netstat

查看端口是否被占用:lsof -i:$port #lsof需要安装,yum install lsof

参数详解:

-a 显示全部的进程 -u 显示udp -n 以数字的形式显示协议名称 -t tcp -p:显示进程的名称和pid -l :只显示正在被监听的端口

image-20240428211200162

<span style="background-color:#f8f8f8"><span style="color:#333333">Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name 
参数解释:
recv-Q:网络接收队列。表示收到的数据已经在本地接收缓冲,但是还有多少没有被进程取走,recv()如果接收队列Recv-Q一直处于阻塞状态,可能是遭受了拒绝服务 denial-of-service 攻击。
send-Q:网路发送队列。对方没有收到的数据或者说没有Ack的,还是本地缓冲区.如果发送队列Send-Q不能很快的清零,可能是有应用向外发送数据包过快,或者是对方接收数据包不够快。
Foreign Address:与本机端口通信的外部请求</span></span>

示例:lsof -i:22 #查看22端口是否被占用,22默认为sshd(远程连接服务)占用

image-20240428211458414

查看当前登陆的用户(也可以查看cpu的负载均衡):w

image-20240428212055760

<span style="background-color:#f8f8f8"><span style="color:#333333">21:20:30 up 1 day,  8:01,  1 user,  load average: 0.09, 0.06, 0.05
执行w的时间 虚拟机状态 虚拟机运行时间 当前有几个用户 CPU负载均衡:1分钟,5分钟,15分钟
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHA
用户名 终端信息 当前登录用户的主机名或IP地址 当前用户登陆的时间        当前进程的选项及参数
==============================================================================
计算cpu负载:load average的三个值: 0.09, 0.06, 0.05,分别除cpu的个数,得出的值,如果值大于1那么那时候的负载高。</span></span>
<span style="background-color:#f8f8f8"><span style="color:#333333">端口:
    http            80
    https           443
    mysql           3306
    redis           6379
    tomcat          8080
    nginx|httpd     80|443
    sshd            22
    mongo           27017
    php-fpm         9000
    mail            25|465</span></span>

查看当前用户登录的终端:tty

image-20240429134702405

查看动态进程

top #动态查看进程,每三秒刷新一次

htop #需要安装,yum install -y htop

[root@linux-server ~]# top h|? 帮助

往下翻页

< 往上翻页

M 按内存排序

P 按cpu排序

q 退出

z 彩色显示

w 保存


PR 优先级,数值越小优先级越高 VIRT 进程使用的虚拟内存总量,单位kb。 RES 进程使用的、未被换出的物理内存大小,单位kb。 SHR 共享内存大小,单位kb

image-20240429083915765

top命令的第一行与w命令的第一行十分相似,除了top第一行的第一个是top命令本身,还有第一行的其余项与w命令的一致

Tasks:任务

total:表示当前系统中存活的进程数

running:表示当前正在运行的进程数

sleeping:表示当前可中断休眠的进程数

stopped:表示当前已暂停的进程数

zombie:表示当前处于僵尸状态的进程数

%CPU(s):CPU使用率

us:用户态,用户空间占用cpu的百分比

sy:系统内核空间占用cpu的百分比

ni:niced 改变过优先级的进程占用cpu的百分比

id:cpu空闲率

wa:cpu等待硬盘写入,IO wait IO等待占用cpu的百分比

hi:硬中断(Hardware IRQ),处理硬件中断占用cpu的百分比

si:软终端(software),处理软件中断占用cpu的百分比

st:被虚拟化软件(hypervisor)偷取的cpu百分比,即 CPU 时间被虚拟化软件用于宿主机操作的百分比。

KiB Mem:内存状态

total:实际物理内存总量

free:可供使用的內存总量

used:正在被使用的内存总量

buff/cache:缓冲内存量

KiB Swap:交换分区

total:实际交换分区总量

free:可供使用的交换分区总量

used:正在被使用的交换分区总量

avail Mem :可交换分区总量

进程优先级 nice
<span style="background-color:#f8f8f8"><span style="color:#333333">nice 值越高:表示优先级越低,例如<span style="color:#981a1a">+</span><span style="color:#116644">19</span>,该进程容易将CPU 使用量让给其他进程。
nice 值越低:表示优先级越高,例如-20,该进程更不倾向于让出CPU。</span></span>

修改进程优先级

<span style="background-color:#f8f8f8"><span style="color:#333333">renice <span style="color:#0000cc">-n</span> <span style="color:#0000cc">-10</span>  pid</span></span>

进程控制

按进程pid杀死进程

<span style="background-color:#f8f8f8"><span style="color:#333333">语法:kill [信号] pid
kill -l #查看所有信号
常用信号:
-1  #重新加载进程或配置文件,pid不变
-9  #强制杀死进程
-15 #终止进程(可默认不写该信号)
-18 #激活进程
-19 #挂起进程</span></span>

进程状态解释--了解: +:表示运行在前台的进程 S+:休眠状态 T+:暂停,挂起状态 s:父进程

按进程名杀死进程

<span style="background-color:#f8f8f8"><span style="color:#333333">语法:pKill 进程名
例:pkill sleep #终止进程名为sleep的所有进程
例:pkill -9 sleep #强制杀死进程名为sleep的所有进程</span></span>

image-20240429131922823

作业控制

作业控制之jobs:

作业控制指的是控制正在运行的进程的行为。比如,用户可以挂起一个进程或者放到后台去运行,等一会儿再继续执行该进程。

<span style="background-color:#f8f8f8"><span style="color:#333333">语法:jobs #显示作业的状态。列出活动的作业。列出停止的作业。</span></span>

image-20240429132507220

<span style="background-color:#f8f8f8"><span style="color:#333333">#将在后台执行的作业移动到前台
语法:fg %工作号  </span></span>

image-20240429132710108

<span style="background-color:#f8f8f8"><span style="color:#333333">#将在前台执行的作业移动到后台
bg %工作号 #创建作业后,作业与前台执行,此时要CTRL+Z暂停进程,此时在输入bg命令
作业还未创建,但已知需要将作业移动至后台执行:
例:sleep 6000 &</span></span>

image-20240429133239741

作业控制拓展

将在前台执行的作业移动到后台,是工作中比较常用的,将作业放置后台执行时,即使远程链接的终端突然断开,改作业的进程也不会应此受到影响,提高了安全与稳定性。

除上面两种使用方法外,还有一种,如下:

<span style="background-color:#f8f8f8"><span style="color:#333333">语法:nohup sleep 作业 &
例:nohup java -jar demo.jar & 
#将启动 Java 程序的命令放置于后台执行,nohup.out 是 nohup 命令默认创建的文件,用于存储程序的输出,该文件在执行命令的工作空间下自动生成。</span></span>

常用命令

查看内存使用

<span style="background-color:#f8f8f8"><span style="color:#333333">free (选项)
常用选项:-m(以mb为单位显示) -g(以gb为单位显示,内存较少时该方式误差大)  -k(以kb为单位显示)</span></span>

image-20240429135156043

查看系统版本和内核版本

<span style="background-color:#f8f8f8"><span style="color:#333333">uname -a #显示全部信息
uname -r #只显示系统版本和内核版本
​
只局限于红帽(redhat)发行版的Linux系统
cat /etc/redhat-release
cat /etc/centos-release</span></span>

查看CPU负载

<span style="background-color:#f8f8f8"><span style="color:#333333">uptime,w,top</span></span>

image-20240429135746871

查看用户登陆历史和虚拟机重启记录

last #可以看到用户登录的历史记录,包括:用户名,登录的终端名,登录IP,登录的时间,还有重启的时间

lastlog #可以查看系统中已存在的用户(/etc/passwd)那些登陆过系统,包括:用户名,登录的终端名,登录IP,最后一次登录的时间。

image-20240429142222984

image-20240429142238780

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值