日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

(六)linux中的进程管理

發(fā)布時間:2024/8/1 linux 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (六)linux中的进程管理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

linux中的進程管理

  • 一、進程和線程
    • 1、進程
    • 2、線程
  • 二、進程查看命令(man ps)
    • 1、圖形查看進程
    • 2、ps命令(用來查看進程信息)
      • 1、bsd風格
      • 2、unix風格
      • 3、gun風格
    • 3、pgrep和pidof 命令的用法
    • 4、top 動態(tài)進程查看
  • 三、系統(tǒng)優(yōu)先級
  • 四、進程前后臺調用
  • 五、進程信息號
  • 六、守護進程
    • 1、設定實驗環(huán)境
    • 2、利用守護進程控制服務
  • 七、系統(tǒng)登錄審計體系
    • 1、w ??顯示正在登陸系統(tǒng)的賬號
    • 2、last ??登陸成功現(xiàn)在已經退出的
    • 3、lastb ??試圖登陸但未成功

一、進程和線程

1、進程

程序是靜態(tài)的代碼文件;進程是指程序運行時的形態(tài)
進程是程序的一個副本(復制程序到內存,相當于副本)
進程是有生命周期的
? ? 準備期:準備資源(類似于執(zhí)行“打掃教室任務”前,“拿掃把”)
? ? 運行期:執(zhí)行過程
? ? 終止期:執(zhí)行后程序所占用的系統(tǒng)資源被回收

程序存在硬盤上,硬盤中的內容要先放到內存中進行緩存,才能被cpu讀到,之后才能進行相應運算。
同樣的,在內存中計算出的結果,要放到硬盤中進行永久保存。

2、線程

進程是資源調用的最小單位
線程是進程的最小單位

程序執(zhí)行流是從上倒下貫穿運行的
當進程是多任務物,cpu是多核心,多任務應該同時被每個核心處理,每個核心處理的任務叫線程
線程資源是共享的。

進程狀態(tài)

? ? R(TASK_RUNNING) ? 可執(zhí)行態(tài)(running,ready):正在被cpu處理,或已經加載好等待被cpu處理
? ? S(TASK_INTRRUPTABLE) ? 可喚醒休眠:使用cpu超時,進入休眠,再次使用時需要被激活
? ? D(TASK_UNINTRRUPTABLE) ? 不可喚醒休眠:使用cpu超時,仍有資源沒有被加載好,不可以使用cpu,等待加載的時間段就是不可喚醒狀態(tài)。
? ? T(TASK_STOP) ? 暫停狀態(tài):暫停狀態(tài)都是人為的在操作,人為的把一個程序暫停,關閉無法使用或暫時不需要的程序,可以人為喚醒
? ? Z(EXIT_ZOMBLE) ? 僵死態(tài):**進程已經結束,卻占用資源不放,需要手動結束程序。**這是一種“bug”、是系統(tǒng)的漏洞。

二、進程查看命令(man ps)

1、圖形查看進程

方法一:gnome-system monitor gnome:圖形界面

方法二:或者在有圖形的情況下,選擇utilities-system monitor
但是在企業(yè)中一般不用。

2、ps命令(用來查看進程信息)

ps命令也是用來查看進程信息的,但不該命令不依賴于圖形。在文本界面下就可以顯示進程信息。

命令的三種執(zhí)行風格 unix bsd GNU
所謂執(zhí)行風格,就是一種書寫規(guī)范:
Unix風格的參數(shù),前面加單破折線;
BSD風格的參數(shù),前面不加破折線;
GNU風格的長參數(shù),前面加雙破折線。

1、bsd風格

a與終端相關的進程(當用戶登陸系統(tǒng)后產生的進程都是帶終端的)
x與終端無關相關的進程
u用戶信息歸類的查看方式
f進程層級關系
o顯示指定參數(shù)( pid comm nice pri pcpu ppid stat,user,group等)

(1)ps #a 與終端相關的進程(當用戶登陸系統(tǒng)后產生的進程都是帶終端的)

