程序:
- 保存在硬盤(pán)、光盤(pán)等介質(zhì)中的可執(zhí)行代碼和數(shù)據(jù)·
- 文件中靜態(tài)保存的代碼
進(jìn)程:
- 在CPU及內(nèi)存中運(yùn)行的程序代碼
- 動(dòng)態(tài)執(zhí)行的代碼
- 父、子進(jìn)程
? ? ? ? 每個(gè)程序可以創(chuàng)建一個(gè)或多個(gè)進(jìn)程
load average系統(tǒng)平均負(fù)載
load average: 0.00, 0.01, 0.05 ? ??
系統(tǒng)平均負(fù)載 ?1分鐘 5分鐘 15分鐘查看 load average 的命令有:top ?w ?uptime
load average 的值在什么情況可認(rèn)為是異常的? 當(dāng)平均負(fù)載長(zhǎng)時(shí)間高于CPU數(shù)量的70%時(shí)
load average 平均負(fù)載高時(shí)可能是CPU密集型進(jìn)程多導(dǎo)致,也可能是I/O繁忙導(dǎo)致。
查看系統(tǒng)指標(biāo)
CPU ? ? ? ?top ? vmstat ? sar ? htop ? atop
內(nèi)存 ? ? ? free -m ? vmstat ? sar ? top ? ?cat /proc/meninfo
IO ? ? ? ? iostat(磁盤(pán)級(jí)別) ? iotop(進(jìn)程級(jí)別) ? vmstat(系統(tǒng)級(jí)別) ? atop ? sar
磁盤(pán)容量 ? df -h ? ?du ??
進(jìn)程 ? ? ? ps ? top ? htop ? atop ? pidstat
網(wǎng)卡流量 ? ifconfig ? iftop ? atop ? cat /proc/net/dev?
ps aux
ps -elf
ps -lf -T -p <PID>top
top -H -p <PID>pgrep -l <關(guān)鍵詞> -U <用戶名> -t <終端>
pstree -aup [用戶名]
?
?
?查看靜態(tài)的進(jìn)程統(tǒng)計(jì)信息:
ps 命令? ?查看靜態(tài)的進(jìn)程統(tǒng)計(jì)信息
方法一:ps aux
a:顯示現(xiàn)行終端下的所有進(jìn)程,包括其它用戶的進(jìn)程。
u:顯示進(jìn)程的歸屬用戶及內(nèi)存的使用情況。
x:顯示所有終端的進(jìn)程。
h:不顯示標(biāo)題列。
??各列的解釋:
USER: | 進(jìn)程的用戶。 |
PID: | 進(jìn)程的ID。 |
%CPU: | 進(jìn)程占用的CPU百分比,占用越高,進(jìn)程越耗費(fèi)資源。 |
%MEM: | 占用內(nèi)存的百分比 |
VSZ: | 該進(jìn)程使用的虛擬內(nèi)存量(KB)。 |
RSS: | 該進(jìn)程占用的實(shí)際物理內(nèi)存量(KB) |
TTY: | 啟動(dòng)進(jìn)程的終端名。不是從終端啟動(dòng)的進(jìn)程則顯示為 ? |
STAT: | 該進(jìn)程的狀態(tài)(D:不可中斷的休眠狀態(tài);R:正在運(yùn)行狀態(tài);S:處于休眠狀態(tài),可被喚醒;T:停止?fàn)顟B(tài),可能是在后臺(tái)暫?;蜻M(jìn)程處于跟蹤調(diào)試狀態(tài);Z:僵尸進(jìn)程,進(jìn)程已經(jīng)中止,但是部分程序還在內(nèi)存當(dāng)中) |
START: | 該進(jìn)程被啟動(dòng)時(shí)間。 |
TIME: | 該進(jìn)程實(shí)際使用CPU的時(shí)間 |
COMMAND: | 進(jìn)程的名稱與參數(shù)。 |
方法二:ps -elf
-e:顯示系統(tǒng)內(nèi)的所有進(jìn)程信息。
-l:使用長(zhǎng)格式顯示進(jìn)程信息。
-f:使用完整的格式顯示進(jìn)程信息。
-a:顯示現(xiàn)行終端下的所有進(jìn)程。
-T:查看線程信息。
-C <進(jìn)程名稱>:顯示指定進(jìn)程名的信息。
-p <進(jìn)程pid>:顯示指定pid的進(jìn)程的信息。
-H:顯示樹(shù)狀結(jié)構(gòu),表示進(jìn)程間的相互關(guān)系。
--no-headers:不顯示標(biāo)題列。
ps -aT 顯示所有線程
ps -T -p <pid> ?查看指定進(jìn)程中已經(jīng)起的線程
ps -L <pid> ? ? 查看指定進(jìn)程中的線程信息
ps aux --sort -%cpu | head -10 ? 按cpu降序排列,-為降序,+為升序,p與%同義
ps aux --sort +pmem | head -n 10 ?按內(nèi)存升序排列
ps aux --sort -pcpu,+pmem | head -n 10
?各列的解釋:
F: | 內(nèi)核分配給進(jìn)程的系統(tǒng)標(biāo)記。 |
S: | 進(jìn)程的狀態(tài)。 |
UID: | 啟動(dòng)這些進(jìn)程的用戶。 |
PID: | 進(jìn)程的進(jìn)程ID |
PPID: | 父進(jìn)程的進(jìn)程號(hào)(如果該進(jìn)程是由另一個(gè)進(jìn)程啟動(dòng)的) |
C: | 進(jìn)程生命周期中的CPU利用率 |
PRI: | 進(jìn)程的優(yōu)先級(jí)(越大的數(shù)字代表越低的優(yōu)先級(jí)) |
NI: | 謙讓度值用來(lái)參與決定優(yōu)先級(jí) |
ADDR: | 進(jìn)程的內(nèi)存地址 |
SZ: | 假如進(jìn)程被換出,所需交換空間的大致大小 |
WCHAN: | 若該進(jìn)程在睡眠,則顯示睡眠中的系統(tǒng)函數(shù)名 |
STIME: | 進(jìn)程啟動(dòng)時(shí)的系統(tǒng)時(shí)間 |
TTY: | 進(jìn)程啟動(dòng)時(shí)的終端設(shè)備 |
TIME: | 運(yùn)行進(jìn)程需要的累計(jì)CPU時(shí)間 |
CMD: | 進(jìn)程的啟動(dòng)命令 |
僵尸進(jìn)程:
一個(gè)進(jìn)程結(jié)束了,但是如果該進(jìn)程的父進(jìn)程已經(jīng)先結(jié)束了,那么該進(jìn)程就不會(huì)變成僵尸進(jìn)程,因?yàn)槊總€(gè)進(jìn)程結(jié)束的時(shí)候,系統(tǒng)都會(huì)掃描當(dāng)前系統(tǒng)中所運(yùn)行的所有進(jìn)程,看有沒(méi)有哪個(gè)進(jìn)程是剛剛結(jié)束的這個(gè)進(jìn)程的子進(jìn)程,如果是的話,就由Init來(lái)接管它,成為它的父進(jìn)程,子進(jìn)程退出后init會(huì)回收其占用的相關(guān)資源。
但是當(dāng)子進(jìn)程比父進(jìn)程先結(jié)束,而父進(jìn)程又沒(méi)有回收子進(jìn)程,釋放子進(jìn)程占用的資源,此時(shí)子進(jìn)程將成為一個(gè)僵尸進(jìn)程。?
?top 查看進(jìn)程動(dòng)態(tài)信息
top 命令——查看進(jìn)程動(dòng)態(tài)信息
第一行是 任務(wù)隊(duì)列信息
11:06:48?? ?系統(tǒng)時(shí)間
up 1:22?? ??? ?系統(tǒng)已運(yùn)行時(shí)長(zhǎng)
1 user?? ??? ?當(dāng)前登錄用戶數(shù)
load average: 0.06, 0.60, 0.48?? ?系統(tǒng)負(fù)載,即單位時(shí)間內(nèi)系統(tǒng)處理的任務(wù)數(shù),后面三個(gè)數(shù)值分別為1分鐘、5分鐘、15分鐘前到現(xiàn)在的平均值
第二行為 進(jìn)程信息
Tasks?? ??? ?總進(jìn)程數(shù)
running?? ??? ?正在運(yùn)行的進(jìn)程數(shù)
sleeping?? ?休眠的進(jìn)程數(shù)
stopped?? ??? ?中止的進(jìn)程數(shù)
zombie?? ??? ?僵死的進(jìn)程數(shù)
第三行為 CPU的信息
us?? ??? ?用戶占用
sy?? ??? ?內(nèi)核占用
ni?? ??? ?優(yōu)先級(jí)調(diào)度占用
id?? ??? ?空閑CPU,要了解空閑的 CPU 百分比,主要看%id 部分
wa?? ??? ?I/O 等待占用
hi?? ??? ?硬件中斷占用
si?? ??? ?軟件中斷占用
st?? ??? ?虛擬化占用
第四行為內(nèi)存的信息
total?? ??? ?總內(nèi)存空間
free?? ??? ?空閑內(nèi)存
used?? ??? ?已用內(nèi)存
buff/cache?? ?物理內(nèi)存和交換內(nèi)存的緩沖區(qū)總和
第五行為交換空間的信息
total?? ??? ?總交換空間
free?? ??? ?空閑交換空間
used?? ??? ?已用交換空間
avail Mem?? ?可用物理空間
進(jìn)程信息區(qū)各列解釋:
PID?? | 進(jìn)程id |
USER | 進(jìn)程所有者的用戶名 |
PR? | 優(yōu)先級(jí) |
NI?? | 謙讓度值。負(fù)值表示高優(yōu)先級(jí),正值表示低優(yōu)先級(jí) |
VIRT | 進(jìn)程使用的虛擬內(nèi)存總量,單位kb |
RES? | 進(jìn)程使用的物理內(nèi)存大小,單位kb |
SHR | 共享內(nèi)存大小,單位kb |
S | 進(jìn)程狀態(tài) |
%CPU | 上次更新到現(xiàn)在的CPU時(shí)間占用百分比 |
%MEM | 進(jìn)程使用的物理內(nèi)存百分比 |
TIME+ | 進(jìn)程使用的CPU時(shí)間總計(jì),單位1/100秒 |
COMMAND | 命令名/命令行 |
top常用命令:
P 鍵:根據(jù)CPU使用百分比大小進(jìn)行排序
M 鍵:根據(jù)駐留內(nèi)存大小進(jìn)行排序
N 鍵:根據(jù)啟動(dòng)時(shí)間進(jìn)行排序
c 鍵:切換顯示命令名稱和完整命令行
h 鍵:可以獲得 top程序的在線幫助信息
k 鍵:根據(jù)提示輸入指定進(jìn)程的 PID 號(hào)并按 Enter 鍵終止對(duì)應(yīng)的進(jìn)程
q 鍵:退出 top 程序
數(shù)字1 鍵:顯示CPU個(gè)數(shù)和狀態(tài)
top -H:顯示所有線程
top -H -p <pid>:顯示特定進(jìn)程中的線程
CPU使用率和CPU負(fù)載:
CPU使用率是指CPU在某個(gè)時(shí)間段內(nèi)被使用的比例,以百分比表示。反映了CPU的使用強(qiáng)度。
CPU負(fù)載是指CPU正在處理的任務(wù)數(shù)或等待CPU處理的任務(wù)數(shù)。反映了系統(tǒng)中的任務(wù)繁忙程度。?
tty終端
Centos7系統(tǒng),tty1表示圖形界面,tty2-tty6表示文字界面,可以用Ctrl+Alt+F1-F6切換。
pts說(shuō)明是用遠(yuǎn)程工具連接的,比如xshell,后面的數(shù)字代表登錄的時(shí)間順序,越小證明登錄的越早?
運(yùn)行進(jìn)程:
前臺(tái)運(yùn)行:在命令行輸入命令,直接運(yùn)行
后臺(tái)運(yùn)行:在命令末尾追加 & 符號(hào)。默認(rèn)情況下通過(guò)追加 & 后臺(tái)運(yùn)行的進(jìn)程會(huì)隨著終端的關(guān)閉而自動(dòng)退出,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?可在命令開(kāi)頭位置添加 nohup(格式為nohup 命令 &),可實(shí)現(xiàn)后臺(tái)運(yùn)行的進(jìn)程不會(huì)隨著終端的關(guān)閉而自動(dòng)退出
進(jìn)程前后臺(tái)調(diào)度:
ctrl + z ? ? #將前臺(tái)進(jìn)程掛起暫停并調(diào)入到后臺(tái)
jobs -l ? ? ?#查看掛起調(diào)度到后臺(tái)的進(jìn)程列表和序號(hào)
fg <序號(hào)> ? ?#將掛起到后臺(tái)的進(jìn)程調(diào)度到前臺(tái)繼續(xù)運(yùn)行
kill? 終止進(jìn)程:
終止進(jìn)程
kill <PID>
killall <進(jìn)程名>
pkill <關(guān)鍵詞> -U <用戶名> -t <終端>
我們經(jīng)常會(huì)用到kill命令去殺死一個(gè)進(jìn)程,但是有時(shí)會(huì)出現(xiàn)kill不成功的現(xiàn)象,這是就要用到kill -9。
之所以這兩個(gè)命令會(huì)有區(qū)別是因?yàn)樗l(fā)送的信號(hào)(Signal)是不同的。默認(rèn)情況下kill命令的參數(shù)為-15。kill -15代表的信號(hào)為SIGTERM,這是告訴進(jìn)程你需要被關(guān)閉,請(qǐng)自行停止運(yùn)行并退出;
而kill -9代表的信號(hào)是SIGKILL,表示進(jìn)程被終止,需要立即退出;
因此kill -9表示強(qiáng)制殺死該進(jìn)程,這個(gè)信號(hào)不能被捕獲也不能被忽略。?
kill是如何殺掉進(jìn)程的??
kill是如何殺掉進(jìn)程的? ?向進(jìn)程發(fā)送信號(hào)的方式殺掉進(jìn)程
kill 默認(rèn)選項(xiàng)為 -15 ,發(fā)送信號(hào) SIGTERM,表示告訴進(jìn)程自行停止運(yùn)行并退出,進(jìn)程可以忽略
kill -9 ,發(fā)送信號(hào) SIGKILL,表示進(jìn)程要立即退出,且不能被捕捉或忽略
kill -3 ,發(fā)送信號(hào) SIGQUIT,表示進(jìn)程自行退出,并打印進(jìn)程各個(gè)線程的堆棧信息,保存路徑為 /proc/${pid}/cwd,文件名為 antBuilderOutput.log
kill -1 ,發(fā)送信號(hào) SIGHUP,表示進(jìn)程重新加載配置文件,不退出?
at 一次性計(jì)劃任務(wù)?
at HH:MM [yyyy-mm-dd] --> 輸入命令列表 --> ctrl + d 提交任務(wù) --> atq 查看沒(méi)執(zhí)行的任務(wù)列表和序號(hào) --> atrm <序號(hào)> 刪除指定的任務(wù)?
?周期性計(jì)劃任務(wù)?
crontab任務(wù)配置:
crontab?周期性計(jì)劃任務(wù)?
通式:crontab [選項(xiàng)] [file]
周期性計(jì)劃任務(wù)
確保開(kāi)啟 crond 服務(wù)
crontab -e [-u 用戶] ? ?--> 自動(dòng)對(duì)應(yīng)文件 ?/var/spool/cron/用戶名代表意義?? ?分鐘?? ?小時(shí)?? ?日期?? ?月份?? ?周?? ?命令
數(shù)字范圍?? ?0~59?? ?0~23?? ?1~31?? ?1~12?? ?0~7?? ?需要執(zhí)行的命令周的數(shù)字為 0 或 7 時(shí),都代表“星期天”的意思
* ?任意時(shí)間點(diǎn)
, ?多個(gè)不連續(xù)的時(shí)間點(diǎn)
- ?連續(xù)的時(shí)間點(diǎn)
/ ?間隔的時(shí)間頻率文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-855901.htmlcrontab -l [-u 用戶] ? ?#查看計(jì)劃任務(wù)列表
crontab -r [-u 用戶] ? ?#清空任務(wù)列表文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-855901.html
到了這里,關(guān)于Linux 進(jìn)程和計(jì)劃任務(wù)管理的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!