1. 程式人生 > >linux進程管理

linux進程管理

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)



linux進程管理