我們可以看到tty這一列有三種tty1,tty1,pts/0,
先說pts/0吧,man里面是這樣說的:ptmx and pts - pseudo-terminal master and slave,pts是所謂的偽終端或虛擬終端 (虛擬終端(VT)是一種提供類似于Internet的Telnet協(xié)議的遠程終端仿真的國際標準化組織(ISO)協(xié)議。在遠程終端的用戶,可以在遠程計算機上運行應用程序,就象他們是坐在這臺計算機前面一樣)。

具體表現(xiàn)就是你打開一個終端,這個終端就叫pts/0,如果你再打開一個終端,這個新的終端就叫pts /1,依此類推。

tty:終端設備的統(tǒng)稱。
?
tty一詞源于Teletypes,或者teletypewriters,原來指的是電傳打字機,是通過串行線用打印機鍵盤通過閱讀和發(fā)送信息的東西,后來這東西被鍵盤與顯示器取代,所以現(xiàn)在叫終端比較合適。終端是一種字符型設備,它有多種類型,通常使用tty來簡稱各種類型的終端設備。
?
tty1~6是文本型控制臺,tty7是X Window圖形顯示管理器。

ps ax顯示信息如下:
#PID ? ? ???進程id(進程的唯一標識)
#TTY ? ?? ?進程用到的終端
#STAT ? ?? 進程狀態(tài)
#TIME ? ? ?進程占用cpu時長
#COMMAND ? 進程名稱

(2)ps #x 與終端無關相關的進程

當然ps -ax可以組合使用。
(3)ps u 用戶信息歸類的查看方式

#ps aux顯示信息如下:
#USER ? ? ??進程所有人
#PID ? ? ??進程id
#%CPU? ???進程使用cpu的用量
#%MEM ? ? 進程所用到的內存用量
#VSZ ? ? ??進程使用的虛擬內存大小,(進程在內存中的大小,以千字節(jié)(KB)為單位)
#RSS ? ? ??進程常駐內存中的數(shù)據(jù)大小,(進程在未換出時占用的物理內存)
#TTY ? ? ??進程用到的終端
#STAT? ? ?? 進程狀態(tài)
#START ? ? ??進程運行時長
#TIME ? ? ????進程占用cpu時長
#COMMAND ? ? ??進程名稱

(4)ps f 進程層級關系

(5)ps o user,pid,gid等 (顯示指定參數(shù))

2、unix風格

-e顯示所有進程
-f顯示信息的完整格式
-H顯示進程的層級結構
-o顯示指定參數(shù)
–sort=

(1)、ps -e顯示所有進程
等同于ps ax
(2)、ps -f 顯示信息的完整格式
可以看到后面的參數(shù)

(3)、ps -H 顯示進程的層級結構

(4)、ps -o 顯示指定參數(shù)(和ps o 一樣)

(5)、–sort=
ps -eo %cpu --sort=%cpu 正序排列
ps -eo %cpu --sort=-%cpu 倒序排列
(6)、ps -l 查看自己bash進程

3、gun風格

3、pgrep和pidof 命令的用法

(1)、pgrep命令
pgrep命令以名稱為依據(jù)從運行進程隊列中查找進程,并顯示查找到的進程id。
通過程序的名字來查詢進程的工具,一般是用來判斷程序是否正在運行

-u uid/user顯示指定用戶進程
-U user顯示指定用戶進程
-t tty顯示指定終端進程
-l返回進程ID同時顯示進程名
-a顯示進程的完整名稱
-P pid進程的子進程

(1)、-u uid 顯示指定用戶進程
進入westos用戶后 打開兩個shell

(2)、-U user | 顯示指定用戶進程

(3)、-t tty |顯示指定終端進程
(4)、-a | 顯示進程的完整名稱

注意:關于pgrep的命令,一定要牢記此命令是通過進程名稱來查詢進程的工具,一般是用來判斷程序是否正在運行。
所以除了-u和-U后面跟的是用戶名稱或uid;
其他的參數(shù)都是跟進程名稱,比如:

