十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
top命令分為匯總區(qū)和任務(wù)明細(xì)區(qū)

創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站建設(shè)、網(wǎng)站制作與策劃設(shè)計(jì),同德網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:同德等地區(qū)。同德做網(wǎng)站價(jià)格咨詢:18980820575
當(dāng)前時(shí)間是15:39:37. 系統(tǒng)已經(jīng)運(yùn)行了90天,15個(gè)小時(shí),26分鐘。當(dāng)前有兩個(gè)活躍用戶
上下兩行以kb形式展示物理內(nèi)存和swap內(nèi)存的總計(jì),空閑(free), 已使用(total)的情況
其中buff/cache ,是在cpu讀寫硬盤數(shù)據(jù)時(shí),為了提速在內(nèi)存中開辟的緩沖(buffer針對寫)或緩存區(qū)域(cache針對讀)
avail mem 是創(chuàng)建新進(jìn)程時(shí),在不使用swap分區(qū)的情況下,能夠分配的內(nèi)存大小。這個(gè)大小可能比當(dāng)前的free還大,這是因?yàn)閎uff/cache中的內(nèi)存在創(chuàng)建進(jìn)程時(shí),若需要,也是可以搶占過來的。
總共有27個(gè)進(jìn)程,1個(gè)運(yùn)行,26的sleep中
load average后面的三組數(shù)字分別是1分鐘、5分鐘、15分鐘的工作負(fù)載情況。這里的Load指的出于R(runing)和D(Uninterruptible sleep)的兩種狀態(tài)下的進(jìn)程數(shù)
在單核cpu情況下。load average 為0.4的表示,其cpu利用率只有40%。 load average 為1,表示cpu利用率為100。load average 為2.12說明,cpu已經(jīng)超負(fù)荷112% (2.12減滿負(fù)荷1,即為超負(fù)荷部分)
在多核cpu的機(jī)器上,需要將以上的1,5,15的負(fù)載除以對應(yīng)的cpu核數(shù),才好評估對應(yīng)的cpu的負(fù)載情況
比如,這個(gè)cpu為40核的機(jī)器上,其cpu過去一分鐘的使用情況為:8.26/40=0.2065 ,說明cpu使用率只有20%
展示每個(gè)進(jìn)程的情況
在top名稱執(zhí)行后,按小k,可以進(jìn)入進(jìn)程殺死對話框
在后面輸入進(jìn)程號,即可殺死進(jìn)程
在top命令下
按以下大寫字母,分別按不同的維度進(jìn)行排序
當(dāng)然你也可以在命令啟動(dòng)時(shí),直接對top加參數(shù)。比如以cpu使用情況排序
top命令默認(rèn)顯示的進(jìn)程的運(yùn)行情況,在top命令執(zhí)行后,按大寫的H,可進(jìn)入線程執(zhí)行情況頁面,再按一次H則會(huì)到進(jìn)程展示?;蛘咴趩?dòng)時(shí)對top加參數(shù) top -H
在top執(zhí)行后,按小c,則能夠展示進(jìn)程路徑,并且對內(nèi)核進(jìn)程的名稱(command列),加上方括號。再按c切換回去
當(dāng)然也可以在啟動(dòng)時(shí),加參數(shù) top -c
top執(zhí)行后按大V
在top啟動(dòng)后,按小寫u,在輸入框中輸入對應(yīng)的用戶名
或者在top啟動(dòng)時(shí),通過加參數(shù)來過濾用戶 top -u root
在top啟動(dòng)后,按大O,進(jìn)入過濾表達(dá)式的輸入框
表達(dá)式有以下幾種類型
輸入等號'=',清除filter表達(dá)式
在top命令下,按t或m來進(jìn)行進(jìn)度條顯示
首先基于 ps aux | grep processName 找到對應(yīng)進(jìn)程的pid
然后使用 top -c -p pid 方式單過濾查看該進(jìn)程的資源占用情況
一,使用taskset充分利用多核cpu,讓cpu的使用率均衡到每個(gè)cpu上
#taskset
-p, 設(shè)定一個(gè)已存在的pid,而不是重新開啟一個(gè)新任務(wù)
-c, 指定一個(gè)處理,可以指定多個(gè),以逗號分隔,也可指定范圍,如:2,4,5,6-8。
1,切換某個(gè)進(jìn)程到指定的cpu上
taskset -cp 3 13290
2,讓某程序運(yùn)行在指定的cpu上
taskset -c 1,2,4-7 tar jcf test.tar.gz test
需要注意的是,taskset -cp 3 13290在設(shè)定一個(gè)已經(jīng)存在的pid時(shí),子進(jìn)程并不會(huì)繼承父進(jìn)程的,
因此像tar zcf xxx.tar.gz xxx這樣的命令,最好在啟動(dòng)時(shí)指定cpu,如果在已經(jīng)啟動(dòng)的情況下,則需要指定tar調(diào)用的gzip進(jìn)程。
二,使用nice和renice設(shè)置程序執(zhí)行的優(yōu)先級
格式:nice [-n 數(shù)值] 命令
nice 指令可以改變程序執(zhí)行的優(yōu)先權(quán)等級。指令讓使用者在執(zhí)行程序時(shí),指定一個(gè)優(yōu)先等級,稱之為 nice 值。
這個(gè)數(shù)值從最高優(yōu)先級的-20到最低優(yōu)先級的19。負(fù)數(shù)值只有 root 才有權(quán)力使。
一般使用者,也可使用 nice 指令來做執(zhí)行程序的優(yōu)先級管理,但只能將nice值越調(diào)越高。
可以通過二種方式來給某個(gè)程序設(shè)定nice值:
1,開始執(zhí)行程序時(shí)給定一個(gè)nice值,用nice命令
2,調(diào)整某個(gè)運(yùn)行中程序的PID的nice值,用renice命令
通常通過調(diào)高nice值來備份,為的是不占用非常多的系統(tǒng)資源。
例:
nice -n 10 tar zcf test.tar.gz test
由nice啟動(dòng)的程序,其子進(jìn)程會(huì)繼承父進(jìn)程的nice值。
查看nice值
# nice -n -6 vim test.txt
# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 19427 2637 0 75 0 – 16551 wait pts/6 00:00:00 bash
4 T 0 21654 19427 0 71 -6 – 23464 finish pts/6 00:00:00 vim
renice調(diào)整運(yùn)行中程序的nice值
格式:renice [nice值] PID
三,使用ulimit限制cpu占用時(shí)間
注意,ulimit 限制的是當(dāng)前shell進(jìn)程以及其派生的子進(jìn)程。因此可以在腳本中調(diào)用ulimit來限制cpu使用時(shí)間。
例如,限制tar的cpu占用時(shí)間,單位秒。
# cat limit_cpu.sh
ulimit -SHt 100
tar test.tar.gz test
如果tar占用時(shí)間超過了100秒,tar將會(huì)退出,這可能會(huì)導(dǎo)致打包不完全,因此不推薦使用ulimit對cpu占用時(shí)間進(jìn)行限制。
另外,通過修改系統(tǒng)的/etc/security/limits配置文件,可以針對用戶進(jìn)行限制。
四,使用程序自帶的對cpu使用調(diào)整的功能
某些程序自帶了對cpu使用調(diào)整的功能,比如nginx服務(wù)器,通過其配置文件,可以為工作進(jìn)程指定cpu,如下:
worker_processes 3;
worker_cpu_affinity 0001 0010 0100 1000;
這里0001 0010 0100 1000是掩碼,分別代表第1、2、3、4顆cpu核心,這就使得cpu的使用比較平均到每個(gè)核心上。
1.使用Preload預(yù)加載
與Prelink類似,Preload是一個(gè)運(yùn)行于后臺(tái)的監(jiān)護(hù)程序,探測那些常用的軟件,并將其放入緩存,以起到加速的作用。在LinuxMint/Ubuntu下安裝Preload很簡單:
sudo apt-get install preload
Preload默認(rèn)的配置對于普通用戶而言已經(jīng)不錯(cuò)了,一般不需要修改。如果有進(jìn)一步掌控其的欲望,可以打開其配置文件進(jìn)行修改:
sudo gedit /etc/preload.conf
2.清理APT緩存
apt應(yīng)該算是LinuxMint/Ubuntu系統(tǒng)中使用率最高的命令了,無論安裝、卸載軟件,還是更新軟件源緩存及相關(guān)維護(hù),都離不開它。使用逾久,apt緩存也就變得較為臃腫,有必要清理:
sudo apt-get autoclean
3.禁用不必要的啟動(dòng)項(xiàng)
在“啟動(dòng)應(yīng)用程序”中,根據(jù)自身實(shí)際,取消不必要的啟動(dòng)項(xiàng),如歡迎程序、檢測新硬件、藍(lán)牙(如果本機(jī)沒有藍(lán)牙)、桌面共享等。
4.調(diào)整交換分區(qū)參數(shù)
詳見《一個(gè)小技巧提速你的LinuxMint》
5.禁用休眠/掛起功能(務(wù)必慎重)
如果你不需要電腦的休眠/掛起功能,可以手動(dòng)禁用它(筆記本電腦最好不要禁用休眠/掛起功能)。以管理員身份編輯配置文件:
sudo gedit /etc/initramfs-tools/conf.d/resume
將RESUME=UUID=****這行注釋掉(行首加#):
6.修改grub2等待時(shí)間
無論你的電腦是否有2個(gè)或更多的操作系統(tǒng),只要安裝了LinuxMint/Ubuntu,就必然會(huì)安裝grub2作為引導(dǎo)管理器。grub2啟動(dòng)時(shí),會(huì)在默認(rèn)的啟動(dòng)項(xiàng)上停留數(shù)秒(默認(rèn)10秒),等待用戶選擇。我們可以把這個(gè)時(shí)間改的更短。如果是LinuxMint/Ubuntu單系統(tǒng),可以直接改為0,即直接進(jìn)入,無需等待。
以管理員身份編輯grub配置文件,修改GRUB_TIMEOUT項(xiàng)后的數(shù)字。
sudo gedit /etc/default/grub
7.使用ZRAM提高內(nèi)存性能
如果你的電腦內(nèi)存不太充裕(1G以下),可以使用ZRAM軟件來提高內(nèi)存性能。ZRAM能在系統(tǒng)中創(chuàng)建一個(gè)壓縮的塊設(shè)備,用于模擬一個(gè)交換分區(qū),減少因內(nèi)存不足而多硬盤的蹂躪頻次??梢允褂萌缦翽PA安裝ZRAM:
sudo add-apt-repository ppa:shnatsel/zram
sudo apt-get update
sudo apt-get install zramswap-enabler
8.多核啟動(dòng)
默認(rèn)情況下,即便你的電腦是雙核甚至多核的CPU,LinuxMint/Ubuntu啟動(dòng)時(shí)仍舊是以單核在執(zhí)行系統(tǒng)啟動(dòng)任務(wù)。可以通過如下修改,使其充分利用多核CPU進(jìn)行系統(tǒng)啟動(dòng),從而加快速度。
以管理員身份編輯:
sudo gedit /etc/init.d/rc
找到CONCURRENCY=none行,并修改為CONCURRENCY=makefile
9.禁用視覺特效
如果你的電腦硬件配置較低,可以通過禁用視覺特效達(dá)到優(yōu)化性能的目的。華麗的特效,必然會(huì)消耗更多的性能。對于Ubuntu和LinuxMint MATE用戶,安裝Compiz后,即可把不要的特效都禁用:
sudo apt-get install compizconfig-settings-manager
對于LinuxMint Cinnamon用戶,還可以在Cinnamon設(shè)置:效果 中禁用相關(guān)效果。
10.使用TMPFS減少磁盤讀寫
TMPFS,顧名思義,乃是臨時(shí)文件系統(tǒng)。一般情況下,Linux的/tmp文件夾接收著大量關(guān)于磁盤讀寫的操作。而通過優(yōu)先使用物理內(nèi)存,可以提高/tmp處理磁盤讀寫操作的速度。
以管理員身份修改:sudo gedit /etc/fstab
在該文件的末尾,加入如下內(nèi)容:
# Move /tmp to RAM
tmpfs /tmp tmpfs defaults,noexec,nosuid 0 0
除了上述操作之外,最明顯的辦法就是更換更為簡潔、輕量級的桌面環(huán)境,如XFCE、LXDE等
[root@oldboy ~]# uptime
11:45:25 up 5 days, 13:20, 3 users, load average: 0.00, 0.01, 0.05
uptime內(nèi)容顯示的內(nèi)容一次是系統(tǒng)時(shí)間,開機(jī)到現(xiàn)在的天數(shù),用戶登錄數(shù),以及平均負(fù)載。
核心是平均負(fù)載,其實(shí)就是【單位時(shí)間內(nèi)的活躍進(jìn)程數(shù)】。
2顆,單顆4核CPU為例:
1分鐘:10.00 #CPU處理進(jìn)程1分鐘的繁忙程度,忙碌1分鐘。
5分鐘:8.01 #CPU處理進(jìn)程5分鐘的繁忙程度,忙碌了5分鐘
15分鐘:5.05 #CPU處理進(jìn)程15分鐘的繁忙程度,忙碌持續(xù)15分鐘,15分鐘內(nèi)平均值5.
uptime:故障恢復(fù)了。
1分鐘:1.00 #CPU處理進(jìn)程1分鐘的繁忙程度,忙碌1分鐘。
5分鐘:8.01 #CPU處理進(jìn)程5分鐘的繁忙程度,忙碌了5分鐘
15分鐘:5.05 #CPU處理進(jìn)程15分鐘的繁忙程度,忙碌持續(xù)15分鐘,15分鐘內(nèi)平均值5.
==============================================
總結(jié):15分鐘負(fù)載值12,是高是低呢
負(fù)載數(shù)值/總的核心數(shù)=1 #開始慢的臨界點(diǎn),實(shí)際上1*70%==關(guān)注的臨界點(diǎn)。
12/8=1.2 大于1就說明有問題。
負(fù)載不要超過5,是臨界點(diǎn)。
2顆單顆4核CPU,共8核,負(fù)載就是8*70%=5左右。
需要關(guān)注負(fù)載的值:總的核心數(shù)*70%=關(guān)注的點(diǎn)
==================要掌握的============================
1.平均負(fù)載是運(yùn)行隊(duì)列中活躍的進(jìn)程數(shù)。
2.平均負(fù)載,1,5,15分鐘內(nèi)的負(fù)載。
3.需要關(guān)注負(fù)載的值:總的核心數(shù)*70%=關(guān)注的點(diǎn)
4.輔助top,ps,uptime,sar,mpstat,pidstat,iostat,排查問題。
5.strace跟蹤進(jìn)程系統(tǒng)調(diào)用。
6.記住幾個(gè)案例(面試講故事)。
面試官問:
你在工作中遇到過哪些生產(chǎn)故障,是怎么解決的?
最好和數(shù)據(jù)庫相關(guān)(負(fù)載高),和web相關(guān)(PHP進(jìn)程100%,JAVA內(nèi)存泄漏)
==================要掌握的============================
***6.平均負(fù)載案例分析實(shí)戰(zhàn)\***
下面,我們以三個(gè)示例分別來看這三種情況,并用 stress、mpstat、pidstat 等工具,找出平均負(fù)載升高的根源。
stress 是 Linux 系統(tǒng)壓力測試工具,這里我們用作異常進(jìn)程模擬平均負(fù)載升高的場景。
mpstat 是多核 CPU 性能分析工具,用來實(shí)時(shí)查看每個(gè) CPU 的性能指標(biāo),以及所有 CPU 的平均指標(biāo)。
pidstat 是一個(gè)常用的進(jìn)程性能分析工具,用來實(shí)時(shí)查看進(jìn)程的 CPU、內(nèi)存、I/O 以及上下文切換等性能指標(biāo)。
#如果出現(xiàn)無法使用mpstat、pidstat命令查看%wait指標(biāo)建議更新下軟件包
yum install sysstats -y
yum install stress -y
stress --cpu 8 --io 4 --vm 2 --vm-bytes 128M --timeout 10s
***場景一:CPU 密集型進(jìn)程\***
1.首先,我們在第一個(gè)終端運(yùn)行 stress 命令,模擬一個(gè) CPU 使用率 100% 的場景:
[root@oldboy ~]# stress --cpu 1 --timeout 600
2.接著,在第二個(gè)終端運(yùn)行 uptime 查看平均負(fù)載的變化情況
# 使用watch -d 參數(shù)表示高亮顯示變化的區(qū)域(注意負(fù)載會(huì)持續(xù)升高)
[root@oldboy ~]# watch -d uptime
*3.最后,在第三個(gè)終端運(yùn)行 mpstat 查看 CPU 使用率的變化情況*
# -P ALL 表示監(jiān)控所有CPU,后面數(shù)字5 表示間隔5秒后輸出一組數(shù)據(jù)
[root@oldboy ~]# mpstat -P ALL 5
#單核CPU,所以只有一個(gè)all和0
4.從終端二中可以看到,1 分鐘的平均負(fù)載會(huì)慢慢增加到 1.00,而從終端三中還可以看到,正好有一個(gè) CPU 的使用率為 100%,但它的 iowait 只有 0。這說明,平均負(fù)載的升高正是由于 CPU 使用率為 100% 。那么,到底是哪個(gè)進(jìn)程導(dǎo)致了 CPU 使用率為 100% 呢?可以使用 pidstat 來查詢
管理-進(jìn)程管理.assets/a.png)
# 間隔5秒輸出一組數(shù)據(jù)
[root@oldboy ~]# pidstat -u 5 1
#從這里可以明顯看到,stress進(jìn)程的CPU使用率為100%。
- 模擬cpu負(fù)載高 `stress --cpu 1 --timeout 100`
- 通過uptime或w 查看 `watch -d uptime`
- 查看整體狀態(tài)mpstat -P ALL 1 查看每個(gè)cpu核心使用率
- 精確到進(jìn)程: pidstat 1
****場景二:I/O 密集型進(jìn)程\****
1.首先還是運(yùn)行 stress 命令,但這次模擬 I/O 壓力,即不停地執(zhí)行 sync
[root@oldboy ~]# stress --io 1 --timeout 600s #利用sync()
stress --hdd 8 --hdd-bytes 1g # hd harkdisk 創(chuàng)建進(jìn)程去進(jìn)程寫
*2.然后在第二個(gè)終端運(yùn)行 uptime 查看平均負(fù)載的變化情況:*
[root@oldboy ~]# watch -d uptime
18:43:51 up 2 days, 4:27, 3 users, load average: 1.12, 0.65, 0.00
*3.最后第三個(gè)終端運(yùn)行 mpstat 查看 CPU 使用率的變化情況:*
# 顯示所有 CPU 的指標(biāo),并在間隔 5 秒輸出一組數(shù)據(jù)
[root@oldboy ~]# mpstat -P ALL 5
#會(huì)發(fā)現(xiàn)cpu的與內(nèi)核打交道的sys占用非常高
*4.那么到底是哪個(gè)進(jìn)程,導(dǎo)致 iowait 這么高呢?我們還是用 pidstat 來查詢*
# 間隔5秒后輸出一組數(shù)據(jù),-u 表示CPU指標(biāo)
[root@oldboy ~]# pidstat -u 5 1
#可以發(fā)現(xiàn),還是 stress 進(jìn)程導(dǎo)致的。
- 通過stress 模擬大量進(jìn)程讀寫 `stress --hdd 4 `
- 通過w/uptime查看系統(tǒng)負(fù)載信息 `watch -d uptime`
- 通過top/mpstat 排查 `mpstat -P ALL 1 或 top 按1`
- 確定是iowati `iostat 1查看整體磁盤讀寫情況 或iotop -o 查看具體哪個(gè)進(jìn)程讀寫`
- 根據(jù)對應(yīng)的進(jìn)程,進(jìn)行相關(guān)處理.
***場景三:大量進(jìn)程的場景 高并發(fā)場景 \***
*當(dāng)系統(tǒng)中運(yùn)行進(jìn)程超出 CPU 運(yùn)行能力時(shí),就會(huì)出現(xiàn)等待 CPU 的進(jìn)程。*
*1.首先,我們還是使用 stress,但這次模擬的是 4 個(gè)進(jìn)程*
[root@oldboy ~]# stress -c 4 --timeout 600
*2.由于系統(tǒng)只有 1 個(gè) CPU,明顯比 4 個(gè)進(jìn)程要少得多,因而,系統(tǒng)的 CPU 處于嚴(yán)重過載狀態(tài)*
*3.然后,再運(yùn)行 pidstat 來看一下進(jìn)程的情況:*
# 間隔5秒后輸出一組數(shù)據(jù)
[root@oldboy ~]# pidstat -u 5 1
*可以看出,4 個(gè)進(jìn)程在爭搶 1 個(gè) CPU,每個(gè)進(jìn)程等待 CPU 的時(shí)間(也就是代碼塊中的 %wait 列)高達(dá) 75%。這些超出 CPU 計(jì)算能力的進(jìn)程,最終導(dǎo)致 CPU 過載。*
****分析完這三個(gè)案例,我再來歸納一下平均負(fù)載與CPU\****
***平均負(fù)載提供了一個(gè)快速查看系統(tǒng)整體性能的手段,反映了整體的負(fù)載情況。但只看平均負(fù)載本身,我們并不能直接發(fā)現(xiàn),到底是哪里出現(xiàn)了瓶頸。所以,在理解平均負(fù)載時(shí),也要注意:
平均負(fù)載高有可能是 CPU 密集型進(jìn)程導(dǎo)致的;
平均負(fù)載高并不一定代表 CPU 使用率高,還有可能是 I/O 更繁忙了;
當(dāng)發(fā)現(xiàn)負(fù)載高的時(shí)候,你可以使用 mpstat、pidstat 等工具,輔助分析負(fù)載的來源****
**系統(tǒng)負(fù)載的計(jì)算和意義**
進(jìn)程以及子進(jìn)程和線程產(chǎn)生的計(jì)算指令都會(huì)讓cpu執(zhí)行,產(chǎn)生請求的這些進(jìn)程組成"運(yùn)行隊(duì)列",等待cpu執(zhí)行,這個(gè)隊(duì)列就是系統(tǒng)負(fù)載, 系統(tǒng)負(fù)載是所有cpu的運(yùn)行隊(duì)列的總和.
[root@oldboyedu ~]# w
20:25:48 up 95 days, 9:06, 1 user, load average: 2.92, 0.00, 0.00
//假設(shè)當(dāng)前計(jì)算機(jī)有4個(gè)核心的cpu,當(dāng)前的負(fù)載是2.92
cpu1 cpu2 cpu3 cpu4
2.94/4(個(gè)cpu核心) = 73%的cpu資源被使用,剩下27%的cpu計(jì)算資源是空想的
//假設(shè)當(dāng)前的計(jì)算有2個(gè)核心的cpu,當(dāng)前的負(fù)載是2.92
2.92/2 = 146% 已經(jīng)驗(yàn)證超過了cpu的處理能力
7. 日常故障排查流程(含日志)
- w/uptime, 查看負(fù)載
- ps aux/top 看看 cpu百分比, io wait或者是內(nèi)存占用的高? (三高 cpu,io,內(nèi)存)
- top檢查具體是哪個(gè)進(jìn)程,找出可疑進(jìn)程
- 追蹤這個(gè)進(jìn)程使用情況,做什么的?
- 看看對應(yīng)**日志**是否有異常
- 系統(tǒng)日志: /var/log/messages(系統(tǒng)通用日志) /var/log/secure(用戶登錄情況)
- 服務(wù)軟件的日志
***3.那平均負(fù)載為多少時(shí)合理\***
*最理想的狀態(tài)是每個(gè) CPU核心 上都剛好運(yùn)行著一個(gè)進(jìn)程,這樣每個(gè) CPU 都得到了充分利用。所以在評判平均負(fù)載時(shí),首先你要知道系統(tǒng)有幾個(gè) CPU核心,這可以通過 top 命令獲取,或`grep 'model name' /proc/cpuinfo`*
系統(tǒng)平均負(fù)載被定義為在特定時(shí)間間隔內(nèi)運(yùn)行隊(duì)列中的平均進(jìn)程數(shù)。如果一個(gè)進(jìn)程滿足以下條件則其就會(huì)位于運(yùn)行隊(duì)列中:
- 它沒有在等待I/O操作的結(jié)果
- 它沒有主動(dòng)進(jìn)入等待狀態(tài)(也就是沒有調(diào)用'wait')
- 沒有被停止(例如:等待終止)
《內(nèi)容來自老男孩老師的課堂筆記》