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

  • Post author:
  • Post category:linux





1 进程的基本介绍

==>


视频链接

  1. 在 Linux 中,每个

    执行的程序

    都成为一个进程,每一个进程都分配一个 ID 号 (pid ,进程号)
  2. 每个进程都可能以两种方式存在的。

    前台



    后台

    ,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行
  3. 一般系统的服务器都是以后台进程方式存在,而且都会常驻在系统中。直到关机才结束
  4. 示意图

在这里插入图片描述



2 显示系统执行的进程



2.1 基本介绍


  • ps

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

在这里插入图片描述


  • ps

    显示的信息选项:
字段 说明
PID 进程识别号
TTY 终端机号
TIME 此进程所消 CPU 时间
CMD 正在执行的命令或进程名

  • ps -a

    :显示当前终端的所有进程信息

  • ps -u

    :以用户的格式显示进程信息

  • ps -x

    :显示后台进程运行的参数

通常是将上述三个参数联合使用,即:

ps -aux

,也可以使用分页来方便查看 =>

ps -axu | more

在这里插入图片描述



2.2 ps 详解

  1. 指令:

    ps –aux | grep xxx

    — 过滤查看指定的进程信息,比如:看看有没有 sshd 服务 =>

    ps –aux | grep sshd

在这里插入图片描述

  1. 指令说明:

    • System V展示风格
    • USER:用户名称
    • PID:进程号

    • %CPU:进程占用CPU的百分比

    • %MEM:进程占用物理内存的百分比

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

    • RSS:进程占用的物理内存大小(单位:KB)
    • TTY:终端名称,缩写
    • STAT:进程状态,其中:

      • S-睡眠
      • s-表示该进程是会话的先导进程
      • N-表示进程拥有比普通 优先级更低 的优先级
      • R-正在运行
      • D-短期等待
      • Z-僵死进程
      • T-被跟踪或者被停止等等
    • STARTED:进程的启动时间
    • TIME:CPU时间,即进程使用CPU的总时间
    • COMMAND:启动进程所用的命令和参数,如果过长会被截断显示



2.3 应用实例

要求:以全格式显示当前所有的进程,查看进程的

父进程

,比如查看 sshd 的 父进程 信息


  • ps -ef

    :是以全格式显示当前所有的进程,其中:

    -e

    显示所有进程,

    -f

    全格式

在这里插入图片描述

  • 对上图参数说明:

    1. 是BSD风格
    2. UID:用户ID
    3. PID:进程ID
    4. PPID:父进程ID
    5. C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运 算, 执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高
    6. STIME:进程启动的时间
    7. TTY:完整的终端名称
    8. TIME:CPU时间
    9. CMD:启动进程所用的命令和参数
  • 查看 sshd 的 父进程 信息 指令:

    ps -ef | grep sshd

在这里插入图片描述

在这里插入图片描述



3 终止线程 kill 和 killall



3.1 介绍

  • 若是某个进程执行一半需要停止时,或是已消耗了很大的系统资源时,此时可以考虑停止该进程
  • 使用

    kill

    命令完成 终止进程 任务



3.2 基本语法


  • kill [] 进程号

    :通过进程号杀死/终止进程

  • killall 进程名称

    :通过进程名称杀死进程,也支持通配符,该指令 在系统因负载过大而变得很慢时很有用



3.3 常用选项


  • -9

    :表示强迫进程立即停止



3.4 最佳实践

  1. 案例1:踢掉某个非法登录用户

    kill 进程号

    ,比如:

    kill 1967

在这里插入图片描述

在这里插入图片描述

  1. 案例2:终止远程登录服务 sshd ,在适当的时候再次重启 sshd 服务
(1) kill sshd对应的进程号;  #终止远程登录服务
(2) /bin/systemctl start sshd.service #重启 sshd 服务

在这里插入图片描述

在这里插入图片描述

  1. 案例3:终止多个 gedit ,指令 =>

    killall gedit

在这里插入图片描述

在这里插入图片描述

  1. 案例4:强制杀掉一个终端,指令 =>

    kill -9 bash对应的进程号

在这里插入图片描述

在这里插入图片描述



4 查看进程树 pstree



4.1 基本语法


  • pstree [选项]

    :可以更加直观的来看进程信息



4.2 常用选项


  • -p

    :显示进程的 PID

  • -u

    :显示进程的所属用户



4.3 应用实例

  1. 请以树状的形式显示进程的 pid ,指令:

    pstree -p

在这里插入图片描述

  1. 请以树状的形式显示进程的所属用户 ,指令:

    pstree -u

在这里插入图片描述



5 服务管理



5.1 基本介绍

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

在这里插入图片描述



5.2 service 管理指令


  1. service 服务名 [start | stop | restart | reload | status]
  2. 在 CentOS7.0 后,

    很多服务不再使用 service

    ,而是


    systemctl

  3. service 指令管理的服务在

    /etc/init.d

    查看

在这里插入图片描述



5.3 service 管理指令案例

  • 请使用 service 指令,查看,关闭,启动 network ,注意:在虚拟系统演示,因为网络连接会关闭
service network status #查看状态
service network stop #关闭
service network start #开启

在这里插入图片描述



5.4 查看服务名

  • 方式一:使用

    setup

    => 选择系统服务 就可以看到

    全部

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 方式二:

    /etc/init.d

    看到 service 指令管理的服务 ,指令:

    li -l /etc/init.d/

在这里插入图片描述



5.5 服务的运行级别 (runlevel)

  • Linux 系统有 7 种运行级别 (runlevel) :

    常用的是

    级别3



    级别5

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

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

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


    运行级别3

    :完全的多用户状态 (有 NFS) ,无界面,登录后进入控制台命令行默认

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


    运行级别5

    :X11 控制台,登录后进入图形 GUI 模式

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

  • 开机的流程说明:

在这里插入图片描述



5.6 CentOS7 后运行级别说明

在 CentOS7 以前,在

/etc/inittab

文件中进行设置默认的运行级别, CentOS7 以后进行了简化,如下:

  • 简化指令如下:


    multi-user.target

    : analogous to runlevel 3


    graphical.target

    : analogous to runlevel 5

  • 查看当前运行级别:

    systemctl get-default

  • 设置默认运行级别:

    systemctl set-default TARGET.target

    • 如设置默认运行级别为:multi-user.target 运行级别3
    • 指令 =>

      systemctl set-default multi-user.target



5.7 chkconfig 指令


  • 基本介绍

    1. 通过 chkconfig 命令可以给服务的各个运行级别设置 自启动/关闭
    2. chkconfig 指令管理的服务在 /etc/init.d 查看
    3. 注意:CentOS7.0 后,很多服务

      使用 systemctl 管理

  • chkconfig 基本语法

    • 查看服务

      chkconfig --list [ | grep xxx]


      在这里插入图片描述


    • chkconfig 服务名 --list


    • chkconfig --level 5 服务名 on/off

      表示在 运行级别5 下设置某服务是否自启动


  • 案例演示

    :对 network 服务 进行各种操作,比如:把 network 在 运行级别3 ,关闭自启动

chkconfig --level 3 network off #关闭自启动
chkconfig --level 3 network on  #开启自启动

在这里插入图片描述


  • 使用细节

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



5.8 systemctl 管理指令

==>


视频链接

  • 基本语法:

    systemctl [start | stop | restart | status] 服务名
  • systemctl 指令管理的服务在

    /usr/lib/systemd/system

    查看 ,指令:

    ls -l /usr/lib/systemd/system



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


  • systemctl list-unit-files [ | grep 服务名]

    :查看服务开机启动状态,grep 可以进行过滤

  • systemctl enable 服务名

    :设置服务开机启动 (对 运行级别3和5 同时生效)

  • systemctl disable 服务名

    :关闭服务开机启动 (对 运行级别3和5 同时生效)

  • systemctl is-enabled 服务名

    :查询某个服务是否是自启动的



5.10 应用案例

  • 查看当前防火墙的状况,关闭防火墙和重启防火墙 (firewalld.service)
systemctl status firewalld #查看当前防火墙的状况
systemctl stop firewalld   #关闭防火墙
systemctl start firewalld  #开启防火墙

在这里插入图片描述



5.11 细节讨论

  1. 关闭或启用防火墙后,立即生效【telnet 测试 某个端口即可】,温馨提示,如果 telnet 指令用不了 => 解决方案:


    参考文章

在这里插入图片描述

在这里插入图片描述

  1. 这种方式只是临时生效,当重启系统后,还是回归到以前对服务的设置
  2. 如果希望设置某个服务自启动或关闭 永久生效,要使用

    systemctl [enable | disable] 服务名



5.12 打开或关闭指定端口

  • 在真正的生成环境,往往需要将防火墙打开,但问题来了,如果我们把防火墙打开了,那么外部请求数据包就不能跟服务监听端口通讯
  • 这时需要打开指定的端口,比如:80,22,8080 等,这个又怎么做呢?

在这里插入图片描述



5.13 firewall 指令

  • 打开端口:

    firewall-cmd --permanent --add-port=端口号/协议
  • 关闭端口:

    firewall-cmd --permanent --remove-port=端口号/协议
  • 重新载入,才能生效:

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

    firewall-cmd --query-port=端口/协议
  • 查询所有开放的端口:

    firewall-cmd --list-all



5.14 应用案例

  1. 启用防火墙,测试 111 端口是否能 telnet ,答案:目前不行

在这里插入图片描述

在这里插入图片描述

  1. 开放 111 端口
firewall-cmd --permanent --add-port=111/tcp #(1)打开端口
firewall-cmd --reload #(2)重新载入 , 才能生效

在这里插入图片描述

在这里插入图片描述

  1. 再次关闭 111 端口
firewall-cmd --permanent --remove-port=111/tcp #(1)关闭端口
firewall-cmd --reload #(2)重新载入 , 才能生效

在这里插入图片描述



6 动态监控进程



6.1 介绍

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



6.2 基本语法

  • top [选项]

在这里插入图片描述



6.3 选项说明

选项 功能
-d 秒数 指定 top 命令每隔几秒更新,默认是 3 秒,如:

top -d 5
-i 使 top 不显示任何闲置或者僵死进程
-p 通过指定监控进程ID来仅仅监控某个进程的状态



6.4 交互操作说明

操作 功能
P 以CPU使用率排序,默认就是此项
M 以内存的使用率排序
N 以 PID 排序
q 退出 top



6.5 应用实例

  • 案例1 :监视特定用户,比如监控 tom 用户

    1. 输入 top 命令,按回车,查看执行的进程
    2. 然后输入 “u” 回车 ,再输入用户名,即可

在这里插入图片描述

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

    1. 输入 top 命令,按回车,查看执行的进程
    2. 然后输入 “k” 回车 ,再输入要结束的进程 ID 号

在这里插入图片描述

在这里插入图片描述

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

    top -d 10



7 监控网络状态



7.1 查看系统网络情况 netstat

  • 基本语法:

    netstat [选项]

  • 选项说明:


    -an

    :按一定顺序排列输出


    -p

    :显示哪个进程在调用

在这里插入图片描述

在这里插入图片描述

  • 应用案例:

    请查看服务名为 sshd 的服务的信息 指令 =>

    netstat -anp | grep sshd

在这里插入图片描述



7.2 检测主机连接命令 ping

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

    ping 对方ip地址



版权声明:本文为weixin_60766221原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。