進程管理

進程管理

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

  • 用戶模式(空間),內核模式(空間)

  • Process(進程):運行中的程序的一個副本

        存在生命周期

  • task struct:內核的結構體

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

  • 多個任務的task strcut組件的鏈表:task list

進程的創建:


  • init

         父子關系

         進程:都是其父進程創建

                fork(),clone()

  • 進程的優先級:

         0-139:

                 ·1-99:實時優先級

                    數字越大優先級越高

                 ·100-139:靜態優先級

                    數字越小優先級越高

        

                 ·Nice值:

                    -20-19

優先級1.png

         Big 0 (算法的復雜度)

              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 procecure call

                 ·socket:套接字

        

Linux內核:搶占式多任務

  • 進程類型:

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

            daemon:守護進程

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

            注意:也可把在前臺啟動的進程送往后臺(比如http等服務類進程)

  • 進程狀態:

         運行態:running

         就緒態:ready

         睡眠態:

                 可中斷睡眠:interruptable

                 不可中斷睡眠:uninterruptable

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

         僵死態:zomble

  • 進程的分類:

         CPU-Bound:長時間占用CPU資源的進程

         IO-Bound:長時間占用IO資源的進程

Linux系統上的進程查看及管理工具:

        pstree,ps,pidof,pgrep,top,htop,glances,pmap,vmstat,kill,pkill,job,bg,fg,nohup,nice,renice,killall,…


  • 不同CentOS系統上的1號進程:

         CentOS5:SysV init

         CentOS6:upstart(但是被偽裝成init,以此兼容)

         CentOS7:systemd

        

              /sbin/init

        

  • pstree命令:

     pstree – display a tree of processes

             選項:

             -p:顯示進程號

  • ps命令:

     ·/proc/:內核中的狀態信息,以人能看懂的方式展示出來

     ·內核參數;

             可以設置其值從而調整內核運行特性的參數:/proc/sys/

             狀態變量:其用于輸出內核中統計信息或狀態信息,僅用于查看

    

     ·參數:模擬成文件系統類型:

     ·進程:

             /proc/#

                #:PID

    ps – report a snapshot of the current processes.

     ·ps [options];

             選項有三種風格:

             1   UNIX options, which may be grouped and must be preceded by a dash.

             2   BSD options, which may be grouped and must not be used with a dash.

             3   GNU long options, which are preceded by two dashes.

     ·啟動進程的方式:

             系統啟動過程中自動啟動:與終端無關的進程

             用戶通過終端啟動:有終端相關的進程

    

     ·選項:

             a:所有與終端相關的進程

             x:所有與終端無關的進程

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

            

             常用組合之一:aux

             字段含義:

                     VSZ:虛擬內存集(進程占虛擬內存大小)

                     RSS:Resident Size(進程占物理內存大小)

                     STAT:(進程狀態)

                     R:running

                     S:interruptable sleeping

                     D:uninterruptable sleeping

                     T:Stopped

                     Z:zomble

                    

                     +:前臺進程

                     l:多線程進程

                     N:低優先級進程

                     <:高優先級進程

                     s:session leader(會話領導者,殺死領導者,子子孫孫都死了)

    

             -e:顯示所有進程

             -f;顯示完整格式的進程信息

            

             常用組合之二:-ef

            

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

                 字段信息:

                     C:cpu utilization

                     PSR:運行在那顆CPU之上

                     -H:以層級結構顯示進程的相關信息

    

             常用組合之三:-eFH

            

             常用組合之四:

                     o field1,field2,….:自定義要顯示的字段列表,以逗號分割

                             常用的field:pid,ni,priority,psr,pcpu,stat,comm,tty,ppid,rtprio,euser,ruser

                                     ni:nice值

                                     priority:優先級

                                     rtprio:real time priority,實時優先級

                     -eo ,axo

  • pgrep,pkill命令:

     ·pgrep, pkill – look up or signal processes based on name and other attributes

    

     ·pgrep [options] pattern

             -u uid:effective user  命令生效者

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

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

             -l:顯示進程名

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

             -P pid:顯示此進程的子進程

  • pidof命令:   顯示與進程相關的所有PID

    根據進程名,取其pid

  • top命令:

     ·top – display Linux tasks

    

     ·排序:

             P:以占據CPU百分比排序(也是默認排序方式)

             M:以占據內存百分比排序

             T:以累計占用CPU時間排序

    

     ·首部信息:

             uptime信息:l命令開啟或關閉

             tasks及cpu信息:t命令開啟或關閉

             內存信息:m命令開啟或關閉

             cpu信息:1(數字1)開啟或關閉顯示的多個CPU信息

    

     ·退出命令:q

     ·修改刷新時間間隔:s

     ·中止指定的進程:k

    

     ·選項:

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

             -b:以批次方式顯示

             -n # :以批次方式顯示多少批

  • uptime命令:顯示系統時間,當前登錄用戶個數,運行時長及平均負載

     過去1分鐘、5分鐘、15分組的平均負載

     等待運行的進程隊列的長度

  • epel包:運維過程中大量使用的包

  • htop命令:

     ·選項:

             -d #:指定延遲時間

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

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

    

     ·子命令:

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

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

             t:以層級關系顯示各進程狀態

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

  • vmstat命令:

     ·vmstat – Report virtual memory statistics

    

     ·vmstat [options] [delay[count]]

     ·procs:

             r:等待運行的進程的個數:CPU上等待運行的任務的隊列長度

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

     ·memory:

             swpd:交互內存使用總量

             free:空閑的物理內存總量

             buffer:用于buffer的內存總量

             cache:用于cache的內存總量

            

             swap     //是以內存為參照物

                     si:數據進入內存離開swap中的數據速率(kb/s)

                     so:數據離開內存進入swap的速率(kb/s)

            

             io

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

                     bo:保存數據至塊設備的速率(kb/s)

            

             system

                     in:interrupts,中斷速率

                     cs:context switch,上下文切換的速率

            

             cpu

                     us:user space

                     sy:system

                     id:idle

                     wa:wait

                     st:stolen

    

     ·選項:

             -s:顯示內存統計數據

    

     ·eg: vmstat 1 10    :1秒執行一次,執行10次

  • pmap命令:

     pmap – report memory map of a process

    

     pmap [options] pid […]

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

    

     另一種查看方式:cat /proc/PID/maps

  • glances命令:

     ·glances – A cross-platform curses-based monitoring tool

    

     ·內建了一些命令:

    

     ·常用選項:

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

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

             -m:關閉mount模塊

             -n:關閉network模塊

             -t #:刷新時間間隔

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

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

             -f /PATH/TO/SOMEDIR:設定輸出文件的位置

    

     ·C/S模式下運行glance命令

             服務模式:

                     glances -s -B IPADDR

                             IPADDR:本機的某地址,用于監聽

            

             客戶端模式:

                     glances -c IPADDR

                             IPADDR:遠程服務器的地址

  • dstat命令:

     ·dstat – versatile tool for generating system resource statistics

    

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

             默認選項是:cdngy

             常用選項:

                     -c,–cpu:顯示cpu相關信息

                     -C #,#….total

                     -d,–disk:顯示磁盤相關的信息

                     -D sda,sdb….tabal

                     -g:顯示page相關的速率數據

                     -m:Memory的相關統計數據

                     -n:Interface的相關統計數據

                     -y:–sys ,enable system stats (interrupts, context switches)

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

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

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

                    

                     –tcp

                     –udp

                     –raw

                     –socket

                     –ipc

                    

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

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

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

                     –top-lantency:延遲最大的進程

  • kill命令:

     ·kill – terminate a process

    

     ·用于想進程發送信號,以實現對進程的管理

    

     ·顯示當前系統可以信號:

             kill -l [signal]

            

             每個信號的標識方法有三種:

                     1):信號的數字標識

                     2):信號的完整名稱

                     3):信號的簡寫名稱

    

     ·向進程發信號:

             kill [-s signal|-SIGNAL] pid…

            

             常用信號:

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

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

                     9):SIGKILL:殺死運行中的進程(不給進程反應時間,直接殺死)

                     15):SIGTERM:終止運行中的進程(進程能夠交代一些后事,完成一些操作后,死掉)

                     18):SIGCONT:繼續運行

                     19):SIGSTOP:后臺休眠

    

  • killall命令:

     killall – kill processes by name

    

     killall [-SIGNAL] program

