進(jìn)程管理
進(jìn)程和線程圖形簡單解釋
進(jìn)程和線程管理
VIM編輯
Linux 系統(tǒng)資源信息的獲取
獲取 Linux CPU 信息
軟件包管理
oh-my-zsh
電腦上的容量和速度
進(jìn)程和線程:
- 進(jìn)程是一個(gè)具有獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合的一次運(yùn)行活動(dòng)。它可以申請(qǐng)和擁有系統(tǒng)資源,是一個(gè)動(dòng)態(tài)的概念,是一個(gè)活動(dòng)的實(shí)體。
- 進(jìn)程是一個(gè)“執(zhí)行中的程序”。程序是一個(gè)沒有生命的實(shí)體,只有處理器賦予程序生命時(shí),它才能成為一個(gè)活動(dòng)的實(shí)體,我們稱其為進(jìn)程。
- 通常在一個(gè)進(jìn)程中可以包含若干個(gè)線程,它們可以利用進(jìn)程所擁有的資源。在引入線程的操作系統(tǒng)中,通常都是把進(jìn)程作為分配資源的基本單位,而把線程作為獨(dú)立運(yùn)行和獨(dú)立調(diào)度的基本單位。
- 線程和進(jìn)程的區(qū)別在于,子進(jìn)程和父進(jìn)程有不同的代碼和數(shù)據(jù)空間,而多個(gè)線程則共享數(shù)據(jù)空間
線程與進(jìn)程的區(qū)別歸納:
a.地址空間和其它資源:進(jìn)程間相互獨(dú)立,同一進(jìn)程的各線程間共享。某進(jìn)程內(nèi)的線程在其它進(jìn)程不可見。
b.通信:進(jìn)程間通信IPC,線程間可以直接讀寫進(jìn)程數(shù)據(jù)段(如全局變量)來進(jìn)行通信——需要進(jìn)程同步和互斥手段的輔助,以保證數(shù)據(jù)的一致性。
c.調(diào)度和切換:線程上下文切換比進(jìn)程上下文切換要快得多。
d.在多線程OS中,進(jìn)程不是一個(gè)可執(zhí)行的實(shí)體。
ps查看進(jìn)程(靜態(tài))
ps aux 查看所有的進(jìn)程信息

ps aux 輸出各字段意義:
USER: 該 process 屬于那個(gè)使用者帳號(hào)的?
PID : 該 process 的程序識(shí)別碼。
%CPU: 該 process 使用掉的 CPU 資源百分比;
%MEM: 該 process 所占用的實(shí)體內(nèi)存百分比;
VSZ : 該 process 使用掉的虛擬內(nèi)存量 (KBytes)
RSS : 該 process 占用的固定的內(nèi)存量 (KBytes)
TTY : 該 process 是在那個(gè)終端機(jī)上面運(yùn)行,若與終端機(jī)無關(guān)則顯示 ?,另外, tty1-tty6 是本機(jī)上面的登陸者程序,若為 pts/0 等等的,則表示為由網(wǎng)絡(luò)連接進(jìn)主機(jī)的程序。
STAT: 該程序目前的狀態(tài),狀態(tài)顯示與 ps -l 的 S 旗標(biāo)相同 (R/S/T/Z)
START: 該 process 被觸發(fā)啟動(dòng)的時(shí)間;
TIME : 該 process 實(shí)際使用 CPU 運(yùn)行的時(shí)間。
COMMAND:該程序的實(shí)際指令為何?
S:代表這個(gè)程序的狀態(tài) (STAT),主要的狀態(tài)有:
========================================
R (Running):該程序正在運(yùn)行中;
S (Sleep):該程序目前正在睡眠狀態(tài)(idle),但可以被喚醒(signal)。
D :不可被喚醒的睡眠狀態(tài),通常這支程序可能在等待 I/O 的情況(ex>打?。?br> T :停止?fàn)顟B(tài)(stop),可能是在 jobs 控制(后臺(tái)暫停)
Z (Zombie):僵尸狀態(tài),程序已經(jīng)終止但卻無法被移除至內(nèi)存外。
========================================
ps 相關(guān)應(yīng)用:
[root@localhost ~]# ps -ef |grep bash
root 1214 679 0 22:01 tty1 00:00:00 -bash
root 1937 1924 0 23:42 pts/0 00:00:00 -bash
root 1956 1937 0 23:45 pts/0 00:00:00 grep --color=auto bash
當(dāng)前進(jìn)程號(hào):
[root@localhost ~]# echo $$
1937
兩臺(tái)終端:
[root@localhost ~]# ps -ef |grep cat
root 2021 2005 0 23:51 pts/0 00:00:00 cat
root 2024 1966 0 23:51 pts/1 00:00:00 grep --color=auto cat
[root@localhost ~]# kill -9 2021
[root@localhost ~]# cat
Killed
管道:
[root@localhost ~]# echo "hello oyzx" |cut -d' ' -f1
hello
正則表達(dá)式:
[root@localhost ~]# echo "cat"|grep [cd]at
cat
[root@localhost ~]# echo "dat"|grep [cd]at
dat
[root@localhost ~]# ps aux |grep [v]im
root 3131 0.1 0.5 151512 5364 pts/3 S+ 03:28 0:00 vim a.txt
[root@localhost ~]# kill -19 3131
=============================
lfsjdfhsldfhsj:wq
adfasdf
[1]+ Stopped vim a.txt
[root@localhost log]# jobs
[1]+ Stopped vim a.txt
top動(dòng)態(tài)查看進(jìn)程(動(dòng)態(tài))
top -d 5 //5秒自動(dòng)刷新查看cpu使用情況
image.pngtop -n 1 //截取1s進(jìn)程狀態(tài)
image.png
signal信息量:


