首页
运维教程
Linux基础
系统服务
系统架构
数据库
shell脚本
虚拟化
大数据
DevOps
企业案例
运维开发
python
go语言
运维安全
行业资讯
网络基础
系统安全
运维面试
学习路线
学习方法
面试题库
职场解惑
软件
运维软件
办公软件
书籍资源
技术陪跑营
重要信息
首页 运维教程Linux基础【linux】循序渐进学运维-基础篇-进程管理

【linux】循序渐进学运维-基础篇-进程管理

文章目录
Linux进程
1. 进程的概念
2. 进程的属性
3. 关于僵尸进程
Linux管理的基本命令
1. ps命令
1) 常用参数:
2)常用组合
a) ps -aux
b) ps-uax输出的各个参数的含义如图:
c) Linux进程有5种基本状态:
3) 举例
a) 进程状态查看
b) ps的使用方法 -ef
c) 根据cpu/内存来升序排序
补充:
总结:

Linux进程

1. 进程的概念

Linux当中有很多用户,每个用户都可以同时运行多个程序,靠程序名来记忆每个程序,显然不是一个好办法。 Linux当中为了区分每一个运行的程序,给没给进程做了一个标识,这个标识我们叫他进程号(process ID) ,就像一个ip地址一样,通过进程号来辨别每个进程。

操作系统给每个用户赋予了权限,用户可以控制自己的进程,比如分配不同的优先级,终止和启动进程等。

进程一般由四个部分组成:
1. 已分配的内存地址空间
2. 安全属性,包括所有权凭据和特权
3. 程序代码的一个或者多个执行进程
4. 进程的状态

进程的状态一般有三种:

  1. 就绪状态
  2. 执行状态
  3. 阻塞状态

三种状态的转换如图:
在这里插入图片描述
简单了解了进程之后,我们来看看进程的属性:

2. 进程的属性

进程ID(PID) : 这是用来区分进程的唯一标识
父进程的ID : PPID
进程的状态: 运行(R),休眠(s)和僵尸(z)
centos6 系统启动后的第一个进程是init, PID 是1.
centos7 PID 为1的进程是systemd

3. 关于僵尸进程

僵尸进程: 一个进程使用fork创建子进程后,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述仍然保存在系统中。这种进程就是僵尸进程。

任何一个子进程(init除外) 在exit() 之后,并非马上消失,而是留下一个称之为僵尸进程的数据结构,等待父进程处理。如果这时候父进程没有来的及处理,我们用ps命令就会看到大写的Z的进程。 如果子进程结束前,父进程已经退出,这时候的子进程由init接管。 init会以父进程的身份对僵尸进程进行处理。

Linux管理的基本命令

1. ps命令

1) 常用参数:

|选项|作用|

a |显示现行终端机下的所有进程,包括其他用户的进程;
u|显示进程拥有者、状态、资源占用等的详细信息(注意有“-”和无“-”的区别);
x|显示没有控制终端的进程。通常与 a 这个参数一起使用,可列出较完整信息;
e|显示所有进程;
f|完整输出显示进程之间的父子关系;
l|较长、较详细的将该 PID 的的信息列出;
o|自定义显示的字段;

2)常用组合

###### a) ps -aux
在这里插入图片描述
注: 最后一列[xxxx] 使用方括号括起来的进程是内核态的进程。 没有括起来的是用户态进程

b) ps-uax输出的各个参数的含义如图:

|参数|含义

USER:|启动这些进程的用户
PID| 进程的ID
%CPU |进程占用的CPU百分比;
%MEM| 占用内存的百分比;
VSZ|进程占用的虚拟内存大小(单位:KB)
RSS|进程占用的物理内存大小(单位:KB)
STAT|该程序目前的状态
START|该 process 被触发启动的时间;
TIME | process 实际使用 CPU 运作的时间。
COMMAND|该程序的实际指令

c) Linux进程有5种基本状态:
R |该程序目前正在运作,或者是可被运作;
S |该程序目前正在睡眠当中 (可说是 idle 状态啦!),但可被某些讯号(signal) 唤醒。
T |该程序目前正在侦测或者是停止了;
 Z |该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
D  |不可中断状态.  

除了这5中状态外还有一些延伸的状态:

在这里插入图片描述

可以看到在S后面还有个小s, 或者有< 这类的拓展状态 ,这些标记表示:
|符号|含义
|–|–|
<| 表示进程运行在高优先级上
N:|表示进程运行在低优先级上
L:|表示进程有页面锁定在内存中
s| 表示进程是控制进程
l:|表示进程是多线程的
+:|表示当前进程运行在前台

3) 举例

a) 进程状态查看

打开一个进程:
在这里插入图片描述
在另一个终端查看:
在这里插入图片描述

注: 此处显示的是S,睡眠状态,+表示在前台。 意思是 在前台睡眠状态。如果我们把他调到后台运行会怎么样呢?
在这里插入图片描述
查询结果为T: T表示出于停止状态
在这里插入图片描述

b) ps的使用方法 -ef

ps -ef
-e 显示所有进程
-f 显示完整格式输出
在这里插入图片描述
此处包含的信息和ps -aux 不同,我们来看一下具体的含义:
|参数|含义
|–|–|
UID| 启动这些进程的用户
PID|进程的ID
PPID|父进程的进程号
C| 进程生命周期中的CPU利用率
STIME:|进程启动时的系统时间
TTY|表明进程在哪个终端设备上运行。如果显示 ?表示与终端无关,这种进程一般是内核态进程。另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等,则表示运行在虚拟终端上的进程。
TIME:|运行进程一共累计占用的CPU时间
CMD:|启动的程序名称

c) 根据cpu/内存来升序排序

[root@zmgaosh log]# ps -aux –sort pcpu |less
[root@zmgaosh log]# ps -aux –sort pmem |less

补充:

使用PS实时监控进程状态
[root@zmgaosh log]# watch -n 1 ‘ps -aux –sort -pmem,-pcpu’

总结:

ps uax 和ps -ef 两者的输出结果差别不大,只是展示结果不同
aux是BSD风格, -ef是System风格, 更重要的是aux会截断command列。

本文链接:http://www.geekyunwei.com/504.html

网友评论comments

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

暂无评论

Copyright © 2021 极客运维 公众号《极客运维之家》
扫二维码
扫二维码
返回顶部