centos中进程管理工具

进程管理:
 二进制的格式为ELF,是CPU指令集中的指令
 程序=指令+数据,
 进程是程序的副本,可以有多个
 内核是一个资源调度监视器
 Linux是抢占式多任务
 内存被事先划分成多个相同大小的页框
 LIU:最近最少使用
 mmap 共享内存
 通过fork()进程生成
 内存泄漏


 init是所有进程的父进程
 task_struct任务结构:是一种数据结构
 双向循环链表
 线程是一个进程内的多个执行流
WLP:轻量级进程
模式转换:


时钟驱动:
    进程优先级:


    是进程调度的核心资源


    公平:
        结果公平:
起点公平:
算法:完成工作的调度方式
BIG O 
    O(1)
    O(logn)
    O(n)
    O(N^2)
    O(2^N)
一共140个队列
0-99 为实时优先级


进程的分类:
  CPU-Bound:CPU密集型
  I/O-Bound:I/O密集型


进程的分类:
     批处理进程
     交互式进程
     实时进程


进程调度器:
    进程优先级:0-139
        实时优先级: 1-99,数字越大,优先级越高
静态优先级:100-139,nice值调整,数字越大,优先级越低
                    nice:-20,19
   priority:100,139
  动态优先级:由内核维护,动态调整


进程状态:
      运行态:running R
         就绪态:
      睡眠态:sleeping
          可中断睡眠 inruptable
 不可中断睡眠 uninruptable
      停止态:不会被调度 stopped
      僵死态:zombie


进程管理命令:
  ps pstree pidof top htop pmap vmstat dstat


ps:显示进程状态的命令
   进程:
       与终端相关的进程:a
       与终端无关的进程:x
            D:不可中断的睡眠
            R:运行或就绪
            S:可中断的睡眠
            T:停止
            Z:僵死
              
            s:session leader 有子进程
            +:前台进程
            l:多线程进程
            N:低优先级进程
            <: 高优先级进程
            u:以用户为中心显示进程相关信息
            VSZ:虚拟内存集,Virutal menmory Size
            RSS:常驻内存集,
            STIME:启动时间
            TIME:累计占用的内存时间 []表示内核线程
    常用组合一:ps aux
    其他常用选项:
         -e:显示所有进程
         -f:以进程的长格式显示
     常用组合之二:ps -ef
     常用组合之三:ps -eFH
          -F:显示额外信息
     -H:显示进程的层次信息
pstree:显示进程树


      自定义要显示的信息:-o
              ps  auo pid command
               rtprio:实时优先级
      ni:nice值
      pri:优先级
      psr:运行的cpu
pgroup:
   -U Username:仅显示指定用户的进程的进程的PID
   -G Groupname:仅显示指定用户组的进程的进程的PID


pidof:显示指定命令所启动的pid
    pidof command
 
top:
  M:按内存占用百分比大小排序
  P:按cpu占用百分比大小排序,默认
  T:按累计占有时长进行排序
  1:分开显示
  l: 是否显示负载信息
  t:是否显示cpu和进程的统计信息
  m:是否显示内存和交互分区的信息
  q:退出
  k:kill,杀掉进程
  s:改变top刷新频率
top - 11:49:38 up  3:18,  1 user,  load average: 0.00, 0.00, 0.00
Tasks: 120 total,   1 running, 119 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.3%sy,  0.0%ni, 99.3%id,  0.0%wa,  0.0%hi,  0.3%si,  0.0%st
Mem:    502168k total,   420160k used,    82008k free,    57496k buffers
Swap:  2097144k total,        0k used,  2097144k free,   254164k cached


  常用选项:
     -d #:指定刷新时间间隔
     -b:以批次显示top的刷新
     -n # 指定指定的次数
htop
    u:选择指定用户的进程
    l: 显示进程所打开的文件列表
    s:显示进程执行的系统调用
    a:显示进程的进程的cpu上
    #:快速将光标定位之指定的PID进程上
    quit


vmstst
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0  57460  54564 285520    0    0    30     5   21   14  0  0 99  1 
  procs
    r:运行或等待cpu时间片的进程的个数
    b:被阻塞(通常为等待I/O完成)的进程的长度
  memory
    swpd:从物理内存交互至swap中的数据量
    free:未使用的内存大小
    buffer:buffer空间大小,通常与缓存写操作相关
    cache:cache空间大小,通常与缓存读操作相关
  swap
    si:swap in 数据进入swap中的数据量,通常是速率。kb/s
    so:swap out 数据离开swap中的数据量,通常是速率。kb/s
  io:
    bi:block in:从块设备读入的数据量,通常是速率,kb/s
    bo:block out:保存至块设备中的数据量,通常是速率,kb/s
   
    in:中断发生频率。每秒的中断数
    cs:context switch 上下文切换,进程切换,通常是速率,kb/s
  cpu:
    us:用户空间的使用率
    sy:内核空间的使用率
    id:空闲
    wa:等待的
    st:被偷走的
    
   使用格式
   vmstat [delay [counts]]
     -s:显示内存统计数据


dstat,nice,作业管理


进程:nice
      用来手动调整进程优先级


      默认nice为0.其默认优先级为120


      nice:普通用户只能调大此值


      对于尚未启动的程序
         nice -n # COMMAND 表示进程以#进程启动


       对于运行中的进程:
          renice # PID 调整PID的nice值


        查看 ps axo ni command pid


    kill命令:可以实现向其他进程发送信息
     
       kill -l :可以查看向进程发送的所有信息
       man 7 sigual
       
       kill -SIGNAL PID
             -SIGNAL:
        数字代号:比如1,9等
信号名称:如SIGHUP等
简写的信号名称:如HUP等


        1) SIGHUP:让程序重读配置文件,而不用重启程序
        2) SIGINT:中断信号。Ctrl+c即发送次信号  
        9) SIGKILL:杀死进程
        15) SIGTERM:终止进程,比较优雅(默认)
        
killall -SIGNAL 进程名






Linux的作业控制
    前台作业:占据着一个终端
    后台作业:作业执行时不占据终端,作业启动后就释放终端


    非守护进程类的程序,启动以后都在前台工作
          如果已经启动:前台-->后台。ctrl+z把前台作业送往后台,作业被”停止“
 如果尚未启动:COMMAND &


 退出当前会话,作业也会终止,因为作业与当前终端相关,如果把作业送往后台后,不期望作业随终止结束而停止
            nohup COMMAND &
           
  如何让送往后台的作业继续执行:
   fg [[%]作业号码]:将作业调回前台继续进行
   bg [[%]作业号码]:让作业在后台继续进行
       默认的为最后一个进入后台的任务
              kill %作业号码:终止作业   
  查看作业号:
      jobs
回顾终端:
    /dev/tty#
    /dev/ttyS#
    /dev/pts/#
    /dev/console


pmap pid


00007fb60640d000      4K    rw---  /sbin/init
起始地址              空间  权限    


命令总结:
  ps pstree pidof pgrep top htop vmstat dstat nice renice kill jobs killall fg bg nohup pmap


常用命令举例:
    1.查找名为httpd的程序 ps aux | grep http
    2.杀死一个进程:
        方法①
        首先查出该进程的pid: # pidof httpd
        停止该进程:          # kill -15 pid


        方法②
        强行中断进程(不推荐)
        kill -9 pid





     



posted @ 2015-12-18 16:18  reblue520  阅读(530)  评论(0编辑  收藏  举报