Linux 中的进程管理
### 1.進程定義 ###
#進程的定義:
程序是靜態的代碼文件
進程是指程序運行時的形態
進程是程序的一個副本
進程是有生命周期的(準備期,運行期,終止期)
#進程&線程
進程是資源調用的最小單位
線程是進程的最小單位
程序執行流是從上倒下貫穿運行的
當進程是多任務物,cpu是多核心,多任務應該同時被每個核心處理,每個核心處理的任務叫線程
線程資源是共享的.
#進程狀態
#R(TAKS_RUNNING)?? ?##可執行態(running,ready)
#S(TASK_INTRRUPTABLE)?? ?##可喚醒休眠
#D(TASK_UNINTRRUPTABLE)?? ?##不可喚醒休眠
#T(TASK_STOP)?? ??? ?##暫停狀態
#Z(EXIT_ZOMBIE)?? ??? ?##僵死態
### 2.進程查看命令 ###
gnome-system-monitor?? ??? ?##圖形進程查看工具
ps?? ??? ??? ??? ?#進程查看
?? ??? ??? ??? ?#ps 命令的三種執行風格 unix bsd GNU
?? ??? ??? ??? ?#a 與終端相關的進程(當用戶登陸系統后產生的進程都是帶終端的)
?? ??? ??? ??? ?#x 與終端無關相關的進程
?? ??? ??? ??? ?#u 用戶信息歸類的查看方式
?? ??? ??? ??? ?#f 進程層級關系
?? ??? ??? ??? ?#o 顯示指定參數 pid comm nice pri pcpu ppid stat,user,group
?? ??? ??? ??? ?#
?? ??? ??? ??? ?#-e 顯示所有進程
?? ??? ??? ??? ?#-f 顯示信息的完整格式
?? ??? ??? ??? ?#-H 顯示進程的層級結構
?? ??? ??? ??? ?#-o 顯示指定參數
?? ??? ??? ??? ?#--sort=
?? ??? ??? ??? ?#
?? ??? ??? ??? ?#ps ax顯示信息如下:
?? ??? ??? ??? ?#PID?? ?進程id
?? ??? ??? ??? ?#TTY?? ?進程用到的終端
?? ??? ??? ??? ?#STAT?? ?進程狀態
?? ??? ??? ??? ?#TIME?? ?進程占用cpu時長
?? ??? ??? ??? ?#COMMAND 進程名稱
?? ??? ??? ??? ?
?? ??? ??? ??? ?#ps aux顯示信息如下:
?? ??? ??? ??? ?#USER?? ?進程所有人
?? ??? ??? ??? ?#PID?? ?進程id
?? ??? ??? ??? ?#%CPU?? ?進程使用cpu的用量
?? ??? ??? ??? ?#%MEM?? ?進程所用到的內存用量
?? ??? ??? ??? ?#VSZ?? ?進程使用的虛擬內存大小
?? ??? ??? ??? ?#RSS?? ?進程常駐內存中的數據大小
?? ??? ??? ??? ?#TTY?? ?進程用到的終端
?? ??? ??? ??? ?#STAT?? ?進程狀態
?? ??? ??? ??? ?#START?? ?進程運行時長
?? ??? ??? ??? ?#TIME?? ?進程占用cpu時長
?? ??? ??? ??? ?#COMMAND?? ?進程名稱
?
?
pgrep?? ??? ??? ??? ?#進程過濾
?? ??? ??? ??? ?#-u uid?? ??? ?顯示指定用戶進程
?? ??? ??? ??? ?#-U user?? ?顯示指定用戶進程
?? ??? ??? ??? ?#-t tty?? ??? ?顯示指定終端進程
?? ??? ??? ??? ?#-l?? ??? ?顯示進程名稱
?? ??? ??? ??? ?#-a?? ??? ?顯示進程的完整名稱
?? ??? ??? ??? ?#-P?? ??? ?下時進程的子進程
?
pidof?? ?vim?? ??? ??? ?##查看vim的pid
top?? ??? ??? ??? ?##動態進程查看
?? ??? ??? ??? ?##top中的內容顯示信息
?? ??? ??? ??? ?#09:48:51 ?? ?系統時間
?? ??? ??? ??? ?#up 18:54?? ?運行時長
?? ??? ??? ??? ?#2 users?? ?系統中有兩個用戶登陸
?? ??? ??? ??? ?#load average: 0.75, 0.53, 0.41
?? ??? ??? ??? ??? ??? ?1min 5min? 15min
?? ??? ??? ??? ?#Tasks:
?? ??? ??? ??? ?#331 total 任務總量
?? ??? ??? ??? ?#3 running?? ?正在運行
?? ??? ??? ??? ?#329 sleeping?? ?休眠人物數量
?? ??? ??? ??? ?#0 stopped?? ?被暫停數量
?? ??? ??? ??? ?#0 zombie?? ?僵死人物數量
?? ??? ??? ??? ?#
?? ??? ??? ??? ?#%Cpu(s)
?? ??? ??? ??? ?#1.5 us?? ??? ?用戶空間
?? ??? ??? ??? ?#1.9 sy?? ??? ?內核空間
?? ??? ??? ??? ?#0.0 ni?? ??? ?nice值調整時間
?? ??? ??? ??? ?#58.9 id?? ?空閑時間
?? ??? ??? ??? ?#0.0 wa?? ??? ?等待io時間
?? ??? ??? ??? ?#2.1 hi?? ??? ?處理硬件中斷時間
?? ??? ??? ??? ?#0.2 si?? ??? ?處理軟件中斷時間
?? ??? ??? ??? ?#0.0 st?? ??? ?被偷走的時間(vm使用時間)
?? ??? ??? ??? ?#
?? ??? ??? ??? ?#MiB Mem :
?? ??? ??? ??? ?#7664.6 total,?? ?總量
?? ??? ??? ??? ?#5383.9 free?? ?空閑
?? ??? ??? ??? ?#1312.1 used?? ?占用
?? ??? ??? ??? ?#968.8 buff/cache?? ?緩存
?? ??? ??? ??? ?#
?? ??? ??? ??? ?#MiB Swap:?? ?交換分區用量
?? ??? ??? ??? ?#
?? ??? ??? ??? ?#top命令的參數
?? ??? ??? ??? ?#-d?? ?指定刷新頻率
?? ??? ??? ??? ?#-b?? ?以批次方式顯示
?? ??? ??? ??? ?#-n?? ?指定顯示的批次數量
?? ??? ??? ??? ?#
?? ??? ??? ??? ?#top內部指令
?? ??? ??? ??? ?#P?? ?cpu排序
?? ??? ??? ??? ?#M?? ?內存排序
?? ??? ??? ??? ?#T?? ?累計展銅cpu時間排序
?? ??? ??? ??? ?#l?? ?關閉/開啟uptime信息
?? ??? ??? ??? ?#t?? ?關閉/開啟cpu&task
?? ??? ??? ??? ?#s?? ?指定刷新頻率
?? ??? ??? ??? ?#k?? ?操作進程
?? ??? ??? ??? ?#u?? ?查看指定用戶進程
### 3.進程優先級 ###
系統時多任務多用戶的操作模式
任務的重要性是有區分的
如何確定任務的重要性
“優先級”
范圍: 0--139
內核自控優先級范圍:0-99
用戶可控優先級:100-139
nice
-20-19
renice -n -5 43331?? ?##更改優先級
nice -n -5 vim &?? ?##指定優先級打開進程
S?? ?#sleeping
<?? ?#優先級高
s?? ?#頂級進程
T?? ?#stop
N?? ?#優先級底
R?? ?#running
+?? ?#運行在前臺
### 4.進程前后臺調用 ###
<ctrl>+<z>?? ?##把占用shell的進程打入后臺掛起
bg?? ??? ?##把后臺掛起的進程運行起來
fg?? ??? ?##把后臺進程調回前臺
&?? ??? ?##運行進程在后臺
jobs?? ??? ?##查看當前shell中在后臺的所有工作
### 5.進程信息號 ###
#進程信號
1?? ?#重新家在系統配置文件(source)
2?? ?#清空內存中的進程數據
3?? ?#清空內存中的鼠標(ctrl+\)
9?? ?#強行結束進程(不能被阻塞)
15?? ?#正常關閉進程(會被阻塞)
18?? ?#運行被暫停的進程
19?? ?#暫停進程(不會被阻塞)
20?? ?#暫停進程(會被阻塞的)
#進程信號控制工具
kill?? ?進程信號?? ?pid
killall 進程信號?? ?進程名字
pkill?? ?進程信號?? ?進程條件
?
### 6.systemd守護進程 ###
##實驗環境
#linux.westos.com?? -------- > 172.25.254.10
#node1.westos.com ----------> 172.25.254.20
#
#遠程操作主機
#ssh 遠程主機ip -l 遠程主機用戶
#守護進程
#替內核分擔程序控管的程序
#通常pid為1
#systemd -----> systemctl
#systemctl 管理系統服務
#服務指在系統中開啟的共享系統資源到網絡中的程序
#cs??? client ------?? server
#
#systemctl命令的用法
?? ?start?? ??? ??? ?##開啟
?? ?stop?? ??? ??? ?##關閉
?? ?status?? ??? ??? ?##查看狀態
?? ?reload?? ??? ??? ?##重新加載
?? ?restart?? ??? ??? ?##重新啟動服務
?? ?enable?? ??? ??? ?##設定服務開機啟動
?? ?enable --now?? ??? ?##設定服務開機啟動并當前開啟服務
?? ?disable?? ??? ??? ?##設定服務開啟不其動
?? ?list-units?? ??? ?##查看系統所有服務當前狀態
?? ?list-unit-files?? ??? ?##查看服務開機狀態
?? ?list-dependencies?? ?##列出服務依賴性
?? ?mask?? ??? ??? ?##凍結服務
?? ?unmask?? ??? ??? ?##解鎖
?? ?set-default?? ??? ?##設定系統運行模式
?? ??? ??? ??? ?#multi-user.target?? 無圖形網絡模式
?? ??? ??? ??? ?#graphical.target??? 有圖形的網絡模式
?? ?get-default?? ??? ?##查看系統運行模式
?? ??? ??? ??? ?##系統運行模式
?? ??? ??? ??? ?#0-6
?? ??? ??? ??? ?#0?? ?POWEROFF
?? ??? ??? ??? ?#1?? ?single
?? ??? ??? ??? ?#2?? ?noG+NETWORK
?? ??? ??? ??? ?#3
?? ??? ??? ??? ?#4
?? ??? ??? ??? ?#5?? ?G+NETWORK
?? ??? ??? ??? ?#6?? ?REBOOT
?
### 7.系統中的登陸審計 ###
w?? ??? ?##顯示正在登陸系統的賬號
?? ??? ?## -i?? ?顯示登陸來源
?? ??? ?#/var/run/utmp
last?? ??? ?##登陸成功現在已經退出的
?? ??? ?##/var/log/wtmp
lastb?? ??? ?##試圖登陸但未成功
?? ??? ?##/var/log/btmp
總結
以上是生活随笔為你收集整理的Linux 中的进程管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux 系统中的权限管理
- 下一篇: Linux 中的远程登陆