Linux進程管理

LInux進程管理

1.進程基本概念

1.進程基本概念

1.什麼是進程

進程(process):正在運行中的程序,用戶下達運行程序的命令後,就會產生進程。同一程序可產生多個進程(一對多關係),以允許同時有多位用戶運行同一程序,卻不會相沖突。

進程需要一些資源才能完成工作,如CPU使用時間、存儲器、文件以及I/O設備,且爲依序逐一進行,也就是每個CPU核心任何時間內僅能運行一項進程。

進程是使用資源的最小單位

process:運行中的程序的一個副本,是被載入內存的一個指令集合
進程ID(Process ID,PID)號碼被用來標記各個進程
UID、GID、和SELinux語境決定對文件系統的存取和訪問權限
通常從執行進程的用戶來繼承
存在生命週期

進程創建:
init:第一個進程
進程:都由其父進程創建,父子關係,CoW
fork(), clone()

2.進程,線程

進程是資源的集合,線程是運行程序的最小單位

3.進程優先級

進程優先級:
系統優先級:數字越小,優先級越高
0-139(CentOS4,5)
各有140個運行隊列和過期隊列
0-98,99(CentOS6)
實時優先級: 99-0 值最大優先級最高
nice值:-20到19,對應系統優先級100-139或99

4.進程間通信

IPC:Inter Process Communication

​ 同一主機:signal:信號

​ shm:shared memory

​ semaphore:信號量,一種計數器

​ 不同主機:socket:IP和端口號

​ RPC:remote procedure call

​ MQ:消息隊列,kafka,ActiveMQ

進程類型:

​ 守護進程:daemon,在系統應道過程中啓動的進程,和終端無關

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

​ 注意:可相互轉化

進程狀態:

​ 運行態:running

​ 就緒態:ready

​ 睡眠態:可終端:interruptable

​ 不可中斷:uninterruptable

​ 停止態:stopped,暫停於內存,但不會被調度嗎,除非手動啓動

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

內存泄漏:out of mem簡稱oom導致原因內存不釋放,程序寫的有問題

內存溢出:overflow,使用的內存超出了申請的內存

2.系統管理工具

進程分類:

​ 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目錄下的各文件中

2命令

ps:查看進程

選項:

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

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

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

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

f 選項顯示進程樹,相當於--forest

kl --sore 屬性 對屬性排序,屬性前加-表示倒序

o 屬性...選項顯示定製的信息pid,cmd,%cpu,%mem,psr

l 顯示支持的屬性列表

-C cmdlist 指定命令,多個命令用,分隔

常用 ps aux 查看所有終端的用戶進程信息包括不鏈接終端的設備

​ ps axo pid,%cpu,%mem,cmd k -%cpu 查看定製信息 按cup使用率排序

​ ps -C passwd 只看某個指定命令的進程

​ ps -C f2.sh 也可以指定腳本名稱查看

ps輸出屬性

VSZ: Virtual memory SiZe,虛擬內存集,線性內存
RSS: ReSident Size, 常駐內存集
STAT:進程狀態
R:running
S: interruptable sleeping
D: uninterruptable sleeping
T: stopped
Z: zombie
+: 前臺進程
l: 多線程進程
L:內存分頁並帶鎖
N:低優先級進程
<: 高優先級進程
s: session leader,會話(子進程)發起者

-C cmdlist 指定命令,多個命令用,分隔

-L 顯示線程-e: 顯示所有進程,相當於-A

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

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

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

-u userlist 指定有效的用戶ID或名稱

-U userlist 指定真正的用戶ID或名稱

-g gid或groupname 指定有效的gid或組名稱

-G gid或groupname 指定真正的gid或組名稱

-p pid 顯示指pid的進程

--ppid pid 顯示屬於pid的子進程

-M 顯示SELinux信息,相當Z

ps

ni: nice值

pri: priority 優先級

psr: processor CPU編號

rtprio: 實時優先級

示例:ps axo pid,cmd,psr,ni,pri,rtprio

常用組合:

aux

-ef
-eFH

-eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,commaxo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,co

pgrep

-u 生效用戶

-U 真正發起用戶

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

-l 顯示進程名

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

-P pid:顯示指定進程的子進程

uptime

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

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