1. 程式人生 > >Linux 第20天自習 進程作業管理

Linux 第20天自習 進程作業管理

ip地址 直接 RoCE 架構 自己的 ios 可用 ons handler

Linux 第20天自習 進程作業管理

時間: 20180807


目錄

進程間通信

進程類型

進程狀態

進程的管理命令

ps, pgrep, pidof, top, htop, vmstat, glances, dstat, kill, killall

作業管理

bg, fg, jobs, nohup

調整進程優先級

nice, renice



Linux 進程作業管理


進程間通信

IPC (Inter Process Communication)

同一臺機器

signal

shm(shared memory)

semerphor 旗語

不同機器

rpc(remote procedure call遠程過程調用)

socket(套接子)


進程類型

根據進程與系統終端的關系可分為

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

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

根據進程占用資源的多少可以分為

CPU密集型: 對cpu占用率高的進程

I/O密集型: 等待I/O時間長的進程


進程的狀態

running 進程正在運行中

ready 就緒狀態

sleeping 睡眠態

interruptible 可中斷睡眠

uninterruptible 不可中斷睡眠 通常是指被I/O阻塞的進程,等等I/O滿足之前

無法繼續運行

zombie 僵死態 終止的但還未被父進程回收的進程

stopped 停死態 不可被調度並運行



進程的管理

進程管理工具有 top, pstree, ps, pidof, pgrep, pkill, htop, glances,

pmap, vmstat, dstat, iostat, sar, kill, job, bg, fg等


ps 抓取進程的狀態

-A 所有process均顯示出來,與-e具有同樣的效用

-a 不與terminal有關的所有process

-u 與用戶相關的process

x 通常與a這個參數一起使用,可列出較完整的process信息


輸出格式規劃

l 較長、較詳細的將該PID的信息列出

j 工作的格式(jobs format)

-f 做一個更為完整的process輸出


常用的組合方式

ps -ef 以完整的信息顯示所有進程信息

ps aux

ps axo 後邊加自定義顯示列表

ps顯示的進程狀態各字母的含義

R running

S interruptible Sleeping

D uninterrutible sleeping

T stopped by job control signal

t stopped by debugger during the tracing

Z defunct ("zombie") process, terminated but not reaped by its

parent

BSD風格的進程stat之後可能還跟著如下字母

s session leader

l multi-threaded (using CLON_THREAD, like NPTL pthreads do)

+ foreground process group

< high-priority (not nice to other users)

N low-priority (nice to other users)

L pages locked into memory (for real-time and custom IO)


自定義顯示ps axo 如只顯示pid,command,psr,pri,ni信息

psr 當前進程運行的cpu編號

pri 進程優先級

ni 當前進程的nice值

ps axo pid,command,psr,pri,ni


pgrep 可以顯示指定的進程信息

-U UID 只顯示指定用戶的進程

-G GID 只顯示指定用戶的進程

-l 顯示PID和進程名

-f pattern 以擴展的正則匹配進程名並顯示其狀態


pidof 顯示指定命令所啟動的進程

pidof PROGRAM or command

pidof sshd


top 實時顯示系統進程狀態

幾個字段的解釋

UPTIME and LOAD Averages

program or window name, depending on display mode

current time and length of time since last boot

total number of users

system load avg over the last 1, 5 and 15 minutes

%Cpu(s)

us, user : time running un-niced user processes

sy, system : time running kernel processes

ni, nice : time running niced user processes

id, idle : time spent in the kernel idle handler

wa, IO-wait : time waiting for I/O completion

hi : time spent servicing hardware interrupts

si : time spent servicing software interrupts

st : time stolen from this vm by the hypervisor

RES -- Resident Memory Size (KiB)

The non-swapped physical memory a task is using.

VIRT -- Virtual Memory Size (KiB)

The total amount of virtual memory used by the task.

It includes all code, data and shared libraries plus

pages that have been swapped out and pages that have

been mapped but not used.

SHR -- Shared Memory Size (KiB)

The amount of shared memory available to a task,

not all of which is typically resident. It simply

reflects memory that could be potentially shared with

other processes.

htop 一個top命令的升級版顯示的界面為彩色


