第十章 Centos7 - 系统进程管理

本节内容所讲内容

10.1 进程概述和ps 查看进程工具

10.2  uptime  查看系统负载-top   动态管理进程

10.3  前后台进程切换-nice  进程优先级-free 实战screen后台执行命令

进程是已经启动可执行程序的运行实例,进程有如下组成部分

 已经分配内存的地址空间

安全属性,包括所有权凭据和特权

程序代码的一个或者多个执行线程

进程状态

程序;  二进制文件,静态 /bin/date ,  /usr/sbin/sshd

进程:是程序运行的过程,冬天,有生命周期及运行状态



centos5  或者6PID  为1的进程是:init

centos7  PID  为1  的进程是:systemd  

僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait 或者waitpid  获取子进程的状态信息,那么子进程的进程描述符任然在系统中

这种称谓子进程,


进程ID  (PID) :  是唯一的数值,用来区分进程

父进程的ID  (PPID) 

启动进程的用户ID (UID)   he 所归属的组(GID)

进程状态:状态分为运行为R,休眠S,僵尸Z

进程执行的优先级

进程执行的优先级

进程所连接的终端名

进程资源占用:  比如占用资源的大小  (内存CPU)

10.1.3  使用ps 查看进程工具

1.ps   查看进程工具

例1 ;常用的参数

a:  显示跟前终端关联的所有进程

u:  基于用户的格式显示 (u:显示某用户ID所有的进程)

x: 显示所有进程,不以终端机来区分

[root@xueshen65]~# ps -aux


注意: 最后一列[xxx]  使用放括号括起来的进程是内核态的进程,没有括起来的是用户态进程

上面的参数输出每列含义

USER:启动这些进程的用户

PID:进程的ID

%CPU  ;进程占用的CPU  百分比

%MEN 占用内存的百分比

VSZ  :  进程占用的虚拟机大小  (单位KB)

RSS:  进程占用的物理内存大小  (单位:kb)

STAT  :该进程目前的状态,Linux进程5 种状态


 START:该process被触发启动的实际

TIME:该process实际使用CPU运行的时间

command  :  该程序的实际指令


例子  1  vim  a.txt  按下  Ctrl  +z 

#  查看状态S 表示睡眠状态,+  表示前台


T  表示STOP 状态,停止状态

注意:

Ctrl+c  是发送SIGINT,信号,终止一个进程

Ctrl+z ,  是发送SIGSTOP  ,挂起一个进程,将作业放置到后台(暂停)

Ctrl+d  不是发送信号,而是表示一个特殊的二进制值,表示EOF,代表输入完成或者注销

2  ps 常用的参数:  ps -ef 

-e 显示所有进程

-f  显示完整格式输出

我们常用的组合: ps   -ef 



包含的信息如下:

UID;启动这些进程的用户

PID:  进程的ID

PPID  :父进程的进程号

C:  进程生命周期中的CPU利用率

STIME  :进程启动时的系统时间

?  

TTY:标明进程在哪个终端设备上进行,如果现实  ?  表示与终端无关

这种进程一般是内核态进程,另外tty1-tty6  是本机上面的登入者程序,弱为tty0 

等等的,则表示为由网络连接金主机的程序

TIME  :运行进程一共累计占用的CPU时间

CMD  启动的程序名称

ps  -aux  是BSD格式来显示进程

ps  -ef  是用标准格式显示进程

10.2  uptime   查看系统负载-top  动态管理进程

uptime 查看CPU  负载工具


[root@xueshen65 ~]# uptime

00:38:23 up 14:18,  4 users,  load average: 0.00, 0.01, 0.05


任务队列的平均长度是什么?

大厅排除买票


10.2.2  top  命令 

top   # top  弹出的每行信息含义如下

第一行内容和uptime弹出的信息一样

进程和CPU的信息(第二,三行)




两个dd  进程对磁盘进行大量写时,大小IO等待会占用很多CPU,如果wa 占用CPU

原因吸盘性能有问题,建议换磁盘




如果swap分区被使用了,那么内存可能不够用了

top  的快捷键

默认3s  刷新一次,按下s 刷新时间

按空格:立即刷新

q  退出

p :  按CPU排序

M  : 按内存排序

T  按时间排序

数字键1  显示每个内核的CPU

u/U  指定显示的用户

h:  帮助

root@xueshen65 ~]# ps -aux | grep vim

root      16246  0.0  0.2 151832  5388 pts/3    T    3月20  0:00 vim a.txt

root      25667  0.0  0.0 112724  988 pts/0    S+  01:39  0:00 grep --color=auto vim

 

[root@xueshen65 ~]# top -p 16246



  这是第一次见,

如果你的4核心的CPU,可以运行为400%

 10.2.4  lsof  命令

lsof  命令用于查看金进程打开的文件,打开文件的进程,进程打开的端口(TCP,UDP)

-i   <条件>  列出符合条件的进程(4,6  协议,端口,@ip)

-p  进程号   列出指定进程号所打开的文件


pstree   工具使用

pstree     以树状图显示进程,只显示进程的名字,而且相同进程合并显示

格式  pstree  或者  pstree -p  

以树状显示进程,还显示进程PID 

pstree  -p  | more  

10.3  前后台进程切换-nice 进程优先级free-实战screen 后天执行命令

  10.3.1  Linux  后台进程与前台进程的区别

前台进程:是在终端中执行运行的命令,那么该终端就为进程的控制终端,一旦关闭这个终端,这个进程就会消失

后天进程:也叫守护进程,是运行在后台的一种特殊进程,不受终端控制,它不需要终端的交互,Linux大多数服务器就是守护进程实现的,比如,Web 服务器HTTPd


实战恢复被挂起的进程

[root@xueshen65 ~]# vim a.txt

[root@xueshen65 ~]# ps -aux | vim

[root@xueshen65 ~]# jobs    查看当前有多少在后台运行的进程

[1]+  已停止              vim a.txt

[root@xueshen65 ~]# fg 1    将后台挂起的进程恢复到前台运行

vim a.txt

[root@xueshen65 ~]#

Vim: 警告: 输入不是来自终端(键盘)

10.3.3  kill   关闭进程

关闭进程的3个命令,   kill   pkill  

kill  关闭进程  kill 进程号,   关闭单个进程

killall  和pkill  命令用于杀死指定名字的进程

kill  -l   =============   列出所有支持的信号()

用得最多的是  9  信号

1  )   SIGHUP  重新加载

2  )    SINGINT  键盘终端Ctrl+c  

3   )  SIGQUIT     退出

9)     强制终止 

15  )   SIGTERM   终止(正常结束)  缺省信号

18  )  继续

19 )  停止

20 ) 暂停  Ctrl  +z  


10.3.4  进程的优先级管理

优先级取值范围为-20,19  ,越小优先级越高,默认优先级是0 

命令1:  nice  指定程序的运行优先级

格式:nice n   command  

命令2  :  renice  改变程序的运行优先级

格式:renice    -n  pid  

实战  指定运行一个vim优先级为5 

[root@xueshen65 ~]# nice -n 5 vim a.txt

[1]+  已停止              nice -n 5 vim a.txt

[root@xueshen65 ~]# ps -aux | grep vim

root      26685  0.0  0.2 151832  5416 pts/0    TN  03:07  0:00 vim a.txt

root      26696  0.0  0.0 112724  988 pts/0    S+  03:08  0:00 grep --color=auto vim

[root@xueshen65 ~]# top -p  26685


’改变优先级

[root@xueshen65 ~]# renice -10 26685

26685 (进程 ID) 旧优先级为 5,新优先级为 -10


10.3.5  实战;使用screen 后台实时执行命令备份命令(必会)

  实战场景  公司晚上需要备份1T 数据,我在xshell上直接执行备份脚本back.sh   可以吗?

或直接运行back.sh  &  放到后天运行可以吗?  当关了xshell,后back.sh &  还在后天实行吗?

答 :xshell长时间连接,如果本地网络偶尔断开或xshell不小心关闭,都会让后台运行的备份命令停止运行的

正确做法   screen  

10.3.6  screen 概述和安装

Screen     中有会话的概念,用户可以在一个screen 中创建多个screen窗口,在每一个screen中就像操作一个真实Telnet  /SSH  连接窗口那样 

安装一个screen  


[root@xueshen65 ~]# rpm -ivh /mnt/Packages/screen-4.1.0-0.25.20120314git3c2946.el7.x86_64.rpm

准备中...                          ################################# [100%]

正在升级/安装...

  1:screen-4.1.0-0.25.20120314git3c29################################# [100%]

安装完以后,直接

screen     #进入

vim   a.txt     执行命令,或执行你命令需要运行的备份命令

此时向离开一段时间,但是还想这个命令继续执行

在里面执行   写数字

按下Ctrl+a+d  

[root@xueshen65 ~]# screen

[detached from 27058.pts-0.xueshen65]    分离处理独立的一个会话

半个小时以后,如何找到会话

[root@xueshen65 ~]# screen -ls

There is a screen on:

27058.pts-0.xueshen65 (Detached)

1 Socket in /var/run/screen/S-root.

[root@xueshen65 ~]#

[root@xueshen65 ~]# screen -r 27058    就可以进入了

  exit    不想使用screen 会话,执行exit 退出


附加 :常用screen  参数

screen  -S  test  --> 


总结  :

10.1  进程概述和ps  查看进程工具

10.2  uptime  查看系统-top  动态管理进程

10.3  前后台切换-nice  进程优先级-  实战screen 后台执行命令

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容