linux 第六章 linux中的进程管理
1.進(jìn)程
進(jìn)程的定義
??? 程序是靜態(tài)的代碼文件;進(jìn)程是指程序運(yùn)行時(shí)的形態(tài)
??? 進(jìn)程是程序的一個(gè)副本(copy程序到內(nèi)存,相當(dāng)于副本)
??? 進(jìn)程是有生命周期的
??????? 準(zhǔn)備期:準(zhǔn)備資源(類似于執(zhí)行“打掃教室任務(wù)”前,“拿掃把”)
??????? 運(yùn)行期:執(zhí)行過(guò)程
??????? 終止期:執(zhí)行后程序所占用的系統(tǒng)資源被回收
進(jìn)程和線程
??????? 進(jìn)程:進(jìn)程是資源調(diào)用的最小單位。所有事件由cpu處理,當(dāng)一個(gè)事件cpu,其他事件就無(wú)法占用處于,等待用完才可以使用cpu。
??????? 雙核、三核cpu:為使充分使用cpu,一個(gè)事件細(xì)劃分成若干個(gè)小的線程,加速cpu同時(shí)處理。
??????? 線程是進(jìn)程的最小單位
程序執(zhí)行流是從上到下貫穿運(yùn)行的
??? 當(dāng)進(jìn)程是多任務(wù),cpu是多核心時(shí),多任務(wù)應(yīng)該同時(shí)被每個(gè)核心處理,每個(gè)核心處理的任務(wù)叫線程資源。 線程資源是共享的
進(jìn)程狀態(tài)
??????? R(TASK_RUNNING) ##可執(zhí)行態(tài):正在被cpu處理,或已經(jīng)加載好等待被cpu處理
??????? S(TASK_INTRRUPTABLE) ##可喚醒休眠:使用cpu超時(shí),進(jìn)入休眠,再次使用時(shí)需要被激活
??????? D(TASK_UNINTRRUPTABLE) ##不可喚醒休眠:使用cpu超時(shí),仍有資源沒(méi)有被加載好,不可以使用cpu
??????? T(TASK_STOP) ##暫停狀態(tài):關(guān)閉無(wú)法使用程序,但可以人為喚醒
??????? Z(EXIT_ZOMBLE) ##僵死態(tài):進(jìn)程已經(jīng)結(jié)束,卻占用資源不放,需要手動(dòng)結(jié)束程序。“bug”
2.進(jìn)程查看命令(man ps)
gnome-system monitor??? gnome:圖形界面
#ps 命令的三種執(zhí)行風(fēng)格 unix bsd GNU
bsd風(fēng)格
ps a #與終端相關(guān)的,帶字符終端的進(jìn)程(當(dāng)用戶登陸系統(tǒng)后產(chǎn)生的進(jìn)程都是帶終端)
ps x #與終端無(wú)關(guān)的,不帶字符終端的進(jìn)程(除了某些有依賴關(guān)系的,其余都是?)?
?
ps u #用戶信息歸類的查看方式
ps f #進(jìn)程層級(jí)關(guān)系
?
ps o #顯示指定參數(shù),如pid comm nice pri pcpu ppid stat,user,group?
?
unix風(fēng)格
ps -e 顯示所有進(jìn)程
?ps -f 顯示信息的完整格式
ps -H 顯示進(jìn)程的層級(jí)結(jié)構(gòu)
?
ps -o 顯示指定參數(shù)?
?
ps --sort= (如cpu排序、內(nèi)存排序) - sort=為倒序
1.如:ps axo? pid,%cpu,%mem,state
?
?
2.排序
從小到大:
從大到小:?
?
pgrep
pgrep #進(jìn)程過(guò)濾
??? pgrep -u ##uid 顯示指定用戶進(jìn)程
??? pgrep -U ##user 顯示指定用戶進(jìn)程
??? pgrep -t ##tty 顯示指定終端進(jìn)程
??? pgrep -l ##顯示進(jìn)程名稱
??? pgrep -a ##顯示進(jìn)程的完整名稱
??? pgrep -P ##顯示進(jìn)程的子進(jìn)程
具體操作過(guò)程:
1.開(kāi)啟3個(gè)shell,其中兩個(gè)用westos用戶登陸,另一個(gè)用root,westos窗口用ps命令查詢pid
?
進(jìn)程優(yōu)先級(jí)
??? 系統(tǒng)是多任務(wù)多用戶的操作模式
??? 任務(wù)的重要性是有區(qū)分的
??? 如何確定任務(wù)的重要性——“優(yōu)先級(jí)” 范圍:0–139 (共140個(gè)優(yōu)先級(jí))
??? 內(nèi)核自控優(yōu)先級(jí)范圍:0–99
??? 用戶可控優(yōu)先級(jí):100–139
??? nice -20 ~ 19 其中-20最高,19最低
??? ##linux系統(tǒng)中nice值——優(yōu)先級(jí)的另一種說(shuō)法:系統(tǒng)可控優(yōu)先級(jí)的值
??? ##普通用戶優(yōu)先級(jí)只能調(diào)低不能調(diào)高
更改優(yōu)先級(jí):renice -n -5(期望優(yōu)先級(jí)) 11111(pid) ##更改優(yōu)先級(jí)
進(jìn)程狀態(tài):
S #sleeping
< #優(yōu)先級(jí)高
s #頂級(jí)進(jìn)程
T #stop
N #優(yōu)先級(jí)低
R #running ‘+’ #運(yùn)行在前臺(tái)
4.進(jìn)程前后臺(tái)調(diào)用
##查看進(jìn)程狀態(tài) stat
Ctrl +Z ##把占用shell的進(jìn)程打入后臺(tái)掛起
bg ##把后臺(tái)掛起的進(jìn)程運(yùn)行起來(lái)
fg ##把后臺(tái)進(jìn)程調(diào)回前臺(tái)
& ##運(yùn)行進(jìn)程在后臺(tái)
jobs ##查看當(dāng)前shell中在后臺(tái)的所有工作
5.進(jìn)程信息號(hào)
進(jìn)程信號(hào)
man 7 signal
1 ##重新讀取加載系統(tǒng)配置文件(source)
2 ##清空內(nèi)存中的進(jìn)程數(shù)據(jù)
3 ##清空內(nèi)存中的鼠標(biāo)(Ctrl +\)
9 ##強(qiáng)制結(jié)束進(jìn)程(不能被阻塞)
15 ##正常關(guān)閉進(jìn)程(會(huì)被阻塞),無(wú)法強(qiáng)制關(guān)閉子程序,關(guān)閉shell會(huì)被阻塞
18 ##被暫停的進(jìn)程運(yùn)行起來(lái)
19 ##暫停進(jìn)程(不會(huì)被阻塞)
20 ##暫停進(jìn)程(會(huì)被阻塞的)
6.進(jìn)程信號(hào)控制工具
??? kill 進(jìn)程信號(hào) pid
??? killall 進(jìn)程信號(hào) 進(jìn)程名字
??? pkill 進(jìn)程信號(hào) 進(jìn)程條件
killall ##結(jié)束某一進(jìn)程或命令
pkill ##指定結(jié)束某一用戶及所有進(jìn)程
6.systemd守護(hù)進(jìn)程
配置ip地址 nm-connection-editor
選擇ens3?? ipv4處選擇mannual? 子網(wǎng)掩碼24?? ip老規(guī)矩
真機(jī):ssh -l root 172.25.254.112
systemctl命令
systemctl命令的用法
?????? start?????? ##開(kāi)啟
?????? stop?????? ##關(guān)閉
??? status???? ##查看狀態(tài)
?eload??? ##重新加載
?????? restart??? ##重新啟動(dòng)服務(wù)
? 注:reload和restart一樣的效果,因?yàn)閟sd服務(wù)不支持reload,支持的話reload后id不變
? enable??? ##設(shè)定服務(wù)開(kāi)機(jī)啟動(dòng)
?????? enable? --now ##設(shè)定服務(wù)開(kāi)機(jī)啟動(dòng)并當(dāng)前開(kāi)啟服務(wù)(enable開(kāi)機(jī)時(shí)啟動(dòng)? now現(xiàn)在)
?????? disable? ##設(shè)定服務(wù)開(kāi)啟不啟動(dòng)
?????? list-units? ##查看系統(tǒng)所有服務(wù)當(dāng)前狀態(tài)
?????? list-unit-files?? ##查看服務(wù)開(kāi)機(jī)狀態(tài)
?????? list-dependencies? ##列出服務(wù)依賴性
?????? mask?? ##凍結(jié)服務(wù)
?????? umask? ##解鎖
?????? set-default ##設(shè)定系統(tǒng)運(yùn)行模式
?????? ##multi-user.target? 無(wú)圖形網(wǎng)絡(luò)模式
?????? ##graphical.target?? 有圖形的網(wǎng)絡(luò)模式
??????? get-default? ##查看系統(tǒng)運(yùn)行模式:直接runlevel
???????????????????? ##系統(tǒng)運(yùn)行模式
???????????????????? #0-6
???????????????????? #0??? POWEROFF 關(guān)閉
???????????????????? #1??? single 單人模式
???????????????????? #2??? noG+NETWORK 無(wú)圖形模式
???????????????????? #3??? ?
???????????????????? #4
???????????????????? #5??? G+NETWORK 圖形模式
???????????????????? #6??? REBOOT 重啟
7.系統(tǒng)中的登陸審計(jì)
w ##顯示正在登陸系統(tǒng)的賬號(hào)
## -i 顯示登陸來(lái)源
實(shí)際的文件位置?? #/var/run/utmp ?
last ##登陸成功現(xiàn)在已經(jīng)退出
##/var/log/wtmp
lastb ##試圖登陸但未成功
##/var/log/btmp
總結(jié)
以上是生活随笔為你收集整理的linux 第六章 linux中的进程管理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 2022.9.19-9.25 AI行业周
- 下一篇: Asp.Net编码规范