• 十一、进程管理


    一、基本介绍

    • 在LINUX中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个ID号。

    • 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如www服务器

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

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

    (1)、显示系统执行的进程

    # 显示所有的进程
    ps -aux
    # 显示当前终端的所有进程信息
    ps -a
    # 以用户的格式显示进程信息
    ps -u
    # 显示后台进程运行的参数
    ps -x

    # 查看sshd进程
    ps -aux | grep sshd 

    (2)、ps详解

    # 比如我看看有没有sshd服务
    ps –aux|grep xxx ,

      指令说明

      • 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:启动进程所用的命令和参数,如果过长会被截断显示

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

    ps -ef

    • -e 是显示所有的进程,-f全格式
    • UID:用户ID
    • PID:进程ID
    • PPID:父进程ID
    • C:CPU用于计算执行优秀级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低,数值越小,表明进程是I/O密集型运算,执行优先级会提高。
    • STIME:进程启动的时间
    • TTY:完整的终端名称
    • TIME:CPU时间
    • CMD:启动进程所用的命令参数和时间。

    二、终止进程kill和killall

    (1)、介绍

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

    (2)、基本语法

    # 通过进程号杀死进程 -9 强制终止
    kill  [选项] 进程号     
    
    # 通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用
    killall 进程名称 

    (3)、常用选项

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

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

      案例2: 终止多个gedit 编辑器

    killall gedit

      案例3:强制杀掉一个终端 对于 bash

    kill -9 对应的bash的进程号

    三、查看进程树pstree

    (1)、基本语法:

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

    (2)、常用选项:

    • -p :显示进程的PID

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

    (3)、应用实例:

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

    pstree -p

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

    pstree –u
    pstree -pu

    四、服务(service)管理

    (1)、service管理指令

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

    service管理指令:

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

      在CentOS7.0后 不再使用service ,而是 systemctl

    使用案例:

       查看当前防火墙的状况,关闭防火墙和重启防火墙

    service iptables status

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

    service iptables stop 
    service iptables start

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

    (2)、查看服务名

      方式一:

    [root@s2 ~]# setup

      通过tab键调整光标

     方式二:

    [root@s2 ~]# ll /etc/init.d/
    total 44
    -rw-r--r--. 1 root root 13948 Sep 16  2015 functions
    -rwxr-xr-x. 1 root root 10576 Jun 22 16:36 mysqld
    -rwxr-xr-x. 1 root root  2989 Sep 16  2015 netconsole
    -rwxr-xr-x. 1 root root  6630 Sep 16  2015 network
    -rw-r--r--. 1 root root  1160 Nov 20  2015 README

    (3)、chkconfig指令

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

    • 基本语法
    #查看服务
    chkconfig --list|grep xxx
    
    chkconfig 服务名 --list
    
    # 可以指定某个服务,某个运行级别,开启或关闭
    chkconfig --level 5 服务名称 on/off
    
    # 不管是哪个级别都关闭
    chkconfig 服务名 on/off
    • 应用案例
    # 案例一:请显示当前系统所有服务的各个运行级别的运行状态
    chkconfig --list
    
    # 案例二:请查看sshd服务的运行状态
    service sshd status
    
    # 案例三:将sshd服务在运行级别5下设置为不自动启动,
    chkconfig --level 5 sshd off
    
    # 案例四:当运营级别为5时,关闭防护墙
    chkconfig --level 5 iptables off
    
    # 案例五:在所有运行级别下,关闭防火墙
    chkconfig iptables off
    

      注意事项:chkconfig重新设置服务后自启动或关闭,需要重启机器reboot才能生效。

    五、动态监控进程

      top与ps命令很相似。它们都用来显示正在执行的进程。Top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的的进程(默认每3秒变化一次)

    # 基本语法
    top [选项]
    选项 功能
    -d 秒数 指定top命令每个几秒更新,默认是3秒在top命令的交互模式当中可以执行的命令
    -i 使用top不显示任何闲置或者僵死的进程
    -p 通过指定监控进程id来仅仅监控某一个进程的状态

       交互操作说明

    操作 功能
    P 以CPU使用率排序,默认就是P
    M 以内存的使用率排序
    N 以PID排序
    q 退出top
    # 案例一:监视特定用户
    top:输入此指令,按回车键,查看执行的进程
    u:然后输入"u"回车,再输入用户名称,即可
    
    # 案例二:终止指定的进程
    top:输入此指令,按回车键,查看执行的进程
    k:然后输入"k",在输入要结束的进程ID号
    
    # 案例三:指定系统状态更新时间(每隔10秒钟自动更新,默认是3秒)
    top -d 10

    五、top指令详解

      查看多核CPU命令

    # 方式一
    mpstat -P ALL  
    
    # 方式二
    sar -P ALL 

      top命令解释

    行号 解释
    第一行
    • 17:10:16 — 当前系统时间
    • 1:55 — 系统已经运行了1小时55分钟(在这期间没有重启过)
    • 2 users — 当前有2个用户登录系统
    • load average: 0.00, 0.01,0.05 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。
      load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
    第二行
    • Tasks — 任务(进程),系统现在共有415个进程,其中处于运行中的有1个,414个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。
    第三行:cpu状态
    • 0.0% us — 用户空间占用CPU的百分比。
    • 0.1% sy — 内核空间占用CPU的百分比。
    • 0.0% ni — 改变过优先级的进程占用CPU的百分比
    • 99.8% id — 空闲CPU百分比
    • 0.0% wa — IO等待占用CPU的百分比
    • 0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比
    • 0.1% si — 软中断(Software Interrupts)占用CPU的百分比
    第四行:内存状态
    • 1868688k total — 物理内存总量
    • 935044k   used — 使用中的内存总量
    • 486580k   free — 空闲内存总量
    • 447064k   buffers — 缓存的内存量 (79M)
    第五行:swap交换分区
    • 4194300k    total — 交换区总量
    • 4194300k      used — 使用的交换区总量
    • 0k                 ree — 空闲交换区总量
    • 1176168k      cached — 缓冲的交换区总量
    第六行
    • 空行
    第七行:各进程(任务)的状态监控
    • 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 — 进程名称(命令名/命令行)

    参考博客:https://www.cnblogs.com/edgedance/p/7044753.html

    七、监控网络状态

      查看系统网络情况netstat

    # 基本语法
    netstat [选项]

      选项说明

    • -an 按一定顺序排列输出

    • -p 显示哪个进程在调用

      应用案例

    #请查看服务名为 sshd 的服务的信息。
    Netstat –anp | grep sshd
    #如果我们希望查看当前系统有哪些端口在监听
    netstat  -tlnp  
  • 相关阅读:
    机器学习相关——协同过滤
    推荐系统绝对不会向你推荐什么
    “猜你喜欢”是怎么猜中你心思的?
    Python-Matplotlib安装及简单使用
    经典的机器学习方面源代码库
    Python正则表达式指南
    Python yield 使用浅析
    c++编程规范的纲要和记录
    深度理解依赖注入(Dependence Injection)
    依赖注入
  • 原文地址:https://www.cnblogs.com/jdy1022/p/14152223.html
Copyright © 2020-2023  润新知