進程管理,計劃任務

一、進程相關概念及系統管理工具


    進程概念

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

        Process: 運行中的程序的一個副本,是被載入內存的一個指令集合

            進程ID( Process ID, PID)號碼被用來標記各個進程

            UID、 GID、和SELinux語境決定對文件系統的存取和訪問權限,通常從執行進程的用戶來繼承

            存在生命周期

        task struct: Linux內核存儲進程信息的數據結構格式

        ask list:多個任務的的task struct組成的鏈表

        進程創建:

            init:第一個進程

                父子關系

            進程:都由其父進程創建, COW

                fork(), clone()

    進程優先級

        進程優先級:

            系統優先級: 數字越小,優先級越高

                0-139( CentOS4,5)

                    各有140個運行隊列和過期隊列

                0-98, 99( CenOS6)

            實時優先級: 99-0:值最大優先級最高

            Nice值: -20, 19對應系統優先級100-139或99

        Big O:時間復雜度,用時和規模的關系

            O(1), O(logn), O(n)線性, O(n^2)拋物線, O(2^n)

    進程內存:

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

        LRU: Least Recently Used 近期最少使用算法,釋放內存物理地址空間和線性地址空間

        MMU: Memory Management Unit負責轉換線性和物理地址

    IPC: Inter Process Communication

        同一主機上

            signal

            shm: shared memory

            semophore 信號量,一種計數器

        不同主機上:

            rpc: remote procedure call

            socket: IP和端口號

    進程狀態

        Linux內核:搶占式多任務

        進程類型:

            守護進程: daemon,在系統引導過程中啟動的進程, 和終端無關進程

            前臺進程:跟終端相關,通過終端啟動的進程

            注意:兩者可相互轉化

        進程狀態:

            運行態: running

            就緒態: ready

            睡眠態:

                可中斷: interruptable

                不可中斷: uninterruptable

            停止態: stopped,暫停于內存中,但不會被調度,除非手動啟動

            僵死態: zombie,結束進程,父進程結束前,子進程不關閉

    系統管理工具

        進程的分類:

            CPU-Bound: CPU密集型,非交互

            IO-Bound: IO密集型,交互

        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系統各進程的相關信息均保存在/proc/PID目錄下的各文件中

    列舉進程ps

        適用ps來查看進程信息

            ps [OPTION]…

        支持三種選項:

            UNIX選項 如-a

            BSD選項 如a

            GUN選項 如–help

        默認顯示當前終端中的進程

            a 選項包括所有終端中的進程

            x 選項包括不鏈接終端的進程

            u 選項顯示進程所有者的信息

            f 選項顯示進程的父進程

            o 屬性… 選項顯示定制的信息:

            ↘pid、 comm、 %cpu、 %mem、 state、 tty、 euser、 ruser

    進程管理工具

        VSZ: Virtual memory SiZe,虛擬內存集,線性內存

        RSS: ReSident Size, 常駐內存集

        STAT:進程狀態

            R: running

            S: interruptable sleeping

            D: uninterruptable sleeping

            T: stopped

            Z: zombie

            +: 前臺進程

            l: 多線程進程

            N:低優先級進程

            <: 高優先級進程

            s: session leader,會話(子進程)發起者

            常用組合: -ef

                -e: 顯示所有進程

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

            常用組合: -eFH

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

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

            常用組合:自定義

                -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: 實時優先級

    搜索進程

        最靈活: ps 選項 | 其它命令

        按預定義的模式: pgrep

            pgrep [options] patter

                -u uid: effective user,生效者

                -U uid: real user,真正發起運行命令者

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

                -l: 顯示進程名

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

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

        按確切的程序名稱: /sbin/pidof

            $ pidof bash

    系統工具

        uptime

        顯示當前時間,系統已啟動的時間、當前上線人數,系統平均負載( 1、 5、 10分鐘的平均負載,一般不會超過1)

        系統平均負載:

            指在特定時間間隔內運行隊列中的平均進程數。

        如果每個CPU內核的當前活動進程數不大于3的話,那么系統的性能良好。 如果每個CPU內核的任務數大于5,那么這臺機器的性能有嚴重問題。

        如果linux主機是1個雙核CPU的話,當Load Average 為6的時候說明機器已經被充分使用了。

    進程管理工具

        top:有許多內置命令:

            排序:

                P:以占據的CPU百分比,%CPU

                M:占據內存百分比,%MEM

                T:累積占據CPU時長,TIME+

        首部信息顯示:

            uptime信息: l命令

            tasks及cpu信息: t命令

            cpu分別顯示: 1 (數字)

            memory信息: m命令

        退出命令: q

        修改刷新時間間隔: s

        終止指定進程: k

        保存文件: W

    top命令

        選項:

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

            -b: 以批次方式

            -n #: 顯示多少批次

        欄位信息簡介

            us:用戶空間

            sy:內核空間

            ni:調整nice時間

            id:空閑

            wa:等待IO時間

            hi:硬中斷

            si:軟中斷(模式切換)

            st:虛擬機偷走的時間

            PID (Process Id):任務的進程ID

            PPID (Parent Process Pid):父任務的進程ID

            RUSER (Real User Name):任務的所有者真實名稱

            UID (User Id):任務所有者ID

            USER (User Name):任務所有者名稱

            GROUP (Group Name):任務所有者群組名

            TTY (Controlling Tty):終端

            PR (Priority):優先級

            %CPU (CPU usage):CPU使用率

            %MEM (Memory usage (RES)):內存使用率

            S (Process Status):進程狀態

            TIME+ (CPU Time, hundredths):CPU時間,精確到秒

    htop命令:需從Fedora-EPEL源安裝

        http://172.16.0.1/fedora-epel/7/x86_64

        選項:

            -d #: 指定延遲時間;

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

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

        子命令:

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

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

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

            t: 顯示進程樹

    內存工具

        vmstat命令:虛擬內存信息

            vmstat [options] [delay [count]]

            vmstat 2 5

        procs:

            r:等待運行的進程的個數,和核心數有關

            b:處于不可中斷睡眠態的進程個數(被阻塞的隊列的長度)

        memory:

            swpd: 交換內存的使用總量

            free:空閑物理內存總量

            buffer:用于buffer的內存總量

            cache:用于cache的內存總量

        swap:

            si:從磁盤交換進內存的數據速率(kb/s)

            so:從內存交換至磁盤的數據速率(kb/s)

        io:

            bi:從塊設備讀入數據到系統的速率; (kb/s)

            bo: 保存數據至塊設備的速率;

        system:

            in: interrupts, 中斷速率,包括時鐘

            cs: context switch, 進程切換速率

        cpu:

            us:Time spent running non-kernel code.

            sy: Time spent running kernel code

            id: Time spent idle. Linux 2.5.41前,包括IO-wait time.

            wa: Time spent waiting for IO. 2.5.41前,包括in idle.

            st: Time stolen from a virtual machine. 2.6.11前, unknown.

        選項:

             -s: 顯示內存的統計數據

        pmap命令:進程的內存映射

            pmap [options] pid […]

                -x: 顯示詳細格式的信息;

            #pmap 1

            另外一種實現:

            # cat /proc/PID/maps

    系統監控工具

        glances命令: EPEL源

        glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [–password] [-t refresh] [-f file] [-o output]

        內建命令:

            a Sort processes automatically 

            l Show/hide logs

            c Sort processes by CPU% 

            b Bytes or bits for network I/O

            m Sort processes by MEM% 

            w Delete warning logs

            p Sort processes by name 

            x Delete warning and critical logs

            i Sort processes by I/O rate 

            1 Global CPU or per-CPU stats

            d Show/hide disk I/O stats 

            h Show/hide this help screen

            f Show/hide file system stats 

            t View network I/O as combination

            n Show/hide network stats 

            u View cumulative network I/O

            s Show/hide sensors stats 

            q Quit (Esc and Ctrl-C also work)

            y Show/hide hddtemp stats

        常用選項:

            -b: 以Byte為單位顯示網卡數據速率

            -d: 關閉磁盤I/O模塊

            -f /path/to/somefile: 設定輸入文件位置

            -o {HTML|CSV}:輸出格式

            -m: 禁用mount模塊

            -n: 禁用網絡模塊

            -t #: 延遲時間間隔

            -1:每個CPU的相關數據單獨顯示

        C/S模式下運行glances命令

        服務模式:

            glances -s -B IPADDR

    IPADDR: 指明監聽的本機哪個地址

        客戶端模式:

            glances -c IPADDR

            IPADDR:要連入的服務器端地址

        dstat命令:系統資源統計

            dstat [-afv] [options..] [delay [count]]

            -c: 顯示cpu相關信息

            -C #,#,…,total

            -d: 顯示disk相關信息

            -D total,sda,sdb,…

            -m: 顯示memory相關統計數據

            -n: 顯示network相關統計數據

            -p: 顯示process相關統計數據

            -r: 顯示io請求相關的統計數據

            -s: 顯示swapped相關的統計數據

            –tcp

            –udp

            –unix

            –raw

            –socket

            –ipc

            –top-cpu:顯示最占用CPU的進程

            –top-io: 顯示最占用io的進程

            –top-mem: 顯示最占用內存的進程

            –top-latency: 顯示延遲最大的進程

    系統管理工具

        kill命令:

            向進程發送控制信號,以實現對進程管理

            顯示當前系統可用信號: kill -l

            常用信號: man 7 signal

                1) SIGHUP: 無須關閉進程而讓其重讀配置文件

                2) SIGINT: 中止正在運行的進程;相當于Ctrl+c

                9) SIGKILL: 殺死正在運行的進程

                15) SIGTERM:終止正在運行的進程

                18) SIGCONT:

                19) SIGSTOP:

                指定信號的方法:

                (1) 信號的數字標識; 1, 2, 9

                (2) 信號完整名稱; SIGHUP

                (3) 信號的簡寫名稱; HUP

            按PID: kill [-SIGNAL] pid …

            按名稱: killall [-SIGNAL] comm…

            按模式: pkill [options] pattern

                -SIGNAL

                -u uid: effective user,生效者

                -U uid: real user,真正發起運行命令者

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

                -l: 顯示進程名

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

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

原創文章,作者:DYW,如若轉載,請注明出處:http://www.www58058.com/46130

(0)
DYWDYW
上一篇 2016-09-18
下一篇 2016-09-18

相關推薦

  • Linux basics–part1

    一、計算機的組成及其功能 依據馮·諾依曼體系結構,計算機可分為五大部分,CPU的運算器和控制器、內存、輸入、輸出。 CPU運算器:計算機中執行各種算術和邏輯運算操作的部件。運算器的基本操作包括加、減、乘、除四則運算,與、或、非、異或等邏輯操作,以及移位、比較和傳送等操作,亦稱算術邏輯部件(ALU)。運算器由算術邏輯單元(ALU)、累加器、狀態寄存器、通用寄存…

    Linux干貨 2017-07-10
  • 計算機基礎知識點

    說明:(僅僅記錄個人認為重要的內容) CPU的相關概念 主頻:主頻是cpu的時鐘頻率(cpu clock speed),是cpu運算時的工作頻率(1秒內發生的同步脈沖數) 的簡稱。單位是HZ,一般 來說,主頻越高,cpu的速度越快。由于內部結構的不同,并非所有的時鐘頻率 相同的cpu的性能都一樣  外頻:系統…

    Linux干貨 2017-02-14
  • 馬哥教育網絡班21期+第2周課程練習

    一、Linux文件管理類命令匯總 1、文件的復制命令:cp 復制命令:cp     cp [OPTION]… [-T] SOURCE DEST     cp [OPTION]… SOURCE… DI…

    Linux干貨 2016-07-29
  • DNS服務器之配置

    一、安裝DNS服務器     DNS服務的安裝包為bind,使用yum直接安裝即可:     安裝完成后,查看DNS服務相關的文件: 二、配置正向區域     1、在配置正向區域之前,先來看下主配置文件中的內容:    &nbsp…

    Linux干貨 2015-05-03
  • Linux的正則表達式grep,egrep

    Linux的正則表達式grep,egrep 一、概念 正則表達式是對字符串操作的一種邏輯公式,用事先定義好的一組特殊字符,組成一個“規則字符集合”,根據用戶指定的文本模式對目標文件進行逐行搜索匹配,顯示能被模式匹配到的結果。 給定一個正則表達式和另一個目標字符串,我們可以從給定的字符串中通過匹配模型,過濾字符串中不想要的的字符串,得到目標字符串,減少工作量?!?/p>

    Linux干貨 2017-05-07
  • 磁盤管理

    設備類型分為字符設備和塊設備 主設備號用來標識設備類型,次設備號標識同一類型下的不同設備 硬盤設備命名: scsi,sata,sas,usb:/dev/sd 不同設備/dev/sda  /dev/sdb 同一設備不同分區:/dev/sda1,/dev/sdb2…… 硬盤: 一片磁盤的一面叫做盤面,一張盤片有兩個盤面 每個盤面有一個磁頭,最多有256…

    Linux干貨 2016-08-30
欧美性久久久久