(2)、pidof 命令
根據(jù)進程名稱來查看進程id。

4、top 動態(tài)進程查看


(1)、#top -

#09:48:51 ? ?? ? 系統(tǒng)時間
#up 18:54 ? ? ? ?運行時長
#2 users ? ?? ?系統(tǒng)中有兩個用戶登陸
#load average: 0.75, 0.53, 0 ? ?Load Average 就是一段時間 (1 分鐘、5分鐘、15分鐘) 內平均 等待時長就是進程等待被cpu處理的時間。

(2)、#Tasks:

#331 total ? ? 任務總量
#3 running? ? ?正在運行
#329 sleeping? ?休眠人物數(shù)量
#0 stopped? ?被暫停數(shù)量
#0 zombie? ?僵死人物數(shù)量

(3)、#%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使用時間)

(4)、#MiB Mem
#7664.6 total ? ? 總量
#5383.9 free ? ?空閑
#1312.1 used ? ? 占用
#968.8 buff/cache ? ?緩存
從硬盤里面加載數(shù)據(jù)到內存,這種數(shù)據(jù)叫緩沖 (buff)
將要從內存到硬盤中的數(shù)據(jù) 叫緩存。

(5)、MiB Swap: 交換分區(qū)用量
交換分區(qū)在硬盤上。
#PID? ?進程id
#USER? ?進程所有者的用戶名
#PR? ?優(yōu)先級
#NI? ? nice值。負值表示高優(yōu)先級,正值表示低優(yōu)先級
#VIRT? ?進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
#RES? ?進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
#SHR? ?共享內存大小,單位kb
#S? ?進程狀態(tài)(D=不可中斷的睡眠狀態(tài),R=運行,S=睡眠,T=跟蹤/停止,Z=僵尸進程)
#%CPU? ?上次更新到現(xiàn)在的CPU時間占用百分比
#%MEM? ?進程使用的物理內存百分比
#TIME+? ?進程使用的CPU時間總計,單位1/100秒
#COMMAND? ?命令名/命令行
(6)、top命令的參數(shù)

-d指定刷新頻率
-b以批次方式顯示 這個得和d、n搭配使用,他是按批次顯示 每三秒都是開一個新的靜態(tài)top 一直往下走
-n指定顯示的批次數(shù)量 比如top -n 2 顯示兩次以后就停止

(7)、top內部指令

#P ? ?排序
#M ? ?內存排序
#T ? ?累計展銅cpu時間排序
#l ? ?關閉/開啟uptime信息
#t ? ?關閉/開啟cpu&task
#s ? ?指定刷新頻率
#k ? ?操作進程
#u ? ?查看指定用戶進程

三、系統(tǒng)優(yōu)先級

系統(tǒng)時多任務多用戶的操作模式
任務的重要性是有區(qū)分的
如何確定任務的重要性
---->使用“優(yōu)先級”
范圍: 0–139
內核自控優(yōu)先級范圍:0-99
所以用戶可控優(yōu)先級:100-139

nice:-20-19

普通用戶只能調低自己的優(yōu)先級而不能調高。
所謂nice值,就是我們的用戶發(fā)揚風格,把自己能夠使用到的系統(tǒng)資源調低,使別人能夠運行的更快。
nice值越負,優(yōu)先級越高。所以普通用戶只能把自己的nice值調大。

(1)更改進程nice值
renice -n -5 43331 ##更改優(yōu)先級
nice -n -5 cat ##指定優(yōu)先級打開進程

S ? ?#sleeping
< ? ?#優(yōu)先級高
s ? ? #頂級進程
T ? ?#stop(當前狀態(tài)是一個暫停狀態(tài))
N ? ?#優(yōu)先級低
R ? ?#running
‘+’ ? ?#運行在前臺
那為什么cat后面沒有顯示小s?因為他是某一個程序的子進程。

(2)、kill進程

