網(wǎng)站建設(shè)行業(yè)數(shù)據(jù)seo推薦
1. 概述
- 在 LINUX 中,每個(gè)執(zhí)行的程序都稱為一個(gè)進(jìn)程。每一個(gè)進(jìn)程都分配一個(gè)ID號(hào)(pid,進(jìn)程號(hào))。=>windows => linux
- 每個(gè)進(jìn)程都可能以兩種方式存在的。前臺(tái)與后臺(tái),所謂前臺(tái)進(jìn)程就是用戶目前的屏幕上可以進(jìn)行操作的。后臺(tái)進(jìn)程則是實(shí)際在操作,但由于屏幕上無法看到的進(jìn)程,通常使用后臺(tái)方式執(zhí)行。
- 一般系統(tǒng)的服務(wù)都是以后臺(tái)進(jìn)程的方式存在,而且都會(huì)常駐在系統(tǒng)中。直到關(guān)機(jī)才才結(jié)束。
?
2. 顯示系統(tǒng)正在運(yùn)行的進(jìn)程
ps? ?// 查看當(dāng)前系統(tǒng)正在運(yùn)行的進(jìn)程,以及運(yùn)行狀態(tài)
ps? -a:? ? ?顯示當(dāng)前終端的所有進(jìn)程信息
ps? -u:? ? ?以用戶的格式顯示進(jìn)程信息
ps? ?-x:? ? 顯示后臺(tái)進(jìn)程運(yùn)行的參數(shù)?
ps -aux? |? grep sshd,比如我看看有沒有sshd服務(wù)?
?
參數(shù)含義:
- System? ?V? ?展示風(fēng)格
- USER:? ? ? ? ? 用戶名稱
- PID:? ? ? ? ? ? ? 進(jìn)程號(hào)
- %CPU:? ? ? ? ?進(jìn)程占用CPU 的百分比
- %MEM:? ? ? ? 進(jìn)程占用物理內(nèi)存的百分比
- VSZ:? ? ? ? ? ? ?進(jìn)程占用的虛擬內(nèi)存大小(單位:KB)
- RSS:? ? ? ? ? ? ?進(jìn)程占用的物理內(nèi)存大小(單位:KB)
- TT:? ? ? ? ? ? ? ? 終端名稱,縮寫
- STAT:? ? ? ? ? ? 進(jìn)程狀態(tài),其中S-睡眠,s-表示該進(jìn)程是會(huì)話的先導(dǎo)進(jìn)程,N-表示進(jìn)程擁有比普通優(yōu)先級(jí)更低的優(yōu)先級(jí),R- 正在運(yùn)行,D-短期等待,Z-僵死進(jìn)程,T-被跟蹤或者被停止等等
- STARTED:? ? ? 進(jìn)程的啟動(dòng)時(shí)間
- TIME:? ? ? ? ? ? CPU時(shí)間,即進(jìn)程使用CPU 的總時(shí)間
- COMMAND:? ? ? ? ?啟動(dòng)進(jìn)程所用的命令和參數(shù),如果過長(zhǎng)會(huì)被截?cái)囡@示
案例:
要求:? 以全格式顯示當(dāng)前所有的進(jìn)程,查看進(jìn)程的父進(jìn)程。查看sshd的父進(jìn)程信息。
ps -ef? ?是以全格式顯示當(dāng)前所有的進(jìn)程
-e? ? ? ? 顯示所有進(jìn)程。-f全格式
ps? -ef |?grep sshd
是BSD風(fēng)格
UID:? ? ? 用戶ID
PID:? ? ? 進(jìn)程 ID
PPID:? ?父進(jìn)程 ID
C:? ? CPU用于計(jì)算執(zhí)行優(yōu)先級(jí)的因子。數(shù)值越大,表明進(jìn)程是CPU密集型運(yùn)算,執(zhí)行優(yōu)先級(jí)會(huì)降低;數(shù)值越小,表明進(jìn)程是I/O密集型運(yùn)算,執(zhí)行優(yōu)先級(jí)會(huì)提高。
STIME:? ?進(jìn)程啟動(dòng)的時(shí)間
TTY:? ? ? ?完整的終端名稱
TIME:? ? ?CPU時(shí)間
CMD:? ? ?啟動(dòng)進(jìn)程所用的命令和參數(shù)
3. 終止進(jìn)程kill 和 killall
若是某個(gè)進(jìn)程執(zhí)行一半需要停止時(shí),或是已消了很大的系統(tǒng)資源時(shí),此時(shí)可以考慮停止該進(jìn)程。使用kill 命令來完成此項(xiàng)任務(wù)。
3.1 語法
kill? ?[選項(xiàng)]? ?進(jìn)程號(hào)? ? ? ? ?// 通過進(jìn)程號(hào)殺死/終止進(jìn)程
killall? ?進(jìn)程名稱? ? ? ? ?//通過進(jìn)程名稱殺死進(jìn)程,也支持通配符,在系統(tǒng)因負(fù)載過大變得很慢時(shí)有用
-9:? 表示強(qiáng)迫進(jìn)程立即停止
3.2 案例
案例1:? 踢掉某個(gè)非法登錄用戶,把root賬戶踢出去
kill 進(jìn)程號(hào),比如kill 8306?
案例 2: 終止遠(yuǎn)程登錄服務(wù)sshd,下次不能連接,在適當(dāng)時(shí)候再次重啟sshd服務(wù)
kill sshd 對(duì)應(yīng)的進(jìn)程號(hào);? ? /bin/systemctl start?sshd.service
案例 3: 終止多個(gè)gedit,演示killall gedit
案例4: 強(qiáng)制殺掉一個(gè)終端,指令kill-9 bash對(duì)應(yīng)的進(jìn)程號(hào)
4. 查看進(jìn)程樹pstree
pstree? [選項(xiàng)]
選項(xiàng)
-p:? ?顯示進(jìn)程的 PID
-u:? 顯示進(jìn)程的所屬用戶
?
5. 服務(wù)管理?
1. 概述
服務(wù)(service) 本質(zhì)就是進(jìn)程,但是是運(yùn)行在后臺(tái)的,通常都會(huì)監(jiān)聽某個(gè)端口,等待其它程序的請(qǐng)求,比如(mysqld , sshd 防火墻等),因此我們又稱服務(wù)為守護(hù)進(jìn)程,是Linux中非常重要的知識(shí)點(diǎn)。
- service 服務(wù)名? [start? | stop | restart | reload | status]
- 在CentOS7.0后很多服務(wù)不再使用service ,而是systemctl
- service指令管理的服務(wù)在/etc/initd查看?
2. 查看服務(wù)名
方式1:? 使用 setup -----> 系統(tǒng)服務(wù)? 就可以看到全部。
方式2:? ?/etc/init.d看到service指令管理的服務(wù)
ls -l? /etc/init.d
3. 服務(wù)運(yùn)行級(jí)別(runlevel)
Linux 系統(tǒng)有7種運(yùn)行級(jí)別(runlevel): 常用的是級(jí)別 3 和 5
- 運(yùn)行級(jí)別0: 系統(tǒng)停機(jī)狀態(tài),系統(tǒng)默認(rèn)運(yùn)行級(jí)別不能設(shè)為0,否則不能正常啟動(dòng)
- 運(yùn)行級(jí)別1: 單用戶工作狀態(tài),root權(quán)限,用于系統(tǒng)維護(hù),禁止遠(yuǎn)程登陸
- 運(yùn)行級(jí)別2: 多用戶狀態(tài)(沒有NFS),不支持網(wǎng)絡(luò)
- 運(yùn)行級(jí)別3: 完全的多用戶狀態(tài)(有NFS),無界面,登陸后進(jìn)入控制臺(tái)命令行模式
- 運(yùn)行級(jí)別4: 系統(tǒng)未使用,保留
- 運(yùn)行級(jí)別5: X11控制臺(tái),登陸后進(jìn)入圖形GUI模式
- 運(yùn)行級(jí)別6: 系統(tǒng)正常關(guān)閉并重啟,默認(rèn)運(yùn)行級(jí)別不能設(shè)為6,否則不能正常啟動(dòng)
開機(jī)流程順序:
4. chkconfig指令
通過chkconfig命令可以給服務(wù)的各個(gè)運(yùn)行級(jí)別設(shè)置自啟動(dòng)/關(guān)閉。chkconfig指令管理的服務(wù)在etc/init.d 查看。
注意: Centos7.0后,很多服務(wù)使用systemctl管理。
chkconfig語法
查看服務(wù)? chkconfig? --? list? [ | grep? xxx]
chkconfig 服務(wù)名? ? --list
chkconfig --level? 5? ?服務(wù)名? ? on/off?
chkconfig 重新設(shè)置服務(wù)后自啟動(dòng)或關(guān)閉,需要重啟,使用指令 reboot 生效。??
案例:
對(duì) network 服務(wù)進(jìn)行各種操作,把network在3運(yùn)行級(jí)別,關(guān)閉自啟動(dòng)
chkconfig --level 3 network off? ? // 把network 在3運(yùn)行級(jí)別關(guān)閉
chkconfig --level 3 network on? ?// 把network 在3運(yùn)行級(jí)別開啟
5. systemctl管理指令
systemctl? [start | stop | restart | status]? 服務(wù)名
systemctl 指令管理的服務(wù)在? /usr/lib/systemd/system? 查看
systemctl 設(shè)置服務(wù)的自啟動(dòng)狀態(tài)
systemctl list-unit-files [ | grep? 服務(wù)名 ]? ?// 查看服務(wù)開機(jī)啟動(dòng)狀態(tài),grep可以進(jìn)行過濾
systemctl enable? ?服務(wù)名? ? ? ? //? 設(shè)置服務(wù)開機(jī)啟動(dòng)
systemctl disable? ?服務(wù)名? ? ? ?//? 關(guān)閉服務(wù)開機(jī)啟動(dòng)
systemctl is-enabled? ? 服務(wù)名? ? //? 查詢某個(gè)服務(wù)是否是自啟動(dòng)的
?
案例?
查看當(dāng)前防火墻的狀況,關(guān)閉防火墻和重啟防火墻。
systemctl status firewalld;
systemctl stop firewalld;
systemctl start firewalld
關(guān)閉或者啟用防火墻后,立即生效。[ telnet? IP? 端口? 即可]
這種方式只是臨時(shí)生效,當(dāng)重啟系統(tǒng)后,還是回歸以前對(duì)服務(wù)的設(shè)置。
如果希望設(shè)置某個(gè)服務(wù)自啟動(dòng)或關(guān)閉永久生效,要使用
systemctl? [enable | disable]? 服務(wù)名
6. 打開或關(guān)閉指定端口
在正式的生產(chǎn)環(huán)境中,往往需要將防火墻打開,但問題來了,如果我們把防火墻打開,那么外部請(qǐng)求數(shù)據(jù)包就不能跟服務(wù)器監(jiān)聽端口通訊。這時(shí),需要打開指定的端口。比如80、22、8080等,這個(gè)又怎么做呢?
firewall 指令?
打開端口:? ?firewall-cmd --permanent? --add-port=端口號(hào)/協(xié)議
關(guān)閉端口:? ?firewall-cmd --permanent? --remove-port=端口號(hào)/協(xié)議
重新載入,才能生效:? ?firewall-cmd? --reload
查詢端口是否開放:? ?firewall-cmd? --query-port=端口/協(xié)議
案例
- 啟用防火墻,測(cè)試111端口是否能 telnet,不行
- 開放 111端口。 firewall-cmd --permanent --add-port=111/tcp;? 需要firewall-cmd --reload
- 再次關(guān)閉 111 端口。firewall-cmd --permanent --remove-port=111/tcp; 需要firewall-cmd --reload
6.? 動(dòng)態(tài)監(jiān)控進(jìn)程
1. 概述
top 與ps 命令很相似。它們都用來顯示正在執(zhí)行的進(jìn)程。Top與ps最大的不同之處,在于top在執(zhí)行一段時(shí)間可以更新正在運(yùn)行的的進(jìn)程。
2. 語法
top? [選項(xiàng)]?
-d? ?秒數(shù)? 指定top命令每隔幾秒更新。默認(rèn)是3秒
-i? ? 使top不顯示任何閑置或者僵死進(jìn)程。
-p? ?通過指定監(jiān)控進(jìn)程ID來僅僅監(jiān)控某個(gè)進(jìn)程的狀態(tài)。
交互操作?
P? ? ?以 CPU 使用率排序,默認(rèn)就是此項(xiàng)
M? ? 以內(nèi)存的使用率排序
N? ? 以 PID 排序
q? ? ?退出 top?
各字段意思?
?
案例:
案例 1:監(jiān)視特定用戶,比如我們監(jiān)控tom用戶
top:? 輸入此命令,按回車鍵,查看執(zhí)行的進(jìn)程。
u:? ? 然后輸入“u”回車,再輸入用戶名,即可,
案例 2: 終止指定的進(jìn)程,比如我們要結(jié)束tom 登錄
top:? ?輸入此命令,按回車鍵,查看執(zhí)行的進(jìn)程。
k:? ?然后輸入“k”回車,再輸入要結(jié)束的進(jìn)程ID號(hào)
案例 3: 指定系統(tǒng)狀態(tài)更新的時(shí)間(每隔10秒自動(dòng)更新),默認(rèn)是3秒
top? -d 10
7. 監(jiān)控網(wǎng)絡(luò)狀態(tài)
netstat? ?[選項(xiàng)]
-an? ?//? 按一定順序排列輸出
-p? ? //? 顯示哪個(gè)進(jìn)程在調(diào)用
案例
請(qǐng)查看服務(wù)名為sshd的服務(wù)的信息。
netstat? -anp? |? grep? sshd
?