11.1基本介绍

  • 在Linux中,每一个执行的程序都被称为一个进程。每一个进程都被分配一个ID号(pid,进程号)
    • windows下的pid

image.png

  • linux:top指令

image.png

  • 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如www服务器。
  • 每个进程都可能以两种方式存在。前台与后台
    • 所谓前台进程就是用户目前屏幕上可以进行操作的。
    • 后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
  • 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才会结束

    11.2显示系统执行的进程

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

image.png
ps显示的信息选项

字段 说明
PID 进程识别号
TTY 终端机号
TIME 此进程所消耗CPU时间
CMD 正在执行的命令或进程名
  1. ps -a:显示当前终端的所有进程信息
  2. ps -u:以用户的格式显示进程信息
  3. ps -x:显示后台进程运行的参数
  4. ps -aux | more :翻页查看
  5. ps -aux | grep "xxx":过滤查看
  • 执行ps -aux

image.png

  • 参数解释
    • USER:进程执行用户
    • PID:进程号
    • %CPU:当前进程占用cpu的百分比
    • %MEM:占用物理内存的百分比
    • VSZ:进程占用虚拟内存大小(KB)
    • RSS:进程占用的物理内存的大小(KB)
    • TTY:终端名称
    • STAT:运行状态,S-表示sleep休眠、s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-表示正在运行,D-短期等待,z-僵尸进程,T-被跟踪或者被停止等等
    • STARTED:执行的开始时间
    • TIME:占用CPU时间
    • COMMAND:启动进程所用的命令和参数,如果过长会被截断显示
  • 以全格式显示当前所有的进程,查看进程的父进程 ```bash ps -ef 是以全格式显示当前所有的进程

-e 显示所有的进程 -f 全格式

ps -ef|grep xxx 是BSD风格

  1. ![Snipaste_2022-02-24_16-25-05.png](https://cdn.nlark.com/yuque/0/2022/png/21879589/1655365536089-be87fec6-5cd6-4eaa-a45b-8bdeb326547c.png#clientId=u97215922-5329-4&crop=0&crop=0&crop=1&crop=1&from=drop&id=u0d7f0b28&margin=%5Bobject%20Object%5D&name=Snipaste_2022-02-24_16-25-05.png&originHeight=314&originWidth=1683&originalType=binary&ratio=1&rotation=0&showTitle=false&size=24379&status=done&style=none&taskId=u36674d80-fcba-43b5-a9de-18ad458304f&title=)
  2. - UID:用户ID
  3. - PID:进程ID
  4. - PPID:父进程ID
  5. - Ccpu用于计算执行优先的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高
  6. - STIME:进程启动时间
  7. - TTY:完整的终端名称
  8. - TIMECPU占用时间
  9. - CMD:启动进程所用的命令和参数
  10. ```bash
  11. ps -ef|grep sshd

image.png

  • sshd进程是1号进程的子进程,

  • 终止进程kill和killall

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

      kill [选项] 进程号        功能描述:通过进程号杀死进程
      killall 进程名称         功能描述:通过进程名杀死进程也支持通配符,这在系统因负载过的很慢时很有用
      kill -9 pid:强制关闭pid进程。
      
    • 常用选项:-9 表示强迫进程立即停止

    • 案例
      • 踢掉某个非法登录用户(mikasa)

image.png

ps- ef|grep sshd后可知用户mikasa登录的进程号为9583
kill 进程号
kill 9583

用户mikasa的连接关闭

image.png

  • 终止远程登录服务sshd,在适当时候再次重启sshd服务
    image.png ```bash kill 7756 结束远程登录服务sshd后用户无法通过xshell连上Linux虚拟机

回复sshd服务 /bin/systemctl start sshd.service


- 终止多个gedit
```bash
    killall gedit
  • 强制杀掉一个终端

    先ps -aux | grep bash
    观察出终端的进程号
    再
    killall -9 bash对应的进程号
    

    image.png

    11.3查看进程树pstree

  • 基本语法

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

    -p    树状形式显示进程的pid
    -u    树状形式显示进程的所属用户
    

    十二、服务(service)管理

    12.1介绍

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

  • service管理指令

Snipaste_2022-02-24_16-52-32.png

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

[root@Tyc init.d]# service network status
Configured devices:
lo eth0
Currently active devices:
lo eth0
  • 测试某个端口是否在监听:telnet

  • 在CentOS7.0后很多服务不再使用service,而是systemctl

  • service指令管理的服务在 /etc/init.d查看
  • image.png
  • 案例

    使用servce指令,查看,关闭,启动network[不要在xshell中执行,关闭网络后,连接sshd服务会断开连接]
    
  • 查看服务名:

    • 方式1:使用setup——>系统服务,就可以看到全部
      • 号的服务是随着linux的启动自动启动,没有带 号的都是需要手动启动的
      • 这里记一个比较呆比的事情,退出按Tab

image.png

  • 方式2:/etc/init.d 看到service指令管理的服务ls -l /etc/init.d

  • 额外扩展:为什么linux很多服务以d结尾?

    • d代表deamon 守护进程
    • Linux的大多数服务就是用守护进程
    • 守护进程是运行在Linux服务器后台的一种服务程序
    • 它周期地执行某种任务或等待处理某些发生的事件
    • 比如:xinetd提供网络服务,sshd提供ssh登录服务,httpd提供web服务

      12.2服务的运行级别

  • linux系统有七种运行级别(runlevel):常用的是级别3和5

    • 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
    • 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登录
    • 运行级别2:多用户状态(没有NFS),不支持网络
    • 运行级别3:完全的多用户状态(有NFS),登录后进入控制台命令行模式
    • 运行级别4:系统未使用,保留
    • 运行级别5:X11控制台,登陆后进入图形GUI模式
    • 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
      [root@Tyc init.d]# runlevel 
      N 3
      [root@Tyc init.d]# systemctl get-default
      multi-user.target
      
  • 开机的流程说明

image.png

  • 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
      

      12.3chkconfig指令

  • 介绍

    • 1.通过chkconfig命令可以给服务的各个运行级别设置自 启动/关闭
    • 2.chkconfig指令管理的服务在 /etc/init.d查看
    • 注意:CentOS7.0后,很多服务使用systemctl管理
  • 基本语法 ```bash 查看xxx服务:chkconfig –list | grep xxx 查看服务的状态:chkconfig 服务名 —list 给服务的运行级别设置自启动:chkconfig –level 5 服务名 on/off 要所有运行级别关闭或开启:chkconfig 服务名 on/off

chkconfig重新设置后需要重新启动才能生效

![image.png](https://cdn.nlark.com/yuque/0/2022/png/21879589/1655363964163-c44001f7-3609-45ab-9341-0c1ea50e3f15.png#clientId=u97215922-5329-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u2f3132c8&margin=%5Bobject%20Object%5D&name=image.png&originHeight=268&originWidth=726&originalType=url&ratio=1&rotation=0&showTitle=false&size=33288&status=done&style=none&taskId=u790e206c-9b16-4169-aaad-9934407c719&title=)

- 案列
```bash
对network服务进行操作,把network在3运行级别关闭自启动
chkconfig --level 3 network off
  • 注意:chkconfig重新设置服务后自启动或关闭,需要重启机器reboot生效

    12.4systemctl命令

  • systemctl管理命令

    systemctl [start | stop |restart |status ] 服务名
    
    • systemctl指令管理的服务咋/usr/lib/systemd/system中查看
  • systemctl设置服务的自启动状态

    systemctl list-unit-files [|grep 服务名] (查看服务开机启动状态,grep可进行过滤)
    systemctl enable 服务名                (设置服务开机启动)
    systemctl disable 服务名             (关闭服务开机启动)关闭和开启都是默认的3和5两级别
    systemctl is-enabled 服务名             (查询某个服务是否是自启动的)
    
  • 引用案列: ```bash ll /usr/lib/systemd/system |grep fire 查找防火墙服务

systemctl list-unit-files | grep firewalld 查看当防火墙的服务状态

systemctl is-enabled firewalld 查看防火墙服务是否是自启的

查看当前防火墙的状态,关闭防火墙和重启防火墙 systemctl status firewalld

停止防火墙 systemctl stop firewalld

启动防火墙、 systemctl s

ls -l /usr/lib/systemd/system/ | more:显示systemctl管理的服务名称。

systemctl list-unit-files | grep firewalld:查看防火墙开启还是关闭。

![image.png](https://cdn.nlark.com/yuque/0/2022/png/21879589/1655363964410-f604287f-607f-463c-a53a-183dd15bcb2e.png#clientId=u97215922-5329-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=ue538705d&margin=%5Bobject%20Object%5D&name=image.png&originHeight=65&originWidth=709&originalType=url&ratio=1&rotation=0&showTitle=false&size=8451&status=done&style=none&taskId=u81172659-73b0-4a09-a3ce-299d9d283a7&title=)

- 细节点
   - 关闭或者启动防火墙后,立即生效。[telnet测试 某个端口即可]
   - 这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置
   - 如果希望设置某个服务自启动或关闭永久生效,要使用systemctl [enable|disable]服务名
<a name="TroWR"></a>
## 12.5打开或者关闭指定端口
关于防火墙的管理指令<br />目的,打开防火墙的同时允许防火墙通过某些端口。<br />![Snipaste_2022-02-24_19-10-07.png](https://cdn.nlark.com/yuque/0/2022/png/21879589/1655368899494-2bf361c7-c1a6-4466-b5f2-ef695b9a343d.png#clientId=u97215922-5329-4&crop=0&crop=0&crop=1&crop=1&from=drop&id=ud7c3d0fa&margin=%5Bobject%20Object%5D&name=Snipaste_2022-02-24_19-10-07.png&originHeight=503&originWidth=1119&originalType=binary&ratio=1&rotation=0&showTitle=false&size=106933&status=done&style=none&taskId=u0be7bcff-03f5-412b-bfc5-a90f7bbdeaf&title=)<br />在真正的生产环境,往往需要将防火墙打开,来了,如果我们把防火墙打开,那么外部请求数据包就不能给服务器监听端口通讯。,这时,需要打开指定的端口。比如80,22,8080 该怎么做呢?

- firewall指令
   - 打开端口
```bash
firewall-cmd --permanent --add-port=端口号/协议
  • 关闭端口

    firewall-cmd --permanent --remove-port    =端口号/协议
    
  • 无论是关闭还是开启端口都需要重新载入防火墙才能生效

    firewall-cmd --reload
    
  • 查询端口是否开放

    firewall-cmd --query-port=端口/协议
    
  • 案例

    • 启用防火墙,测试111端口是否能telnet
    • 开放111端口
      image.png
    • 再次关闭111端口
      image.png

      十三、动态监控

      13.1介绍

      top和ps命令很相似。他们都用来显示正在执行的进程Top和ps最大的不同处在于top在执行一段时间可以更行正在运行的进程
  • 基本语法

    top [选项]:主要查看cpu和内存men占用量,以及是否有僵尸进程zombie。
    
  • 选项说明 | 选项 | 功能 | 实例 | | —- | —- | —- | | -d 秒数 | 指定top命令每隔几秒更新。默认是3秒 | top -d 5 | | -i | 是top不显示任何闲置或者僵死进程 | | | -p | 通过指定监控进程ID来仅仅监控某个进程的状态 | |

  • image.png

  • 僵死进程:进程已经死掉了(进程运行结束),但是内存没有被释放掉。僵死进程需要定时清除!!
    image.png
  • 其中cpu使用率和KiB Mem(内存管理)最为重要

    13.2动态监控进程的交互操作

  • 交互操作说明 | 操作 | 功能 | | —- | —- | | P | 以CPU施一公率排序,默认就是此项 | | M | 以内存使用率排序 | | N | 以PID排序 | | q | 退出top |

  • 实例案例 ```bash 案例1.监视特定用户,比如说监控mikasa用户 top:输入此命令,按回车键,查看执行的进程 然后输入“u”,回车,在输入用户名,即可

案例2:终止指令的进程 先输入top指令后,在输入“k“ ,在输入想要终止的进程号

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

<a name="MdVrb"></a>
## 13.3监控网络状态

- 查看系统网络情况netstat
   - 基本语法
```bash
netstat [选项]
  • 选项说明

    -an 按一定顺序排列输出
    -p 显示哪个进程在用
    
  • 应用案例 ```bash

    1. 查看所有的网络服务
  • netstat -anp | more
  1. 查看sshd的服务的信息
    • netstat -anp | grep sshd ``` Snipaste_2022-02-24_19-54-16.png
  • 检测主机连接命令ping
    • 是一种网络检测工具,它主要是用来检测远程主机是否正常,或是两部主机间的网线或网卡故障