vmstat 上邊的命令都是顯示進程的狀態,這個命令是用來查看系統資源狀態

-s 以行顯示memory,cpu,swap狀態

-S unit 指定以所給定的單位顯示k, K, m, M

-d 輸出磁盤信息


glances 系統監控工具,並且支持c/s架構即可以遠程查看目標主機性能狀態

-s 以服務器端模式運行glances

-b 顯示網絡速度以byte per second 默認是bps

--password 設定c/s架構訪問密碼

-t 設定顯示刷新時間

-c server_ip:port 連接服務端glances,並查看其狀態

需要安裝python的pysnmp模塊

-B 綁定監聽本地哪塊網卡的IP地址

-P 設置監聽的端口


dstat 監控系統資源狀態的命令

結合了vmstat, iostat, ifstat, netstat以及更多的特性

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

常用選項

-c 顯示cpu信息

-d 顯示disk讀取和寫入信息

-g 顯示內存頁的換進換出

-i 查看中斷信息

-l 查看負載平均每1,5,15分鐘信息

-m 查看內存狀態

-n 查看網絡狀態

-p 查看進程狀態

-r 查看IO請求狀態

-s 查看swap狀態

-y 查看sys中斷和上下文切換狀態

--top-cpu 顯示占用cpu時間最長的進程

--top-bio 顯示最消耗block io的進程

--top-io 顯示最占用IO的進程

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

--ipc 查看進程間通信狀態

--raw enable raw stats (raw sockets)

--tcp 查看tcp連接狀態

--udp 查看udp連接狀態

--unix 查看unix連接狀態

--socket 查看socket狀態

-a = -cdngy 顯示其多個資源的狀態


kill 向指定進程發送信號指令

kill [-s signal|-p] [-q sigval] [-a] [--] pid...

-l 顯示當前系統可用的信息 man 7 signal有詳細的信息解釋

常用的信號

1 SIGHUP 通知進程重讀配置文件以讓新的配置生效,無需重新啟動進程

2 SIGINT 打斷正在運行中的進程,相當於鍵盤組合鍵Ctrl+c

9 SIGKILL 強行中止正在運行中的進程

15 SIGTERM 安全中止正在運行中的進程

19 SIGSTOP 暫停進程

18 SIGCONT 繼續運行指定進程

killall 是kill的升級版這個支持直接指定進程名稱便可結束某個進程

-i 交互式,在結束之前提示一個是否確定執行

-I 進程名稱忽略大小寫


作業管理job control

後臺作業bg background

即在後臺運行命令與終端無關

前臺作業fg foreground

前臺作業通過終端啟動,並且在停止之前也會一直占據終端


前臺作業轉至後臺

已經運行中的作業: 使用Ctrl+z

尚未啟動的作業: command &即可轉至後臺

註意: 此種方式相關作業,仍然與終端相關,如果終端終止,會導致此終端相關的

作業被終止


讓作業運行與終端無關

nohup COMMAND &

此命令來將對應的作業任務放在後臺運行,終端退出不影響作業運行


作業查看

jobs

此命令可以查看有多少作業在後臺


作業控制命令 fg, bg, kill

fg [[%]job_num] 把指定的作業調回前臺

bg [[%]job_num] 把調往後臺的作業啟動起來,讓其後臺默默運行;但此作業

必須支持運行與後臺才可以。

kill [[%]job_num] 終止指定的作業



調整進程優先級

調整nice值

nice值是有正負之分,當給定的值為負數時,那麽新的進程優先級就越小,進程

就會被優先處理了。nice值可調整範圍為-20~19; 普通用戶只能調整自己進程的

nice值,且範圍為0~19,即普通用戶只能減小自己的進程優先級,而不能增大優

先級,主要為了避免用戶搶占資源。如果當前普通用戶進程的nice值為5,那此用

戶所能調整的nice值的範圍只能是5~19而不能小於5的值.

調整方式

對於尚未啟動的程序

nice -n N COMMAND

N表示nice值, 範圍是-20~19

對於已啟動的進程

renice -n N PID

註意: 修改進程的nice值,那麽他的子進程的nice值也會繼承其新的nice值

即nice值可以在父進程向子進程傳遞.


Linux 第20天自習 進程作業管理