zoukankan      html  css  js  c++  java
  • linux 进程管理

    linux进程:

    内核的功用: 进程管理,文件系统,网络功能,内存管理,驱动程序,安全功能。

    1、在用户空间里运行的进程,就是用户进程,所属的状态为用户态

     2、在内核空间里运行的进程,就是系统进程,所属的状态为内核态

    process是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源(内存、CPU)分配和调度的一个独立单位

    1、进程控制块(PCB)

      是系统感知进程存在的唯一凭证,是数据结构,占用内存空间。

    2、进程上下文

      1、上文:已执行过的进程指令和数据在相关寄存器和堆栈中的内容称为上文。

      2、正文:正在执行的指令和数据在相关寄存器和堆栈中的内容。

      3、下文:待执行的指令和数据在相关寄存器和堆栈中的内容。

    进程上下文切换:

      指多任务系统中,CPU的控制权由运行任务,转移到另外一个就绪任务时所发生的事件;当前运行任务转为就绪(或者挂起、删除)状态,另一个被选定的就绪任务成为当前任务

    一个进程包含多个属性参数,这些参数决定了进程被处理的先后顺序、能够访问的资源等

    常用参数:

    PID:进程的ID。

    PPID:父进程的ID。应用程序只能通过克隆自己来产生新的进程。子进程应该是父进程的克隆体。

    UID和EUID:真实和有效的用户ID。

    GID和EGID:真实和有效的组ID。

    谦让度和优先级:进程的优先级决定了受到CPU‘优待的程度,优先级越高的进程能够更早的被处理,并获得更多的处理器时间。绝大多数下进程何时被处理是内核的事,用户不需要 插手,用户可以通过设置进程的‘谦让度’来影响内核的想法。谦让度与优先级是相反的,高谦让度意味着低优先级。用户可以吧它谦让度设置低一些,让进程更早的被处理。

    监视进程:ps命令

       最常用的方法是ps aux,然后再通过管道使用grep命令过滤查找特定的进程,然后再对特定的进程进行操作。
         ps aux | grep program_filter_word,ps -ef |grep tomcat

    ps aux命令用于显示当前系统运行的所有进程的信息。    

    [songshichao@song ~]$ ps aux  
    USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root          1  1.1  0.4 128164  6820 ?        Ss   21:51   0:03 /usr/lib/systemd/syst
    root          2  0.0  0.0      0     0 ?        S    21:51   0:00 [kthreadd]

    ...... 

     root          648 0.0 0.0 84500    888 ?        S<sl 21:51 0:00 /sbin/audispd
     root          650 0.0 0.0 24052    900 ?        S< 21:51 0:00 /usr/sbin/sedispatch
     libstor+      672 0.0 0.0 8532     804 ?        Ss 21:51 0:00 /usr/bin/lsmd -d
     dbus          673 0.3 0.2 36388    3352 ?       Ssl 21:51 0:00 /bin/dbus-daemon --sy

      USER :进程创建者的用户名。

      PID :进程的ID。

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

      %MEM:进程占用内存的百分比。

      VSZ:进程占用的虚拟内存的大小。

      RSS:内存中的也的数量(页是管理内存的单位,在pc通常为4k)

      STAT:进程状态,常用字母如下:

                R:正在运行 ;D:睡眠中(不可被唤醒,通常是在等待I/O设备);S:睡眠中(可以被唤醒);T:停止;Z:僵进程(已经结束但没有释放系统资源)

                  常用附加标志:<:进程拥有比普通优先级高的优先级;N:进程拥有比普通优先级低的优先级;L:有些页面被锁在内存中;s:会话的先导程序;+:前台进程;l:多线程进程;

      ATART:线程启动时间。

      TIME:进程已占用的CPU时间。

      COMMAND:命令和参数。   

    ps lax 命令提供父进程(PPID)和谦让度(NI)

    [songshichao@song ~]$ ps lax
    F   UID    PID   PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
    4     0      1      0  20   0 128164  6820 ep_pol Ss   ?          0:03 /usr/lib/systemd
    1     0      2      0  20   0      0     0 kthrea S    ?          0:00 [kthreadd]
    1     0      3      2  20   0      0     0 smpboo S    ?          0:00 [ksoftirqd/0]

    pstree命令以树状图的方式展现进程之间的派生关系,显示效果比较直观

    ps -ef  命令显示所有进程信息,连通命令行

    top命令,即时跟踪进程信息,显示的信息会占满一页,自动更新,使用CPU最多的程序会排在最前面。用户可以即时观察当前系统CPU使用率,内存占有率等,使用q退出这个监视程序

    [songshichao@song ~]$ top
    
    top - 22:24:50 up 33 min,  2 users,  load average: 0.00, 0.01, 0.09
    Tasks: 182 total,   1 running, 181 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  0.3 us,  0.7 sy,  0.0 ni, 98.7 id,  0.2 wa,  0.0 hi,  0.2 si,  0.0 st
    KiB Mem :  1646888 total,   481764 free,   680660 used,   484464 buff/cache
    KiB Swap:  2097148 total,  2097148 free,        0 used.   756604 avail Mem 
    
       PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND           
       700 root      20   0  305296   6296   4916 S   1.0  0.4   0:03.71 vmtoolsd          
      1805 songshi+  20   0 2080076 190236  51904 S   0.7 11.6   0:31.08 gnome-shell       
      3203 songshi+  20   0  157716   2264   1548 R   0.7  0.1   0:00.29 top           

    lsof命令,查看占用文件的进程,获得某个特定文件正在被哪些进程使用,需要提供文件名。如果不写就累出当前系统所有打开文件的进程信息。

    free命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。

    kill命令,向进程发送信号。

      kill [-signal] pid

      kill 12974  等同于 kill -TERM 12974

      kill -9 pid  #强制关闭

      sudo kill -KILL pid :在内核的级别上杀死一个进程,绝大多数情况下可以确保结束进程号PID的进程

    nicerenice :调整进程的谦让度

      nice命令可以在启动程序的时候设置其谦让度  ,谦让度的值应该在-20~+19之间浮动

             nice -n 2 bc :设置bc以谦让度增量2启动

        nice bc : 将谦让度增量设置为10

      renice命令可以在进程运行的时候调整其谦让度。

        renice +12 -p 8567# -p选项制定进程的PID,此命令将bc程序谦让度调整为12

      

      

  • 相关阅读:
    codevs 1164 统计数字
    codevs 2597 团伙
    codevs 1472 体检
    Openjudge 1.13-21:最大质因子序列
    Openjudge 1.13-23:区间内的真素数
    codevs 1388 砍树
    codevs 1536 海战
    codevs 3110 二叉堆练习3
    codevs 2879 堆的判断
    Openjudge 1.13.37:乒乓球
  • 原文地址:https://www.cnblogs.com/master-song/p/8811212.html
Copyright © 2011-2022 走看看