(3)、開啟進程并指定其優(yōu)先級
nice -n -5 cat &
在開啟程序時就指定它的優(yōu)先級。后臺運行。

四、進程前后臺調用

有些進程在使用的時候,是占用系統(tǒng)終端的一個狀態(tài)。比如:gedit
此時,系統(tǒng)終端已經不能在和我們進行正常交流,那如何解決?

涉及到的命令:

ctrl+z? ##把占用shell的進程打入后臺掛起
bg ? ? ##把后臺掛起的進程運行起來
fg ? ? ##把后臺進程調回前臺
&? ? ##運行進程在后臺
jobs ? ##查看當前shell中在后臺的所有工作

(1)、ctrl+z 把占用shell的進程打入后臺掛起
會顯示stopped 暫停狀態(tài)。

后面的”+“表示,我在操作的過程中,默認就是使用這條命令。
后面的”-“表示,稍后要處理的進程
(2)、fg 把后臺進程調回前臺
把(1)中的進程打入后臺掛起以后,就不能在操作gedit頁面。如何解決?使用fg。
輸入fg,就是帶”+“的被調回前臺。
輸入fg 【num】(jobs中的數(shù)字)就是調用指定進程進入前臺。

(3)、bg 使進程在后臺運行

問題:能讓cat在后臺自動運行起來嗎?
cat在后臺運行的時候 會自動進入到暫停狀態(tài)
因為cat需要有字符的輸入才能生效,cat在開啟的時候需要開啟自己的工作界面,如果不具備這樣的界面控制能力的話,證明他的資源是缺失的。
如下圖可知,cat確實在后臺運行的過程,但是運行完畢以后又立即被系統(tǒng)停止了。
同理,vim也和cat一樣,也需要一個自己的工作界面。

(4)、& 直接使進程在后臺開啟。
這樣可以正常和系統(tǒng)終端交流

(5)、結束在后臺的進程
fg 把它調回前臺,使用完畢以后 正常結束掉
比如vim
cat的話 ctrl+c 結束掉也可以
或者kill -9 【num】 (num是jobs中的編號)

五、進程信息號

引言:
對進程的處理,就是對內核進行控制。
操作者要使用信號對內核進行溝通,讓他對相應的進程進行處理。
內核也用信號對進程進行溝通,把數(shù)字傳遞給進程以后,讓進程自己去處理。

(1)、man 7 signal 查看進程信息號

(2)、進程信號
1 ? ?#重新家在系統(tǒng)配置文件(source)
2 ? ?#清空內存中的進程數(shù)據(jù)
3 ? ?#清空內存中的鼠標(ctrl+)
9 ? ?#強行結束進程(不能被阻塞)
15 ? ?#正常關閉進程(會被阻塞)
18? ? #運行被暫停的進程
19 ? ?#暫停進程(不會被阻塞)
20? ? #暫停進程(會被阻塞的)

(3)、實驗部分:
①kill -2
第一行的字母我們不要的話可以使用ctrl+c 推出
實際上使用kill -2 就是ctrl+c

②kill -15正常關閉進程
在shell中開啟子進程,使用-15并不會關掉前面那個shell,
這是因為命令被系統(tǒng)阻塞掉了,因為系統(tǒng)認為做了這樣的操作以后會對系統(tǒng)造成不良影響。

當然也可以使用kill -9 強制關閉。

③19 #暫停進程(不會被阻塞)
?20 #暫停進程(會被阻塞的)

4658的shell 已經不能正常交互
只有kill -18 4658 運行之后 才能交互
kill -20 會被阻塞

2、進程信號控制工具
kill ?進程信號 pid
killall ?進程信號 進程名字
pkill ?進程信號 進程條件

kill不做過多解釋。
(1)、kill all 進程信號 進程名字
當shell中后臺開啟多個vim,怎么才能一次性把這些vim都關掉。

(2)、pkill ?進程信號 進程條件
經常使用 pkill -U 進程信號 進程條件
就是關閉指定用戶進程
進程信號可以在pkill --help中參考。