網絡客戶端工具:

     ping/lftp/ftp/lftpget/wget等


  • ping命令:

ping – send ICMP ECHO_REQUEST to network hosts

    ICMP:Internet Control Message Protocol

ping [OPTION] destination

         -c #:發送的ping包個數

         -w #:ping命令超時時長

         -W #:一次ping操作中,等待對方響應的超時時長

         -s #:指明ping包報文大小

  • hping命令:( package: hping3 )

hping – send (almost) arbitrary TCP/IP packets to network hosts

         –fast:以盡可能快的方式發送包

         –faster:以更快的方式發送包

         –flood

         -i uX

  • traceroute命令:

traceroute – print the route packets trace to network host

    跟蹤從源主機到目標追加之間經過的網關

  • ftp命令:

ftp – Internet file transfer program

    ftp服務命令行客戶端工具

  • lftp命令:

lftp [-p prot] [-u user[,pass]] [site]

         get,mget

         put,mput

         rm,mrm

         lcd,!ls  在本機上執行命令,而非在FTP服務器上

  • lftpget命令:

lftpget [-c] [-d] [-v] URL [URL…]

         -c:斷點下載,繼續此前的下載

        

         lftpget ftp://1.1.1.1/put/file

         用于寫在腳本中,非交互式的下載

  • wget命令:

Wget – The non-interactive network downloader.

wget [option]… [URL]…

         -b:在后臺執行下載操作

         -q:靜默模式,不顯示下載進度

         -O file:下載的文件的保存位置

         -c:斷點下載,續傳

         –limit-rate=amount:以指定的速率傳輸文件

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

(0)
megedugaomegedugao
上一篇 2016-09-10 20:18
下一篇 2016-09-10 20:29

相關推薦

  • httpd——事務

    http協議: http/0.9 ,http/1.0 ,http/1.1 ,http/2.0 http協議:stateless          服務器無法持續追蹤訪問者來源          &nb…

    Linux干貨 2016-10-12
  • 數據結構應用詳解-

    概述 最小生成樹——無向連通圖的所有生成樹中有一棵邊的權值總和最小的生成樹 拓撲排序 ——由偏序定義得到拓撲有序的操作便是拓撲排序。建立模型是AOV網 關鍵路徑——在AOE-網中有些活動可以并行地進行,所以完成工程的最短時間是從開始點到完成點的最長路徑的長度,路徑長度最長的路徑叫做關鍵路徑(Critical Path)。 最短路徑——最短路徑問題是…

    Linux干貨 2015-04-07
  • Linux磁盤配額

    磁盤配額 什么是磁盤配額? 磁盤配額(Quota)是Linux系統中由于是多用戶、多任務的環境,所以會有多用戶共同使用一個硬盤空間的情況發生,如果其中少數幾個用戶大量占掉了磁盤空間的話,那肯定影響其他用戶的使用權限。因此我們就需要對每個用戶限制硬盤使用空間,來避免此種情況的發生,這就是磁盤配額。 Quota的一般用途: *針對WWW server,例如:每個…

    Linux干貨 2016-09-01
  • Linux三劍客之grep伐木累(正則表達式)

    一、Linux文本處理三劍客     Linux上有三種常用的文本處理工具,分別為:grep(egrep、fgrep)、sed、awk。今天主要給大家介紹一下三劍客中的第一劍:grep伐木累。 二、grep是什么?     grep 全稱(Globally search a Re…

    Linux干貨 2016-03-09
  • 馬哥教育網絡班22期+第5周課程練習

    1、顯示當前系統上root、fedora或user1用戶的默認shell;     cat /etc/passwd | grep -E '^(root|fedora|user1)\>' | awk -F …

    Linux干貨 2016-10-17
  • linux 網絡管理命令 SS的使用詳則

    SS命令 ss命令用來顯示處于活動狀態的套接字信息,ss迷路可以用來獲取socket統計信息,它可以顯示和netstat類似的內容。但ss的優勢在于它能夠顯示更多更詳細的有關TCO和連接狀態信息,而且比netstat更快速更高效。 當服務器的socket連接數量變得非常大時,無論是使用netest命令還是直接  cat/proc/net/tcp ?!?/p>

    2017-08-19
欧美性久久久久