一.历程的定义
步伐:
文件,一般是二进制,静态 /usr/sbin/httpd,/usr/sbin/sshd
步伐是二进制文件(口试题之一)
历程:
是步伐运行的过程, 动态,有生命周期的,
可以产生和消亡的(历程是已启动的可实行步伐的运行实例,实例即运行可实行步伐)。
线程:
线程是历程之内独立实行的一个单元。对于操作系统而言,其调理单元是线程;
一个历程至少包括一个线程,通常将该线程称为主线程;
一个历程从主线程的实行开始,进而创建一个或多个附加线程,就是所谓基于多线程的多使命.
二.历程的生命周期
父历程:
步伐运行时产生的第一个历程,任何历程都可以作为父历程创建子历程。
子历程:
由父历程使用fork()函数完全复制自己的地点空间创建出来的新的历程就是子历程,
子历程继承父历程的安全性身份、过去和当前的文件描述符、端口和资源特权、环境变量,
以及步伐代码,随后,子历程可能exec自己的步伐代码。
poccess id: pid 历程号!
为父历程跟踪和安全性以及管理职员的控制和管理所需,
父历程会给子历程分配一个唯一的历程id,这个id就是pid
三.历程的状态
在多使命处置惩罚操作系统中,每个CPU(或每个焦点)在一个时间点上只能处置惩罚一个历程。在历程运行时,它对CPU 时间和资源分配的要求会不停变化(历程不会连续的占用cpu,而是根据自己的需求来决定是否需要使用cpu时间),所以历程在运行的时候会有差别的状态,它随着环境要求而改变,详细的状态可以参考下图来看:
一个历程被父历程fork()衍生出来之后,会统一由内核历程调理步伐来根据当前这个历程对于cpu的时间和资源的需求来举行调理,如果历程需要使用cpu,那么调理步伐会根据当前历程的优先级来举行调理,从而关照历程什么时间会被cpu举行处置惩罚。此时历程会处于R状态
R-(running运行状态)
R状态包括两种情况:
1.第一种情况是正在排队等待cpu的处置惩罚处于Runnable状态
2.第二种情况是正在被cpu处置惩罚处于running状态;
历程在运行的时候可能由用户发出一个stop的状态,从而停息到背景,这个时候历程就处于T状态;
T-(stop停止状态)
当然历程也可能不需要cpu处置惩罚或者是运算或者他自己是一个父历程,有子历程正在工作,这个的时候就会处于sleeping状态;
S-(sleeping睡眠状态)
当历程结束工作之后,会开释掉自己的各种资源,然后进入到Z状态,
Z-(zombie僵尸状态)
当父历程接纳之后就会处于彻底终结的X状态
X-(彻底终结)
详细如图所示:
状态总结:
R状态:包罗runnable和running,表示历程正在等待运行或者是正在cpu上运行
Sleeping: 包罗S、D、K三种状态
S:可中断睡眠,历程在等待变乱触发/接收到指定的信号(硬件哀求/系统之间的访问)才会运行起来。
D:不可中断睡眠,不会接收或者是相应外界传来的信号,通常情况下正在举行I/O操作
K:和D的状态相同,但是可以被中断
Stopped:T状态,表示历程被停止,通常是由用户或者是其他历程发送的信号。
Zombie:包罗X、Z两种状态
Z:除了pid之外,其他的资源都已经开释掉,给父历程发送退出信号之后进入到Z状态
X: 彻底退出状态
僵尸历程危害:
大量的僵尸历程会导致我们系统中没有可用的pid,导致系统出现问题。
僵尸历程如何产生?
1. 子历程结束运行后,父历程还在运行,这个时候全部的子历程就会进入僵尸状态,
少量的僵尸历程对系统危害不大,但是大量的僵尸历程会拖垮服务器。
四.查看历程状态
命令1:
命令2:
以ps aux为例
- # ps aux
- USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
- root 1 0.0 0.0 2164 648 ? Ss 08:47 0:00 /usr/lib/systemd/systemd
- USER: 运行进程的用户
- PID: 进程ID
- %CPU: CPU占用率
- %MEM: 内存占用率
- VSZ: 占用虚拟内存,包括程序、代码、共享库等所有的
- RSS: 占用实际内存 驻留内存
- TTY: 进程运行的终端,?表示不依赖于任何的终端
- STAT: 进程状态
- R 运行
- S 可中断睡眠 Sleep
- D 不可中断睡眠
- T 停止的进程
- Z 僵尸进程
- X 死掉的进程
-
- Ss s进程的领导者,父进程
- S< <优先级较高的进程
- SN N优先级较低的进程
- R+ +表示是前台的进程组
- Sl 以线程的方式运行
- START: 进程的启动时间
- TIME: 进程占用CPU的总时间,单位是minute
- COMMAND: 进程文件,进程名
- PPID 父进程进程号
复制代码 查看指定历程的pid
查看历程树
需要先下载一个软件包:yum install -y psmisc
举例:pstree apache (启动历程的用户名)
五.历程优先级
历程优先级使用nice值来表示
历程优先级: 0--------139 数值越小,优先级越高
高优先级历程: 获取cpu更多的实行时间 cpu优先实行
nice值: -20-----19
- nice值设定:
- rnice 值 pid
- [root@localhost ~]# renice 0 9349
- 9349 (进程 ID) 旧优先级为 6,新优先级为 0
复制代码 六.动态查看历程
使用命令:top
- 第一部分:系统整体统计信息
- top - 14:22:36 up 4:45, 3 users, load average: 0.00, 0.00, 0.00
- Tasks: 206 total, 2 running, 204 sleeping, 0 stopped, 0 zombie
- Cpu(s): 1.6%us, 0.7%sy, 0.0%ni, 96.8%id, 0.9%wa, 0.0%hi, 0.0%si, 0.0%st
- Mem: 4019424k total, 1327584k used, 2691840k free, 131012k buffers
- Swap: 2047992k total, 0k used, 2047992k free, 650880k cached
- load average: 0.23, 0.06, 0.02 1分钟,5分钟,15分钟之内系统的平均负载
- us:用户占用的cpu的百分比
- sy:内核占用的cpu的百分比
- ni 改变过优先级的进程占用的cpu的百分比
- id:cpu的空闲时间
- wa:cpu的IO等待的时间
- hi:硬中断占用的cpu的百分比
- si:软中断
- st:cpu被偷走的时间
- 第二部分:进程信息
- 命令
- h或?获得帮助
- M 按内存的使用排序
- P 按CPU使用排序
- N 以PID的大小排序
- R 对排序进行反转
- f 自定义显示字段,调整字段顺序(选中正行上下箭头调整)
- 1 显示所有CPU的负载
- W 保存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 — 进程名称(命令名/命令行)
复制代码 七.其他查看服务器性能的命令
df -Th:查看磁盘信息
free -m:查看内存信息
lscpu:查看CPU信息
八.作业控制
作业控制是一个命令行功能,可以允许一个shell 能够同时运行多个历程,还可以实现历程管理,例如可以选择性停息、恢复某些历程,让shell可以在子历程运行期间返回接受其他命令<br />历程前台、背景<br />前台:前台历程会占用当前终端,当前终端为该历程的控制终端,历程会接收键盘产生的输入信号<br />背景:背景历程没有控制终端,不需要终端的交互,不接收终端输入的信号
fg
调用& 前台 (单独使用fg命令,调用作业中有+作业)
bg
有前台实行的命令ctrl+z 挂起(stop),由bg调到背景运行状态
kill
杀死历程
pkill
批量杀死历程
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |