一、什么是進程?
當(dāng)我們運行一個程序腻格,那么我們將運行的程序叫做進程
二务荆、程序與進程之間有什么區(qū)別?
1、程序是數(shù)據(jù)和指令的集合,是一個靜態(tài)的概念。比如/bin/ls姐叁、/bin/cp等二進制文件。同時程序可以長期存在系統(tǒng)中。
2外潜、進程是程序運行的過程原环,是一個動態(tài)的概念。進程是存在生命周期的概念的处窥,也就是說進程會隨著程序的終止而銷毀嘱吗,不會永久存在系統(tǒng)中。
三滔驾、進程的生命周期谒麦?
生命周期是指一個對象的生老病死,用處很廣哆致。
四绕德、進程運行的狀態(tài)指標(biāo)?
STAT基本狀態(tài)? ? ? ? ?描述? ? ? ? ? ? ? ? ? ?STAT狀態(tài)+符號? ? ? ? ? ? ? ? ? 描述
? ? ? R? ? ? ? ? ? ? ? ? ? ?進程運行? ? ? ? ? ? ? ? ? ? ? s? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?進程是控制進程,Ss進程的領(lǐng)導(dǎo)者摊阀,父進程
? ? ? S? ? ? ? ? ? ? ? ? ? ?可中斷睡眠? ? ? ? ? ? ? ? ? <? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?進程運行在高優(yōu)先級上耻蛇,S<優(yōu)先級較高的進程
? ? ? T? ? ? ? ? ? ? ? ? ? ?進程被暫停? ? ? ? ? ? ? ? ? N? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 進程運行在優(yōu)先級上,SN優(yōu)先級較低的進程
? ? ? D? ? ? ? ? ? ? ? ? ? 不可中斷睡眠? ? ? ? ? ? ? ?+? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 當(dāng)前進程運行在前臺胞此,R+該表示進程在前臺運行
? ? ? Z? ? ? ? ? ? ? ? ? ? 僵尸進程? ? ? ? ? ? ? ? ? ? ? ?I? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?進程是多線程的臣咖,SI表示進程是以線程方式運行
五、如何監(jiān)控進程的狀態(tài)漱牵、靜態(tài)ps夺蛇、動態(tài)top?
#使用 ps aux查看當(dāng)前的進程狀態(tài)(靜態(tài))
狀態(tài)? ? ? ? ? ? ? ? ? ? ?描述
USER? ? ? ? ? ? ? ? ? 啟動進程的用戶
PID? ? ? ? ? ? ? ? ? ? ? 進程運行的ID號
%CPU? ? ? ? ? ? ? ? ?進程占用CPU百分比
%MEM? ? ? ? ? ? ? ? 進程占用內(nèi)存百分比
VSZ? ? ? ? ? ? ? ? ? ? ?進程占用虛擬內(nèi)存大泻ㄕ汀(單位Kb)
RSS? ? ? ? ? ? ? ? ? ? 進程占用物理內(nèi)存實際大械笊狻(單位kb)
TTY? ? ? ? ? ? ? ? ? ? 進程是由哪個終端運行啟動的tty1、pts/0等闻镶? 表示內(nèi)核程序與終端無關(guān)
STAT? ? ? ? ? ? ? ? ? 進程運行過程中的狀態(tài) man ps (/STATE)
START? ? ? ? ? ? ? ?進程的啟動時間
TIME? ? ? ? ? ? ? ? ?進程占用CPU的總時間(為0表示還沒超過秒)
COMMAND? ? ? 程序的運行指令截型,[方括號]屬于內(nèi)核態(tài)的進程。沒有[ ]的是用戶態(tài)進程儒溉。
#使用top命令查看當(dāng)前的進程狀態(tài)(動態(tài))
任務(wù)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 含義
Tasks:129 total? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?當(dāng)前進程的總數(shù)
1 running? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 正在運行的進程數(shù)
128 sleeping? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?睡眠的進程數(shù)
0 stopped? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 停止的進程數(shù)
0 zimbie? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 僵尸進程數(shù)
%Cpu(s):0.7 us? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?系統(tǒng)用戶進程使用CPU百分比
0.7 sy? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 內(nèi)核中的進程占用CPU百分比,通常內(nèi)核是用于硬件進行交互
98.7 id? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?空閑CPU的百分比
0,0 wa? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?CPU等待IO完成的時間
0.0 hi? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?硬中斷发钝,占的CPU百分比
0.0 si? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?軟中斷顿涣,占的CPU百分比
0.0 st? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?比如虛擬機占用物理CPU的時間
#top 常見指令
字母? ? 含義
h? ? ? ? ?查看幫出
1? ? ? ? ?數(shù)字1,顯示所有CPU核心的負(fù)載
z? ? ? ? ?以高亮顯示數(shù)據(jù)
b? ? ? ? ?高亮顯示處于R狀態(tài)的進程
M? ? ? ? 按內(nèi)存使用百分比排序輸出
p? ? ? ? ?按CPU使用百分比排序輸出
q? ? ? ? ?退出top
六酝豪、進程中的iowait 硬中斷涛碑、軟中斷?
Linux 中的中斷處理程序分為上半部和下半部;
上半部對應(yīng)硬件中斷孵淘,用來快速處理中斷
下半部對應(yīng)軟中斷蒲障,用來異步處理上半部未完成的工作
Linux 中的軟中斷包括網(wǎng)絡(luò)收發(fā)、定時、調(diào)度揉阎、等各種類型庄撮,可以通過查看 /proc/softirqs 來觀察軟中斷的運行情況
七、如何管理進程kill毙籽、killall洞斯、pkill?
#當(dāng)程序運行為進程后坑赡,如果希望停止進程烙如,我們可以使用Linux的kill命令對進程發(fā)送關(guān)閉信號,除了kill毅否、還有killall亚铁、pkill
1、使用kill -l列出當(dāng)前系統(tǒng)所支持的信號
雖然linux支持信號很多螟加,但是我們僅列出最為常用的三個信號
數(shù)字編號? ? ? ? ? ?信號含義? ? ? ? ? ? ? 信號翻譯
? ? 1? ? ? ? ? ? ? ? ? ? SIGHUP? ? ? ? ? ? ? 通常用來重新加載配置文件
? ? 9? ? ? ? ? ? ? ? ? ? SIGKILL? ? ? ? ? ? ? 強制殺死進程
? ?15? ? ? ? ? ? ? ? ? ?SIGTERM? ? ? ? ? ?終止進程徘溢,默認(rèn)kill使用該信號
#1、給 vsftpd 進程發(fā)送信號 1仰迁,15
#2甸昏、發(fā)送重截信號,例如 vsftpd 的配置文件發(fā)生改變徐许,希望重新加載
[root@localhost ~]# kill -1 9160
#3施蜜、發(fā)送停止信號,當(dāng)然vsfpd 服務(wù)有停止的腳本 systemctl stop vsftpd
[root@localhost ~]# kill 9160
#4雌隅、發(fā)送強制停止信號翻默,當(dāng)無法停止服務(wù)時,可強制終止信號
[root@localhost ~]# kill -9 9160
2恰起、Linux系統(tǒng)中的killall修械、pkill命令用于殺死指定名字的進程
#1、通過服務(wù)器名稱殺掉進程
[root@localhost ~]# pkill nginx
[root@localhost ~]# killall nginx
#2检盼、使用pkill踢出從遠程登錄到本機的用戶肯污,終止pts/0上的所有進程,并且bash也結(jié)束(用戶被強制退出)
[root@localhost ~]# pkill -9 -t pts/0
八吨枉、后臺進程如何管理 jobs bg fg screen蹦渣?
1.jobs、bg貌亭、fg的使用(不太重要柬唯,了解即可)
[root@localhost ~]# sleep 3000 &? ? ? ?//運行程序(時),讓其在后臺執(zhí)行
[root@localhost ~]# sleep 4000? ? ? ? ? //^Z,將前臺的程序掛起(暫停)到后臺
[root@localhost ~]# ps aux | grep sleep
[root@localhost ~]# jobs? ? ? ? ? ? ?//查看后臺作業(yè)
[root@localhost ~]# bg %2? ? ? ? //讓作業(yè)2在后臺運行
[root@localhost ~]# g %1? ? ? ? //讓作業(yè)1調(diào)回到前臺
[root@localhost ~]# kill %1? ? ? ?//kill 1,終止 pid 為1 的進程
[root@localhost ~]# (while:; do date; sleep 2; done)& //進程在后臺運行圃庭,但輸出依然在當(dāng)前終端
[root@localhost ~]# (while:; do date; sleep 2; done)& >//dev/null &
2.screen的使用(重要锄奢,生產(chǎn)必用)
#1失晴、安裝
[root@localhost ~]# yum install screen -y
#2、開啟一個screen窗口拘央,指定名稱
[root@localhost ~]# screen -s wget_mysql
#3涂屁、在screen窗口中執(zhí)行任務(wù)即可
#4、平滑的退出screen堪滨,但不會終止screen中的任務(wù)? ? ? ? ? ? ?#如果使用exit胯陋,才算真的關(guān)閉screen窗口
ctrl+a+d
#5、查看當(dāng)前正在運行的screen有哪些
[root@localhost ~]# screen -list
#6袱箱、進入正在運行的screen
[root@localhost ~]# screen -r wget_mysql
[root@localhost ~]# screen -r 22058
九遏乔、進程優(yōu)先級是什么?nice发笔、renice?服務(wù)器假死盟萨?
優(yōu)先級指的是優(yōu)先享受資源,比如排隊買票時了讨,軍人優(yōu)先捻激,老人優(yōu)先等等
1、使用top或ps命令查看進程的優(yōu)先級
#1.使用top可以查看nice優(yōu)先級? ? NI: 實際nice級別前计,默認(rèn)是0胞谭。 PR: 顯示nice值,-20映射到0男杈,+19映射到39
#2.使用ps查看進程優(yōu)先級
[root@localhost ~]# ps axo command,nice |grep sshd|grep -v grep
2丈屹、nice指定程序的優(yōu)先級? ? 語法格式 nice -n 優(yōu)先級數(shù)字 進程名稱
#1.開啟vim并且指定程序優(yōu)先級為-5
[root@localhost ~]# nice -n -5 vim &
3、enice命令修改一個正在運行的進程優(yōu)先級伶棒。語法格式 renice -n 優(yōu)先級數(shù)字 進程pid
#1.查看sshd進程當(dāng)前的優(yōu)先級狀態(tài)
[root@locolhost ~]# ps axo pid,command,nice | grep? 折疊 shd
#2.調(diào)整sshd主進程的優(yōu)先級
[root@localhost ~]# renice -n 20 98002
#3.調(diào)整之后記得退出終端
[root@localhost ~]# ps axo pid,command,nice | grep 折疊 shd
[root@localhost ~]# exit
#4.當(dāng)再次登錄sshd服務(wù)旺垒,會由主進程fork子進程(那么子進程會繼承主進程的優(yōu)先級)
[root@localhost ~]# ps axo pid,command,nice | grep 折疊 shd
#服務(wù)器假死
假死,就是能ping通肤无,但是ssh不上去先蒋,任何其他操作也沒反應(yīng)
#建議使用nice將sshd的進程優(yōu)先級調(diào)高。這樣當(dāng)系統(tǒng)內(nèi)存吃緊宛渐,還能勉強登陸sshd竞漾,進入調(diào)試,然后分析故障
十窥翩、SATA狀態(tài)的S畴蹭、Ss、S<鳍烁、S、S+繁扎、R幔荒、R+糊闽、D、T爹梁、Z等等右犹,都是什么意思?
SATA基本狀態(tài)? ? ? ? ? ? ? ? ? ? 描述? ? ? ? ? ? ? ? ? ? ? ? ? ? ?STAT狀態(tài)+符號? ? ? ? ? ? ? ? ? ? ? ?描述
? ? ? ? ? R? ? ? ? ? ? ? ? ? ? ? ? ? ? ?進程運行? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? s? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 進程是控制進程姚垃,Ss進程的領(lǐng)導(dǎo)者念链,父進程
? ? ? ? ? S? ? ? ? ? ? ? ? ? ? ? ? ? ? ?可中斷睡眠? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 進程運行在高優(yōu)先級上,S<優(yōu)先級較高的進程
? ? ? ? ? T? ? ? ? ? ? ? ? ? ? ? ? ? ? ?進程被暫停? ? ? ? ? ? ? ? ? ? ? ? ? ? ? N? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 進程運行在優(yōu)先級上积糯,SN優(yōu)先級較低的進程
? ? ? ? ? D? ? ? ? ? ? ? ? ? ? ? ? ? ? 不可中斷睡眠? ? ? ? ? ? ? ? ? ? ? ? ? ?+? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 當(dāng)前進程運行在前臺掂墓,R+表示該進程在前臺運行
? ? ? ? ? Z? ? ? ? ? ? ? ? ? ? ? ? ? ? ?僵尸進程? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? I? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?進程是多線程的,SI表示進程是以線程方式運行