linux進程管理

   我們在使用任何操作系統的時候都會打開一些應用程序,那麼打開程序就會開啓一個進程,我們在使用windows系統的時候,有時候開一個QQ,同時開一個遊戲,還可以打開音樂播放軟件,打開程序過多會消耗大量的內存和cpu是得系統有時候會感覺很卡頓,那麼在Linux下如何管理進程呢,接下跟大家分享下linux系統下linux進程管理。


  1. 靜態管理進程
     ps -e 列出所有進程的相關信息
     
     PID TTY          TIME CMD
     
     1號進程爲一切進程的父進程  init   

     pstree 以樹狀形式列出進程   
     
     ps -ef
     UID        PID  PPID  C STIME TTY          TIME CMD
     進程擁有者        
     ?臨時執行 退出 不佔用狀態


     ps au
     USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START
     
     %CPU cpu的使用率
     %MEM 內存的使用率
     VSZ  虛擬內存
     RSS  內存頁
     START 何時開啓的進程

     ps axo  pid,pri,nice,%cpu,%mem,command | grep vsftpd
     
     ps -p  pid  

     ps u -p 6917
        
     -e/-A 所有進程   
     a 所有的tty    (BSD-style)
     f 全格式顯示
     PPID顯示父進程

    ps -u root 查看指定用戶開啓哪些進程

    ps a
    PID TTY      STAT   TIME COMMAND  

    1.進程ID
    2.控制檯
    3.進程狀態
      STAT 進程的狀態:
      R  正在運行的進程
      S  可以中斷的休眠進程
      T  停止/暫停的進程
      D  不可中斷的進程
      Z  zombie 殭屍進程
      X  退出狀態
      s  還有子進程
      l  鎖住內存頁的內存
      N  優先級比較低的進程
      <  高優先級的進程

    4.消耗cpu時間
    5.進程的名稱




    ps -ef

    ps aux

    ps axo


    netstat -tulnp  

    t:基於tcp的協議
    u:基於udp的協議
    l:listening 偵聽  如果偵聽表示該服務正在運行
    n:不做域名解析
    p:進程名

    lsof  -i:80  查看80端口是否監聽

    pidof   vsftpd 查看進程的pid (只可以查看正在運行中的服務的PID)

    進程動態管理
    uptime
    11:30:15 up  2:37,  4 users,  load average: 1.02, 1.01, 0.95

    當前系統時間  開啓了多久  4個用戶   每1、5、15分鐘的平均負載

     
    top
    %us  用戶空間使用率
    %sy  內核空間

    PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    1.pid
    2.進程的擁有者
    3.PRI Priority 優先級
    4.nice 值
    5.6
    7.SHR 共享內存 實現不同進程間訪問的主要機制
    8.S進程狀態
    9.cpu使用率
    10.內存使用率
    11
    12

    top
    P CPU
    M men
    k pid
    Z 帶顏色顯示
    q 退出
     
    top -u redhat 動態查看redhat用戶信息
    top -p 1      查看指定pid信息



    /proc
    cat  /proc/meminfo  查看內存狀態
    cat  /proc/cpuinfo  查看cpu詳細信息

    路由轉發

    臨時
    echo 1 > /proc/sys/net/ipv4/ip_forward  

    永久
    echo "echo 1 > /proc/sys/net/ipv4/ip_forward " >> /etc/rc.local  

    環境變量的配置文件  
    ~/.bashrc   ~/.bash_profile  /etc/profile /etc/bashrc

    vim /etc/sysctl.conf
    net.ipv4.ip_forward = 1

    sysctl -p 讓當前配置立即生效

    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all 放置ping  
    ----------------------------------------------------------------
    進程管理(kill)

    kill  [signal] pid

    pidof vsftpd
    6917

    kill  6917

    kill -15 15185

    kill -9 15185  強制

    信號
    man 7 signal  = kill -l

    1   reload  重新加載配置文件不影響業務
    2   ctrl+c  強制中斷  
    9   強制殺死進程
    15  正常殺死進程
    17  暫停
    18  恢復

    進程調度(前後臺切換)

    進程前臺:
    佔用當前shell  當shell關閉 進程就結束

    後臺
    xeyes   &     當shell關閉 進程就結束

    ctrl+z  把前臺正在運行的進程放後臺處理 且是停止的狀態   

    ctrl+c  殺死當前的進程  強制終止

    nohup xeyes   &   把進程放在後臺運行 不佔用當前的shell


    pkill  httpd 按照程序名殺死進程

    ------------------------------------------------------------------
    進程的前後臺切換

    查看作業號
    jobs
    [1]-  Running                 xeyes &
    [2]+  Running                 xeyes &

    A:1、2 表示作業號
    B:+當前的進程
       -表示當前進程的上一個進程
    C:狀態

    把後臺進程放到前臺工作
    fg %1

    ctrl z --->把前臺進程後臺且終止

    把後臺暫停的進程放在後臺繼續運行
    bg %1

    kill  %1   殺死第一個作業所在的進程  
    ---------------------------------------------------------------------  
    進程優先級調整

    進程優先級不可以直接調整靠Nice值,通過Nice值的調整來影響pri的值

    好心值範圍
    -20(最大優先級) 到 19 (最小優先級)  

    可以在進程開啓的時候指定一個優先級
    ps axo  pid,nice,pri,command  | grep vsftpd
            15220  0 19 /usr/sbin/vsftpd

    開啓一個進程默認的Nice值爲0  優先級19   

    nice值越大 ----》  pri越優先(越小)

    在服務開啓的時候指定其運行的優先級
    nice  -n 1  xeyes      nice --->1  
    17483   1  18 xeyes

    nice -n -1 firefox &   nice --->-1

    針對已經定義的優先級的調整

    renice  -5 17803     

    注意:renice後接的數字是指你想最終設置爲-5(nice)
     


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章