Linux:Day12(上) 進程

內核的功用:進程管理、文件系統、網絡功能、內存管理、驅動程序、安全功能安全

Process:運行中的程序的一個副本。網絡

  存在生命週期session

Linux內核存儲進程信息的固定格式 :task struct多線程

  多個任務的task struct組件的鏈表:task listsocket

進程建立:ide

  init工具

    父子關係ui

    進程:都由其父進程建立線程

      fork(),clone()設計

  進程優先級:

    0-139:

      1-99:實時優先級;

        數字越大,優先級越高;

      100-139:靜態優先級;

        數字越小,優先級越高;

      Nice值:

        -20,19

    Big O

      O(1),O(logn),O(n),O(n^2),O(2^n)

  進程內存:

    Page Frame:頁框,用存儲頁面數據

      存儲Page

      MMU:memory Management Unit 

  IPC:Inter Process Communication

    同一主機上:

      signal

      shm:shared memory

      semerphor

    不一樣主機上:

      rpc:remote procesure call    遠程過程調用

      socket:

Linux內核:搶佔式多任務

  進程類型:

    守護進程:daemon,在系統引導過程當中啓動的進程,跟終端無關的進程;

    前臺進程:跟終端相關,經過終端啓動的進程

      注意:也能夠把在前臺啓動的進程送日後臺,以守護模式運行;

  進程狀態:

    運行態:running

    就緒態:ready

    睡眠態:

      可中斷:interruptable

      不可中斷:uninterruptable

    中止態:暫時於內存中,但不會被調度,除非手動啓動之:stopped

    僵死態:zombie

  進程的分類:

    CPU-Bound

    IO-Bound

  《Linux內核設計與實現》,《深刻理解Linux內核》,  

 

Linux進程查看及管理的工具:pstree,ps,pidof,pgrep,top,htop,glance,pmap,vmstat,dstat,kill,pkill,job,bg,fg,nohup

  pstree命令:

    pstree - display a tree of processes

  ps:process state

    ps - report a snapshot of the current processes

    Linux系統各進程的相關信息均保存在/pro/PID目錄下的各文件中;

    ps [OPTION]...

      選項:支持兩種風格

      經常使用組合:aux

        u:以用戶爲中心組織進程狀態信息顯示

        a:與終端相關的進程;

        x:與終端無關的進程;

        ~]# ps aux

        USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

        進程屬主   進程ID  佔據CPU時間百分比   佔據內存空間百分比  虛擬內存大小

        VSZ:Virtual memory SiZe

        RSS:ReSident Size,常駐內存集

        TTY:從哪一個終端啓動的,?表明與終端無關

        STAT:進程狀態

          R:running

          S:interruptable sleeping

          D:uninterruptable sleeping

          T:stopped

          Z:zombie

          +:前臺進程

          l:多線程進程

          N:低優先級進程

          <:高優先級進程

          s:session leader

          TIME:運行佔據CPU的累計時長

          COMMAND:由什麼命令啓動的相關進程

      經常使用組合:-ef

        -e:顯示全部進程

        -f:顯示完整格式程序信息

      經常使用組合:-eFH

        -F:顯示完整格式的進程信息

        -H:以進程層級格式顯示進程相關信息

      經常使用組合:-eo,axo

        -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm

        axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm

          ni:nice值

          pri:priority,優先級

          psr:processor,CPU

          rtprio:實時優先級

  pgrep,pkill

    pgrep [OPTION] pattern

    pkill [OPTION] pattern

      -u uid:effective user

      -U uid:real user

      -t terminal:與指定終端相關的進程

      -l:顯示進程名

      -a:顯示完整格式的進程名

      -P pid:顯示其父進程爲此處指定的進程的進程列表

  pidof:根據進程名獲取其PID;

  top:

    有許多內置命令:

      排序:

        P:以佔據的CPU百分比;

        M:佔據內存百分比;

        T:累積佔據CPU時長;

      首部信息顯示:

        uptime信息:l 命令

        tasks及cpu信息:t命令

          cpu分別顯示:1(數字)

        memory信息:m命令

        Cpu(s):  0.0%us,  0.2%sy,  0.0%ni, 99.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

           用戶空間  內核空間  nice值  空間時間  等待時間  硬中斷時間  軟中斷時間  被偷走的時間       【各自時間所佔據的比例】

      退出命令:q

      修改刷新時間間隔:s

      終止指定進程:k

    選項:

      -d #:指定刷新時間間隔,默認爲3秒

      -b:以批次方式

      -n #:顯示多少批次;

  htop命令:

    選項:

      -d #:指定延遲時間;

      -u UserName:僅顯示指定用戶的進程;

      -s COLOMN:以指定字段進行排序;

    命令:

      s:跟蹤選定進程的系統調用;

      l:顯示選定進程打開的文件列表;

      a:將選定的進程綁定至某指定CPU核心;

      t:顯示進程樹

    注意:Fedora-EPEL源

相關文章
相關標籤/搜索