Linux系统管理体系-进程管理

1、进程

名字 含义
程序 安装包,程序代码,app,存在磁盘上面
进程​​ 运行起来的程序,命令,服务(远程连接服务,网络服务)都可以成为进程。运行在内存中。
守护进程 守护进程,一直运行的进程,也可以叫做服务

2、僵尸进程

僵尸进程是当子进程比父进程先结束,而父进程又没有回收子进程and释放子进程占用的资源,此时子进程将成为一个僵尸进程。

僵尸进程成因:由于某个原因导致某个进程挂掉了,但是进程本身任然存在,还占用着系统资源。

查找:未来通过ps aux过滤 Z状态可找到僵尸进程或top命令查看

pstree -p树状显示进程,-p显示进程号

解决:

  • 方案一:找出僵尸进程上级进程,结束进程即可
  • 方案二:如果上级进程是主进程(pid为1进程),则需要重启Linux系统

3、孤儿进程

孤儿进程指的是在其父进程执行完成或被终止后仍继续运行的一类进程。

孤儿进程会被系统直接接管。(systemd进程)

4、进程监控指令

监控命令 含义
ps 静态:ps查看当前瞬间进程状态,一般用于临时检查或取值
top 动态:top动态,交互,整体查看系统状态,负载,僵尸进程,cpu,内存。类似于windows任务管理器

1)ps命令格式

ps -ef

  • UID 进程所属用户
  • PID 进程id号,大部分是随机的
  • PPID 父进程的id号,pstree -p查看详细信息
  • CMD 进程命令

ps aux

  • -ef多了一些,cpu使用率,内存使用率,占用内存大小,进程状态
第一列
第1列:User 进程属于用户
第2列:PID 进程号(子进程号)
第3列:%CPU cpu使用率
第4列:%MEM 内存使用率.
第5列:VSZ 进程占用虚拟内存大小(KB)
第6列:RSS 进程占用物理内存大小(KB)
第7列:TTY 用户使用终端(用户连接进来后,系统创建)
第8列:STAT 进程状态
第9列:START 进程启动时间
第10列:TIME 进程占用CPU时间
第11列:COMMAND 进程名字(命令,选项..)。[]括起来的是内核进程,其他是系统进systemd 。pid是1第1个进程.

进程状态

进程状态:进程运行中;僵尸进程;正在进行io的进程;前台或后台运行进程。

进程状态:基本状态+附加组成。(Ssl可中断的多线程的管理进程)

STAT进程状态 描述
R(running) 进程运行
D 不可以中断进程(进程正在进程IO读写)
Z(zombie) 僵尸进程,异常的进程
S 可中断进程(可以随时停止)
T(terminate) 进程被停止(挂起)Ctrl + z

2)top命令格式

top命令默认是个交互式的命令,可以展示系统负载信息,进程信息,cpu,内存信息。类似于Windows任务管理器。

刚刚使用我们核心掌握几个就行,后面随着使用再增加。

swap叫交换分区,内存不足的时候临时充当为内存;swap本质是磁盘上面的一块空间,速度没有内存快 速度对比:cpu->内存->磁盘

3)案例

案例01 过滤出crond进程信息
perl 复制代码
ps -ef | grep "ssh"
ps -aux | grep "ssh"

过滤的结果可以通过grep -v grep 排除下grep命令自己(进程)

perl 复制代码
ps -ef | grep ssh  | grep -v grep 

后面还可以与wc配合使用统计进程数量。

perl 复制代码
ps -ef | grep ssh  | grep -v grep | wc -l

根据过滤结果,随时调整过滤的命令条件。

perl 复制代码
ps -aux | grep "/usr/sbin/sshd"
案例02 按照树形结构查看进程信息
bash 复制代码
pstree
pstree -p #显示树形结构并输出pid.
ps auxf #也可以展示部分所属关系,没有pstree直观。
案例03 根据要求,只显示某些内容
perl 复制代码
#通过awk取列,必须单引号!!!awk '{peint $1}'
ps -ef | awk '{print $1}' 
ps aux | awk '{print $2}'
ps aux | awk '{print $1,$3}' #第1列和第3列
#ps命令的选项,输出指定的内容
ps axo user,%cpu,stat
ps axo user,%cpu,stat,cmd

那么我想不显示标题怎么显示

perl 复制代码
#awk写法 排除第1行,从第2行开始
ps -ef | awk 'NR>1 {print $1,$3}'
​
awk '{print 列}'
awk '条件{print 列}'
awk 'NR > = 1{print 列}'
#NR>1 行号大于1
#NR>=2 行号大于等于2
​
#ps不输出每一列的标题.
ps --no-heading axo user,%cpu,stat
案例04 取出某一个服务(crond)的进程信息(pid,%cpu,%mem,command)
perl 复制代码
ps aux |grep 'crond' |awk '{print $2,$3,$4,$11}'
​
完全使用ps命令过滤出来
ps --no-heading -o pid,%cpu,%mem,command -C crond
--no-heading 不显示标题
-C 过滤 注意不要加上ax.
-o输出指定列

Awk 做好一列

bash 复制代码
最后一列
echo 1 a b lidao 996 |awk '{print $NF}'
996
​
倒数第2列
echo 1 a b lidao 996 |awk '{print $(NF-1)}'
lidao
案例05 取出所有进程中内存使用率最高的前5
bash 复制代码
ps aux |sort -nrk4 | head -5
案例06 top基础使用与快捷键
bash 复制代码
#基础必会用法
q 退出
默认3秒刷新1次, 空格立刻刷新. 
P 默认按照CPU使用率排序
M 按照内存使用率排序
​
#进阶用法:
top输入z进入颜色模式 按 x 标记出当前是按照哪列排序. 
shift + > 向右
shift + < 向左
​
#top命令升级版,支持鼠标操作 
htop

说明: htop是epel源中的命令. 没有需要配置epel源后安装即可(epel是企业linux扩展包)

案例07 非交互式

未来想获取top命令的结果,指标,需要让top运行在非交互模式

css 复制代码
top -bn1 |awk 'NR==2'
-b 非交互模式
-n 只输出1次结果.

awk扩展

ini 复制代码
top -bn1 |awk 'NR==2{print $(NF-1),$NF}'
0 zombi
相关推荐
JunLan~4 小时前
Rocky Linux 系统安装/部署 Docker
linux·docker·容器
方竞5 小时前
Linux空口抓包方法
linux·空口抓包
sun0077006 小时前
ubuntu dpkg 删除安装包
运维·服务器·ubuntu
海岛日记6 小时前
centos一键卸载docker脚本
linux·docker·centos
AttackingLin7 小时前
2024强网杯--babyheap house of apple2解法
linux·开发语言·python
吃肉不能购8 小时前
Label-studio-ml-backend 和YOLOV8 YOLO11自动化标注,目标检测,实例分割,图像分类,关键点估计,视频跟踪
运维·yolo·自动化
学Linux的语莫8 小时前
Ansible使用简介和基础使用
linux·运维·服务器·nginx·云计算·ansible
qq_312920118 小时前
docker 部署 kvm 图形化管理工具 WebVirtMgr
运维·docker·容器