第14章Linux实操篇-进程管理(重点)

081_韩顺平Linux_进程管理小结_哔哩哔哩_bilibili

14.1 基本介绍

1) 在LINUX中, 每个执行的程序都称为一个进程。每一个进程都分配一一个ID号(pid,进程号)。=>windows => linux

2)每 个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。

3)一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才结束。

4) 示意图

14.2显示系统执行的进程

14.2.1 基本介绍

ps命令是用来查看目前系统中,有哪些正在执行,以及它们执行的状况。可以不加任何参数.

14.2.2 ps 详解

(1) 指令: ps -aux | grep xxx ,比如我看看有没有sshd服务

(2) 指令说明

System V展示风格 ---->上上图详解

14.2.3应用实例

  • 要求: 以全格式显示当前所有的进程,查看进程的父进程。查看 sshd的父进程信息

ps -ef 是以全格式显示当前所有的进程,-e 显示所有进程,f全格式

ps -ef | grep sshd

4997:PID号 1:父进程PID号

  • 是BSD风格.

UID:用户ID

PID:进程ID

PPID:父进程ID

C: CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数 值越小,表明进程是IO密集型运算,执行优先级会提高

STME:进程启动的时间

TTY:完整的终端名称

TIME: CPU 时间

CMD:启动进程所用的命令和参数

14.3 终止进程kill和killall

14.3.1介绍:

若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。使用kill命令来完成此项任务。

14.3.2基本语法

kill [选项] 进程号 (功能描述:通过进程号杀死/终止进程)

kill all 进程名称 (功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用) -----》他的子进程也会被杀死

14.3.3 常用选项

-9 :表示强迫进程立即停止

14.3.4最佳实践

(1) 案例1: 踢掉某个非法登录用户(先查看)

kill进程号,比如kill 11421

(2)案例2: 终止远程登录服务sshd,在适当时候再次重启sshd服务

kill sshd对应的进程号 ---》 kill 10748, 重启 /bin/systemctl start sshd. service

(3) 案例3:终止多个gedit(关闭多个gedit文本编译器(通过进程名称杀死)),演示 kllall gedit

(4) 案例4:强制杀掉一个终端,指令kill -9 bash 对应的进程号

14.4查看进程树pstree

14.4.1 基本语法

pstree [选项] ,可以更加直观的来看进程信息

14.4.2常用选项

-p :显示进程的PID

-u :显示进程的所属用户

14.4.3 应用实例:

案例1:请你树状的形式显示进程的pid

pstree -p

案例2:请你树状的形式进程的用户

pstree -u

14.5服务(service)管理

14.5.1 介绍:

服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysqId,sshd防火墙等),因此我们又称为守护进程,是Linux中非常重要的知识点。[原理图]

14.5.2 service 管理指令

(1) service 服务名 [start | stop |restart | reload | status]

(2)在CentOS7.0后很多服务不再使用service,而是systemctl (后面专门讲)

(3) service 指令管理的服务在 /etc/init.d 查看

14.5.3 service管理指令案例

请使用service指令,查看,关闭,启动network [注意:在虚拟系统演示,因为网络连接会关闭]

指令:


service network status
service network stop
service network start

14.5.4 查看服务名:

方式1:使用setup-> 系统服务就可以看到全部。

setup(前面有*的为开机自启动,按空格键可取消)

方式2:

/etc/init.d看到service指令管理的服务

ls -l

/etc/init.d

14.5.5 服务的运行级别(runlevel):

Linux系统有7种运行级别(runlevel):常用的是级别3和5

运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动

运行级别1:单用户工作状态,root 权限,用于系统维护,禁止远程登陆

运行级别2:多用户状态(没有NFS),不支持网络

运行级别3:完全的多用户状态(有 NFS),无界面,登陆后进入控制台命令行模式

运行级别4:系统未使用,保留

运行级别5: X11控制台,登陆后进入图形GUI模式

运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

开机的流程说明:

14.5.6 CentOS7 后运行级别说明

在/etc/initab

进行了简化,如下:

multi-user. target: analogous to runlevel 3

graphical.target: analogous to runlevel 5

# To view current default target, run:

systemctl get-default

# To set a default target, run:

systemctl set-default TARGET.target

14.5.7 chkconfig 指令

  • 介绍

1.通过chkconfig命令可以给服务的各个运行级别设置自启动/关闭

2.chkconfig指令管理的服务在/etc/init.d 查看

3.注意: Centos7.0后,很多服务使用systemnctl理(后面马上讲)

  • chkconfig 基本语法

(1)查看服务chkconfig --list [| grep xxx]

(2) chkconfig 服务名 --list

(3) chkconfig --level 5 服务名 on/off

  • 案例演示:对network 服务进行各种操作,把network在3运行级别,关闭自启动

chkconfig -level 3 network off

chkconfig -level 3 network on

  • 使用细节

chkconfig重新设置服务后自启动或关闭,需要重启机器reboot生效

14.5.8 systemctl管理指令

基本语法: systemctl [start |stop |restart | status] 服务名

systemctl指令管理的服务在 /usr/lib/systemd/system 查看

ls -l /usr/lib/systemd/system

14.5.9 systemctl 设置服务的自启动状态

1.systemctl list-unit-files [ | grep 服务名(查看服务开机启动状态, grep可以进行过滤)

2.systemctl enable服务名(在3 5两个级别设置服务开机启动)

3.systemctl disable服务名(在3 5两个级别关闭服务开机启动)

4.systemctl is-enabled服务名(查询某个服务是否是自启动的)

14.5.10应用案例:

查看当前防火墙的状况,关闭防火墙和重启防火墙。=> frewalld.service

systemctl status firewalld; systemctl stop firewalld; systemctl start firewalld

14.5.11细节讨论:

关闭或者启用防火墙后,立即生效。[telnet 测试某个端口即可] telnet 192.168.111.2

这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置。

如果希望设置某个服务自启动或关闭永久生效,要使用systemctl [enable | disable] 服务名

14.5.12打开或者关闭指定端口

在真正的生产环境,往往需要将防火墙打开,但问题来了,如果我们把防火墙打开,那么外部请求数据包就不能跟服务器监听端口通讯。这时,需要打开指定的端口。比如80、22、8080 等【示意图】

14.5.13 firewall 指令

(1) 打开端口(把想要打开的端口放入打开端口框): firewall-cmd --permanent --add-port=端口号/协议

(2)关闭端 口: firewall-cmd --permanent --remove-port=端口号/协议

(3)重新载入,才能生效: firewall-cmd --reload

(4)查询端口是否开放: firewall-cmd --query-port=端口/协议

14.5.14 应用案例:

(1) 启用防火墙,测试111端口是否能telnet,不行

(2)开放111端口---->再次telnet连接就可以成功

firewall-cmd --permanent --add-port=111/tcp;需要firewall-cmd --reload

(3) 再次关闭111端口

firewall-cmd --permanent --remove-port=111/tcp;需要firewall-cmd -reload

14.6 动态监控进程

14.6.1 介绍:

top与ps命令很相似。它们都用来显示正在执行的进程。Top与ps最大的不同之处,在于top在执行一段时间可以.更新正在运行的的进程。

14.6.2基本语法

top [选项]

第一行


top:当前时间
up:机器运行了多长时间
users:当前登录用户数
load average:系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

第二行


Tasks:当前有多少进程
running:正在运行的进程数
sleeping:正在休眠的进程数
stopped:停止的进程数
zombie:僵尸进程数

第三行


us:用户空间占CPU的百分比(像shell程序、各种语言的编译器、各种应用、web服务器和各种桌面应用都算是运行在用户地址空间的进程,这些程序如果不是处于idle状态,那么绝大多数的CPU时间都是运行在用户态)
sy: 内核空间占CPU的百分比(所有进程要使用的系统资源都是由Linux内核处理的,对于操作系统的设计来说,消耗在内核态的时间应该是越少越好,在实践中有一类典型的情况会使sy变大,那就是大量的IO操作,因此在调查IO相关的问题时需要着重关注它)
ni:用户进程空间改变过优先级(ni是nice的缩写,可以通过nice值调整进程用户态的优先级,这里显示的ni表示调整过nice值的进程消耗掉的CPU时间,如果系统中没有进程被调整过nice值,那么ni就显示为0)
id: 空闲CPU占用率
wa: 等待输入输出的CPU时间百分比(和CPU的处理速度相比,磁盘IO操作是非常慢的,有很多这样的操作,比如,CPU在启动一个磁盘读写操作后,需要等待磁盘读写操作的结果。在磁盘读写操作完成前,CPU只能处于空闲状态。Linux系统在计算系统平均负载时会把CPU等待IO操作的时间也计算进去,所以在我们看到系统平均负载过高时,可以通过wa来判断系统的性能瓶颈是不是过多的IO操作造成的)
hi: 硬中断占用百分比(硬中断是硬盘、网卡等硬件设备发送给CPU的中断消息,当CPU收到中断消息后需要进行适当的处理(消耗CPU时间)。)
si:软中断占用百分比(软中断是由程序发出的中断,最终也会执行相应的处理程序,消耗CPU时间)
st:steal time  “虚拟机管理程序从该虚拟机窃取的时间”

第四行


total:物理内存总量
free:空闲内存量
used:使用的内存量
buffer/cache:用作内核缓存的内存量

第五行


total:交换区内存总量
free:空闲交换区总量
used:使用的交换区总量
buffer/cache:缓冲的交换区总量

第六行


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    命令名/命令行

14.6.3 进程说明

14.6.4 交互操作说明

运行top的时候直接输入对应子母

14.6.5应用实例

  • 案例1.监视特定用户,比如我们监控tom用户

top:输入此命令,按回车键,查看执行的进程。

u:然后输入“u”回车,再输入用户名,即可,

  • 案例2:终止指定的进程,比如我们要结束tom登录

top:输入此命令,按回车键,查看执行的进程。

k:然后输入“k”回车,再输入要结束的进程ID号

  • 案例3:指定系统状态更新的时间(每隔10秒自动更新),默认是3秒.

top -d 10

14.7监控网络状态

14.7.1查看系统网络情况netstat

  • 基本语法 : netstat [选项]

  • 选项说明

-an 按一定顺序排列输出

-P 显示哪个进程在调用


Proto  连接协议的种类
Recv-Q 接收到字节数     Send-Q 从本服务器,发出去的字节数 
Local Address 本地的IP地址,可以是IP,也可以是主机名 
Foreign Address 远程主机的IP 地址 
State 网络连接状态                          

网络连接状态


CLOSED : 初始(无连接)状态。
CLOSING:等待远程TCP对连接中断的确认
LISTEN : 侦听状态,等待远程机器的连接请求。
ESTABLISHED: 完成TCP三次握手后,主动连接端进入ESTABLISHED状态。此时,TCP连接已经建立,可以进行通信。
TIME_WAIT : 在TCP四次挥手时,主动关闭端发送了ACK包之后,进入TIME_WAIT状态,等待最多MSL时间,让被动关闭端收到ACK包。
SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认(如有大量此状态,估计被flood攻击了)
CLOSE-WAIT:等待从本地用户发来的连接中断请求
FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2:从远程TCP等待连接中断请求

  • 应用案例

请查看服务名为sshd 的服务的信息。

netstat -anp | grep sshd

14.7.2检测主机连接命令ping:

是一种网络检测工具,它主要是用检测远程主机是否正常,或是两部主机间的网线或网卡故障。

如: ping对方ip地址

猜你喜欢

转载自blog.csdn.net/qq_44177768/article/details/128998903