六、守護進程

把程序的管理權交給某一個進程,從而分擔內核的壓力。
而這個進程,我們就可以把他稱作守護進程。

守護進程:替內核分擔程序控管的程序
#通常pid為1
就是上圖所示的systemd

systemd -----> systemctl
Systemd(系統(tǒng)管理守護進程)
systemctl命令 (系統(tǒng)管理服務) systemd這個啟動服務的機制,主要通過systemctl這個命令來完成。

1、設定實驗環(huán)境

我們的主機位置是172.25.254.50
所以設定另一臺主機(虛擬機)的設備是172.25.254.150

對虛擬機網絡進行配置,為接下來的操作做準備。

2、利用守護進程控制服務

所謂服務,就是對操作者以外的人是有意義的。
比如,上課用的遠程連接服務,對老師是沒有意義的,但是對于上視頻課的人是有意義的。
這種雷鋒程序,就叫服務。

#systemd -----> systemctl
#systemctl 管理系統(tǒng)服務
#服務指在系統(tǒng)中開啟的共享系統(tǒng)資源到網絡中的程序
(1)、status ##查看狀態(tài)

(2)、stop ##關閉

(3)、start ##開啟

(4)、restart ##重新啟動服務
相當于先stop再start
為什么要重啟,因為如果對程序做了相應的設定,那目前為止是不生效的,只有重啟之后才生效。
重啟之后 。main pid會發(fā)生變化。

(5)、reload ##重新加載
在配置進程以后,不關閉進程,而是直接加載。
有的進程支持,有的進程不支持。
比如ssh就不支持。
而httpd就支持,這是服務本身決定的。
(6)、enable
enable ##設定服務開機啟動
enable --now ##設定服務開機啟動并當前開啟服務
disable ##設定服務開啟不其動

只使用disable,當前還是running狀態(tài)

使用了disable --now 就關閉了

使用systemctl enable sshd 就是設置其開機啟動。
(7)、list-units ##查看系統(tǒng)所有服務當前狀態(tài)

(8)、list-unit-files ##查看服務開機狀態(tài)

圖中,static表示的是固定的,不需要去管,這種服務通常都是其他服務運行的依賴性。
(9)、list-dependencies ##列出服務依賴性

就是我們再開啟一個服務的時候,另一個服務會因為當前服務的開啟而自動打開,不需要人為進行管理。
(10)、mask ##凍結服務
????unmask ##解鎖
之前我們可以使用stop和start進行開啟關閉服務
在凍結之后,stop和start就不再起作用。

(11)、 set-default ##設定系統(tǒng)運行模式

set-default multi-user.target 無圖形網絡模式
set-default graphical.target 有圖形的網絡模式

get-default ##查看系統(tǒng)運行模式

##系統(tǒng)運行模式
#0-6
#0?? POWEROFF(關機)
#1?? single
#2 ??noG+NETWORK
#3
#4
#5 ??G+NETWORK
#6?? REBOOT(重啟)(調用命令 init 6)

無圖形的網絡模式就是黑的界面。運行速度會更快。

七、系統(tǒng)登錄審計體系

1、w ??顯示正在登陸系統(tǒng)的賬號

w ?? 顯示正在登陸系統(tǒng)的賬號
w -i ?? 顯示登陸來源
上面兩個命令顯示的其實是/var/run/utmp 這個文件,這兩個文件不能使用cat進行查看。

此時主機也顯示連接到了 當前虛擬主機上。

2、last ??登陸成功現(xiàn)在已經退出的

last ##登陸成功現(xiàn)在已經退出的
該命令查看的是 /var/log/wtmp這個文件


真機退出連接后,圖上圖所示

3、lastb ??試圖登陸但未成功

lastb ##試圖登陸但未成功
該命令查看的是/var/log/btmp這個文件
真機顯示連接時密碼錯誤

虛擬主機就會顯示登陸失敗的主機:

總結

以上是生活随笔為你收集整理的(六)linux中的进程管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。