第七章 进程管理

第七章 进程管理

  1. 进程是是正在执行的一个程序或命令,每个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。

  2. 程序是使用计算机语言编写可以实现特定目标或解决特定问题的代码集合。

  3. 进程管理作用:判断服务器健康状态、查看系统中所有进程、“杀死”进行

  4. 进程监控命令

    • ps命令
      查看系统中所有进程的详细信息

      基本格式:ps [选项]

      -a:显示一个终端中的所用进程

      -u:显示进程的归属用户及内存使用情况

      -x:显示没有控制终端的进程

      -l:以长格式显示更加详细的信息

      -e:显示所有进程

      ps -aux :显示系统中所有进程

      ps -le:显示系统中所有进程,看到进程的父进程PID和进程优先级

      ps -l:只能看到当前shell产生的进程

      ps -aux
      UESR PID %CPU %MEM VSZ  RSS TTY STAT START TIME COMMAND
      root 1   0.0  0.2  2872 1416 ?    Ss  Jun04 0:02 /sbin/init
      root 2   0.0  0.2  2872 1416 ?    Ss  Jun04 0:02 /sbin/init
      

      UESR 字段:进程是由哪个用户产生的

      PID字段:进程的ID

      %CPU字段:进程的CPU使用率

      %MEM字段:进程的物理内存使用率

      VSB字段:进程的虚拟内存占用大小

      RSS字段:进程实际内存占用大小

      TTY字段:进程是在哪个终端运行的,其中tty1-tty7本地控制台终端,tty1-tty6本地字符界面终端,tty7图形界面终端。pts/0~255代表虚拟终端,一般是远程链接的终端

      STAT字段:进程状态

      -D:进程处于不可被唤醒的睡眠状态,通常用于I/O

      -R:进程正在运行

      -S:进程处于睡眠状态,可以被唤醒

      -T:进程处于停止状态,可能在后台暂停或处于调试状态

      -W:进程处于内存交互状态(Linux2.6内核开始无效)

      -X:进程是“死掉”的进程

      -Z:进程是“僵尸”进程,进程已终止但还在内存当中;

      -<:进程具有高优先级

      -N:进程具有低优先级

      -L:进程被锁入内存

      -s:进程包含子进程

      -l:进程具有多线程

      -+:进程处于后台

      START字段:进程的启动时间

      TIME字段:进程占用CPU运算的时间

      COMMAND字段:产生进程的命令名

      ps -le
      F S UID PID PPID C PRI NI ADDR SZ  WCHAN TTY TIME     CMD
      4 s 0   1   0    0 80  0  -    718 -     ?   00:00:02 init
      

      F字段:进程标志,说明进程的权限,常见的标志有两个,1:可以被复制,不能被执行;4:超级用户权限

      S字段:进程状态,和STAT字段一致

      UID字段:运行进程的用户ID

      PID字段:进程的ID

      PPID字段:父进程的ID

      C字段:CPU占用率

      PRI字段:进程优先级,数值越小,优先级越高

      NI字段:进程优先级,数值越小,优先级越高

      ADDR字段:进程在内存的占用位置

      SZ字段:进程占用内存的大小

      WCHAN字段:进程是否在运行。“-”代表在运行

      TTY :进程是由哪个终端产生的

      TIME:进程占用CPU的运算时间

      CMD:产生进程的命令名

    • pstree命令

      以树形结构显示程序和进程之间的关系

      基本格式:pstree [选项] [PID或用户名]

      -a:显示启动每个进程对应的完整指令,包括启动进程的路径、参数等

      -c:不使用精简法显示进程信息,即显示进程中包含的子进程和父进程

      -n:根据进程是PID来排序

      -p:显示进程的PID

      -u:显示进程对应的用户名称

      init是系统启动的第一个进程,不指定PID或用户名时,以init为根进程

    • top命令
      动态监听进程的运行状态

      基本格式:top [选项]

      -d 秒:指定top命令每隔几秒刷新,默认是三秒

      -b:使用批处理模式输出,一般和"-n"选项合用,用于吧top命令定向到文件中

      -n 次:指定top命令执行的次数

      -p 进程PID:查看指定ID的进程

      -s:使top命令在安全模式中运行,避免在交互模式中出现错误

      -u 用户名:只监听某个用户的进程

      在top交互窗口中,可使用如下命令进行交互操作

      ?或h:显示交互命令的帮助

      P:按照CPU利用率排序

      M:按照内存占用排序

      N:按照PID排序

      T:按照CPU的累计运算时间排序

      k:按照PID给予某个进程一个信号,一般用于终止某个进程,信号9是强制终止信号

      r:按照PID给某个进程重设优先级

      q:突出top命令

      top的运行结果分为两个部分,第一部分是前五行,显示整个系统的资源使用状况;第二部分从第六行开始,显示系统中的进程信息。
      在这里插入图片描述

      第一行是任务信息:

      内容说明
      05:43:27表示当前时间
      up 1 day 4:52系统运行时间 本机已运行1天4小时53分钟
      2 users当前登录用户数
      load average: 0.58, 0.41, 0.30系统负载,1分钟、5分钟、15分钟的平均负载如果CPU是单核,超过1就是高负载,如果CPU是四核,超过4就是高负载

      第二行是进程信息

      内容含义
      159 total系统中进程总数
      1 running正在运行的进程数
      158 sleeping睡眠的进程数
      0 stopped停止的进程数
      0 zombie僵尸进程数

      第三行是CPU信息

      内容含义
      37.0% us用户模式的CPU占用率
      3.7% sy系统模式的CPU占用率
      0.0%ni用户进程空间内改变过优先级的进程占用CPU百分比
      59.3% id空闲CPU百分比
      0.0% wa等待输入/输出的CPU占用百分比
      0.0% hi硬中断(Hardware IRQ)占用CPU的百分比
      0.0% si软中断(Software Interrupts)占用CPU的百分比
      0.0% st虚拟时间比率,有虚拟机时,虚拟CPU等待实际CPU的时间比率

      第四行是物理内存信息

      内容含义
      1530752 K total物理内存总量
      1481968 K used使用的物理内存总量
      48784 K free空闲内存总量
      70988 K buffers(buff/cache)用作内核缓存的内存量

      第五行是行交换分区信息

      内容含义
      3905532 K total交换区(虚拟内存)总量
      267544 K used使用的交换区总量
      3637988 K free空闲交换区总量
      617312 K cached作为缓存的交换分区总量

      缓存:在读取硬盘中数据时,把最常用的数据保存在内存的缓存区中,再次读取数据时就不去硬盘读取了,而在内存读取,为了加快数据从硬盘中读取的速度而设置的空间

      缓冲:在向硬盘写入数据时,先把数据放入内存缓冲区,然后再向硬盘写入,把分散的写操作集中进行,减少磁盘碎片和硬盘反复寻道。为了加快数据写入硬盘的速度而设置的空间

      第二部分

      字段含义
      PID进程id
      USER进程所有者的用户名
      PR优先级
      NInice值。负值表示高优先级,正值表示低优先级
      P最后使用的CPU,仅在多CPU环境下有意义
      VIRT进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
      RES进程使用的物理内存大小,单位kb。RES=CODE+DATA
      SHR共享内存大小,单位kb
      S进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
      %CPUCPU占用率
      %MEM内存占用率
      TIME+进程共占用CPU的时间
      COMMAND命令名/命令行
    • lsof命令
      查询进程在调用那些文件

      基本格式:lsof [选项]

      -c 字符串:只列出字符串开头的进程打开的文件

      +d 目录名:列出某个目录中所有被进程调用的文件

      -u 用户名:只列出某个用户进程打开的文件

      -p PID:列出PID所指的进程打开的文件

  5. 结束进程命令

    常见进程信号

    信号代号信号名称说明
    1SIGHUP使进程 立即关闭,重新读取配置文件之后重启
    9SIGKILL立即结束程序运行,本信号不能被阻塞、处理、忽略,一般用于强制杀死进程
    15SIGTERM正常结束进程,使kill的默认信号
    19SIGSTOP暂停进程,相当于按下Ctrl+Z,该信号不能被阻断
    • kill命令

      向进程发送一个信号

      基本格式:kill [-信号] PID

    • killall命令
      依靠进程名关闭进程,可杀死一个用户的所有进程
      基本格式:killall [选项] [-信号] 进程名

      -i:交互式询问是否要杀死某个进程

      -I:忽略进程名的大小写

    • pkill命令
      和killall基本相同,通过进程名来结束进程,还可以按照终端号来踢出登录用户

      基本格式:pkill [-信号] 进程名

      基本格式:pkill [-信号] [-t 终端号] 进程名

  6. PRI内核动态调整优先级,用户不能修改,NI用户可修改的优先级;数值越小越先被执行

  7. PRI(最终值)=PRI(原始值)+NI

  8. NI值修改注意事项

    1. NI值的范围-20~19
    2. 普通用户NI的可调节范围0~19
    3. 普通用户只能调高NI值
    4. root可以设定任意用户的NI值
  9. NI值修改命令

    基本格式:nice [-n NI值] 命令

    只能修改为启动的NI值

    基本格式:renice [优先级] PIDPID

    只能修改为运行中的NI值

  10. 僵尸进程的产生一般是由于进程非正常停止或程序编写错误,因此父进程优先于子进程结束,而父进程又没有正确的回收子进程,从而子进程一直存在在内存中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值