linux简述进程

目录

进程

[一个正在运行的程序,一个程序运行至少要启动一个进程,主进程 子进程](#一个正在运行的程序,一个程序运行至少要启动一个进程,主进程 子进程)

[一个进程正常运行,至少要启动一个线程,主线程 子线程](#一个进程正常运行,至少要启动一个线程,主线程 子线程)

进程的生命周期:

进程状态产生的原因:

查看当前系统的进程

[ps aux (静态):](#ps aux (静态):)

[ps -ef (静态):](#ps -ef (静态):)

查看单个PID

[pidof :查找服务进程的pid号码](#pidof :查找服务进程的pid号码)

pgrep:检索进程pid号码

查看进程端口

查看正在监听的端口

动态查看进程

top:动态查看进程及内容使用情况

进程优先级nice

进程控制

kill:杀死指定的进程

pkill:进程名杀死指定进程

作业控制

jobs:


进程

计算机四大存储资源:磁盘资源、内存资源、cpu资源、网络资源

一个正在运行的程序,一个程序运行至少要启动一个进程,主进程 子进程
复制代码
速度:启动慢,结束慢
资源隔离
资源不共享
一个进程正常运行,至少要启动一个线程,主线程 子线程
复制代码
速度:启动快,结束快
资源共享
线程的损坏会影响进程
进程的生命周期:
复制代码
父进程复制自己的地址空间(fork)创建一个新的子进程结构
每个新进程分配一个,唯一的进程id(pid),满足跟踪安全之需
任何进程都可以创建子进程
所有进程都是第一个系统进程的后代
进程状态产生的原因:
复制代码
在多任务处理操作系统中,每个cpu(或核心)在一个时间节点上只能处理一个进程
在程序运行时,他对cpu时间和资源分配的要求会不断变化的,从而为进程分配一个状态
它随着环境的要求而改变

查看当前系统的进程

ps aux (静态):
a 只能查看系统里面运行的所有终端进程
u 显示进程拥有者
x 显示系统内所有进程
f 显示进程之间的父子关系
​
需要提前安装:yum -y install psmisc
pstree:展示进程之间的父子关系
​
ps aux | grep 进程名      //查看指定进程的pid
进程字段解释,命令:ps aux 
​
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
============================================================================
USER:      //运行进程的用户
PID:       //进程ID
%CPU:      //CPU占用率
%MEM:      //内存占用率
VSZ:       //进程占用的虚拟内存大小。
RSS:       //占用的物理内存大小
TTY:       //进行运行的终端
STAT:      //进程状态  
START:     //进程的启动时间
TIME:      //进程占用CPU的总时间
COMMAND:   //进程文件,进程名
​
进程状态:
?:   表示没有占用终端
R:   运行
S:   可中断睡眠 Sleep
D:   不可中断睡眠
T:   停止的进程 
Z:   僵尸进程
X:   死掉的进程
Sl:  以线程的方式运行
Ss:  s进程的领导者,父进程
R+:  +表示是前台的进程组
S<:  <优先级较高的进程  
SN:  N优先级较低的进程
查看tty的方法:
tty      //进行运行的终端
? 表示这个进程开启的时候没有占用终端
ps -ef (静态):
-e 显示所有进程
-l 长格式显示
-f 完整格式
进程字段解释,命令:ps -ef
​
UID         PID   PPID  C STIME TTY          TIME CMD
=============================================================
UID       //用户ID
PID       //进程ID
PPID      //父进程ID
C         //CPU占用率
STIME     //开始时间
TTY       //开始此进程的终端设备
TIME      //此进程运行的总时间
CMD       //启动命令名
查看单个PID
pidof :查找服务进程的pid号码
pidof 进程名
pgrep:检索进程pid号码
pgrep 进程名
​
-d 设置号码之间的间隔符
-P 匹配父进程ID
查看进程端口
yum -y install lsof    //下载lsof
lsof -i:端口号  //端口号,查看带端口的进程
​
注意:端口号只有整数,范围是从0 到65535
进程字段解释,命令:lsof -i:端口号
​
COMMAND   PID   USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
=============================================================
COMMAND    进程文件,进程名
PID        进程ID
USER       运行进程的用户
FD         文件描述符,应用程序通过文件描述符识别该文件。
DEVICE     指定磁盘的名称
SIZE/OFF   文件的大小
查看正在监听的端口
查网络进程和正在监听的端口:ss -nplt  |  netstat -lntp
​
-a  显示全部的进程
-u  显示udp
-n  以数字的新式显示协议名称
-t   tcp
-p:显示进程的名称和pid
-l :只显示正在被监听的端口
进程字段解释,命令:netstat -lntp
​
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:与本机端口通信的外部请求
PID/Program name:pid和进程名
动态查看进程
top:动态查看进程及内容使用情况
top         //动态显示信息,三秒刷新一次
​
load average: 0.00, 0.01, 0.05     //平均负载:一分钟,五分钟,十五分钟
​
h|? 帮助
> 往下翻页
< 往上翻页
M 按内存排序
P 按cpu排序
q 退出   
z 彩色显示
W 保存
​
标题参数解释:
第一行:程序名-系统时间 运行时间 登录用户数 CPU负载:1 5 15分钟
第二行:总线程数 运行数 睡眠数  停止数   僵死数
第三行: CPU使用占比 us用户 sy系统 ni优先级 id空闲 wa等待 hi硬件  si软件  st虚拟机
第四行:物理内存 total总共 free空闲 user使用 cache缓存硬盘内容 
第五行:换分区 total总共 free空闲 user使用  cache缓存硬盘内容 
------------------------------------                   
PID 用户  内存  共享内存 虚拟内存 状态 CPU占用 内存占用  运行时间  命令
进程优先级nice
nice 值越高:表示优先级越低,例如+19,该进程容易将CPU 使用量让给其他进程。
nice 值越低:表示优先级越高,例如-20,该进程更不倾向于让出CPU。
​
修改进程优先级
renice -n 需要修改的优先级数  进程名

进程控制

kill:杀死指定的进程
kill 进程号    杀死指定进程,高级别进程(终端)不能杀死
​
kill -9 进程号 强制杀死指定进程(往往用来杀死任务的干扰进程)
kill常用参数:
​
SIGTERM(信号15):这是kill命令的默认信号。它会请求进程终止,但是进程可以选择忽略这个信号。这是一个友好的终止信号,因为它允许进程有机会清理并优雅地关闭。
SIGKILL(信号9):这个信号会立即终止进程,进程无法忽略。这是一个强制终止信号,通常在SIGTERM无效时使用。
SIGINT(信号2):这个信号通常由用户通过按Ctrl+C发送,用于中断进程。
SIGSTOP(信号17,19,23):这个信号会立即停止进程的执行。进程无法忽略这个信号。
SIGCONT(信号18,20,24):这个信号会使被SIGSTOP停止的进程继续执行。
SIGHUP(信号1):这个信号通常表示终端已断开连接。许多守护进程会在接收到这个信号后重新读取配置文件。
SIGALRM(信号14):这个信号通常用于实现定时器或者超时功能。
pkill:进程名杀死指定进程
复制代码
pkill 进程名    //根据进程名杀死进程

作业控制

jobs:
作业控制指的是控制正在运行的进程的行为。如:用户可以挂起一个进程或者放到后台去运行,等一会儿再继续执行该进程。
命令后+&         //&:让命令或者程序后台运行
​
命令开始执行后    //ctrl+z 把程序放到后台(这方法会让程序在后台暂停)
​
jobs           //查看后台的工作号
​
bg %工作号      //让暂停的程序在后台运行,%是用来修饰job number:工作号
​
fg %工作号      //将后台的程序调到前台
​
kill -9 %工作号  //通过kill杀死进程
相关推荐
小han的日常17 分钟前
接口自动化环境搭建
运维·自动化
小扳20 分钟前
Docker 篇-Docker 详细安装、了解和使用 Docker 核心功能(数据卷、自定义镜像 Dockerfile、网络)
运维·spring boot·后端·mysql·spring cloud·docker·容器
Koi慢热21 分钟前
信息收集合集
网络·安全·web安全·网络安全
运维小文23 分钟前
服务器硬件介绍
运维·服务器·计算机网络·缓存·硬件架构
是安迪吖34 分钟前
nfs服务器
运维·服务器
鱼骨不是鱼翅36 分钟前
模拟回显服务器
运维·服务器
运维佬36 分钟前
CentOS 9 配置网卡
linux·centos
轩轩曲觞阁1 小时前
Linux网络——网络初识
linux·网络
2401_840192271 小时前
python基础大杂烩
linux·开发语言·python
摘星星ʕ•̫͡•ʔ1 小时前
计算机网络 第二章:物理层
网络·计算机网络