自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

誰再說不熟悉Linux命令,就把這個(gè)給他扔過去!

系統(tǒng) Linux
雖然平時(shí)大部分工作都是和Java相關(guān)的開發(fā), 但是每天都會接觸Linux系統(tǒng), 尤其是使用了Mac之后, 每天都是工作在黑色背景的命令行環(huán)境中.

 [[431171]]

雖然平時(shí)大部分工作都是和Java相關(guān)的開發(fā), 但是每天都會接觸Linux系統(tǒng), 尤其是使用了Mac之后, 每天都是工作在黑色背景的命令行環(huán)境中. 自己記憶力不好, 很多有用的Linux命令不能很好的記憶, 現(xiàn)在逐漸總結(jié)一下, 以便后續(xù)查看.

基本操作

Linux關(guān)機(jī),重啟 

  1. # 關(guān)機(jī)  
  2. shutdown -h now  
  3. # 重啟  
  4. shutdown -r now 

查看系統(tǒng),CPU信息 

  1. # 查看系統(tǒng)內(nèi)核信息  
  2. uname -a  
  3. # 查看系統(tǒng)內(nèi)核版本  
  4. cat /proc/version  
  5. # 查看當(dāng)前用戶環(huán)境變量  
  6. env  
  7. cat /proc/cpuinfo  
  8. # 查看有幾個(gè)邏輯cpu, 包括cpu型號  
  9. cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c  
  10. # 查看有幾顆cpu,每顆分別是幾核  
  11. cat /proc/cpuinfo | grep physical | uniq -c  
  12. # 查看當(dāng)前CPU運(yùn)行在32bit還是64bit模式下, 如果是運(yùn)行在32bit下也不代表CPU不支持64bit  
  13. getconf LONG_BIT  
  14. # 結(jié)果大于0, 說明支持64bit計(jì)算. lm指long mode, 支持lm則是64bit  
  15. cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l 

建立軟連接

  1. ln -s /usr/local/jdk1.8/ jdk 

rpm相關(guān) 

  1. # 查看是否通過rpm安裝了該軟件  
  2. rpm -qa | grep 軟件名 

sshkey 

  1. # 創(chuàng)建sshkey  
  2. ssh-keygen -t rsa -C your_email@example.com  
  3. #id_rsa.pub 的內(nèi)容拷貝到要控制的服務(wù)器的 home/username/.ssh/authorized_keys 中,如果沒有則新建(.ssh權(quán)限為700, authorized_keys權(quán)限為600) 

命令重命名 

  1. # 在各個(gè)用戶的.bash_profile中添加重命名配置  
  2. alias ll='ls -alF' 

同步服務(wù)器時(shí)間 

  1. sudo ntpdate -u ntp.api.bz 

后臺運(yùn)行命令 

  1. # 后臺運(yùn)行,并且有nohup.out輸出  
  2. nohup xxx &  
  3. # 后臺運(yùn)行, 不輸出任何日志  
  4. nohup xxx > /dev/null &  
  5. # 后臺運(yùn)行, 并將錯(cuò)誤信息做標(biāo)準(zhǔn)輸出到日志中  
  6. nohup xxx >out.log 2>&1 & 

強(qiáng)制活動用戶退出 

  1. # 命令來完成強(qiáng)制活動用戶退出.其中TTY表示終端名稱  
  2. pkill -kill -t [TTY] 

查看命令路徑 

  1. which <命令> 

查看進(jìn)程所有打開最大fd 

  1. ulimit -n 

配置dns 

  1. vim /etc/resolv.conf 

nslookup,查看域名路由表 

  1. nslookup google.com 

last, 最近登錄信息列表 

  1. # 最近登錄的5個(gè)賬號  
  2. last -n 5 

設(shè)置固定ip 

  1. ifconfig em1  192.168.5.177 netmask 255.255.255.0 

查看進(jìn)程內(nèi)加載的環(huán)境變量 

  1. # 也可以去 cd /proc 目錄下, 查看進(jìn)程內(nèi)存中加載的東西  
  2. ps eww -p  XXXXX(進(jìn)程號) 

查看進(jìn)程樹找到服務(wù)器進(jìn)程 

  1. ps auwxf 

查看進(jìn)程啟動路徑 

  1. cd /proc/xxx(進(jìn)程號)  
  2. ls -all  
  3. # cwd對應(yīng)的是啟動路徑 

添加用戶, 配置sudo權(quán)限 

  1. # 新增用戶  
  2. useradd 用戶名  
  3. passwd 用戶名  
  4. #增加sudo權(quán)限  
  5. vim /etc/sudoers  
  6. # 修改文件里面的  
  7. # root    ALL=(ALL)       ALL  
  8. # 用戶名 ALL=(ALL)       ALL 

強(qiáng)制關(guān)閉進(jìn)程名包含xxx的所有進(jìn)程 

  1. ps aux|grep xxx | grep -v grep | awk '{print $2}' | xargs kill -9 

磁盤,文件,目錄相關(guān)操作

vim操作 

  1. #normal模式下 g表示全局, x表示查找的內(nèi)容, y表示替換后的內(nèi)容  
  2. :%s/x/y/g  
  3. #normal模式下  
  4. 0  # 光標(biāo)移到行首(數(shù)字0)  
  5. $  # 光標(biāo)移至行尾  
  6. shift + g # 跳到文件最后  
  7. gg # 跳到文件頭  
  8. # 顯示行號  
  9. :set nu  
  10. # 去除行號  
  11. :set nonu  
  12. # 檢索  
  13. /xxx(檢索內(nèi)容)  # 從頭檢索, 按n查找下一個(gè)  
  14. ?xxx(檢索內(nèi)容)  # 從尾部檢索 

打開只讀文件,修改后需要保存時(shí)(不用切換用戶即可保存的方式) 

  1. # 在normal模式下  
  2. :w !sudo tee % 

查看磁盤, 文件目錄基本信息 

  1. # 查看磁盤掛載情況  
  2. mount  
  3. # 查看磁盤分區(qū)信息  
  4. df  
  5. # 查看目錄及子目錄大小  
  6. du -H -h  
  7. # 查看當(dāng)前目錄下各個(gè)文件, 文件夾占了多少空間, 不會遞歸  
  8. du -sh * 

wc命令 

  1. # 查看文件里有多少行  
  2. wc -l filename  
  3. # 看文件里有多少個(gè)word  
  4. wc -w filename  
  5. # 文件里最長的那一行是多少個(gè)字  
  6. wc -L filename  
  7. # 統(tǒng)計(jì)字節(jié)數(shù)  
  8. wc -c 

常用壓縮, 解壓縮命令

壓縮命令 

  1. tar czvf xxx.tar 壓縮目錄  
  2. zip -r xxx.zip 壓縮目錄 

解壓縮命令 

  1. tar zxvf xxx.tar  
  2. # 解壓到指定文件夾  
  3. tar zxvf xxx.tar -C /xxx/yyy/  
  4. unzip xxx.zip 

變更文件所屬用戶, 用戶組 

  1. chown eagleye.eagleye xxx.log 

cp, scp, mkdir 

  1. #復(fù)制  
  2. cp xxx.log  
  3. # 復(fù)制并強(qiáng)制覆蓋同名文件  
  4. cp -f xxx.log  
  5. # 復(fù)制文件夾  
  6. cp -r xxx(源文件夾) yyy(目標(biāo)文件夾)  
  7. # 遠(yuǎn)程復(fù)制  
  8. scp -P ssh端口 username@10.10.10.101:/home/username/xxx /home/xxx  
  9. # 級聯(lián)創(chuàng)建目錄  
  10. mkdir -p /xxx/yyy/zzz  
  11. # 批量創(chuàng)建文件夾, 會在test,main下都創(chuàng)建java, resources文件夾  
  12. mkdir -p src/{test,main}/{java,resources} 

比較兩個(gè)文件 

  1. diff -u 1.txt 2.txt 

日志輸出的字節(jié)數(shù),可以用作性能測試 

  1. # 如果做性能測試, 可以每執(zhí)行一次, 往日志里面輸出 “.” , 這樣日志中的字節(jié)數(shù)就是實(shí)際的性能測試運(yùn)行的次數(shù), 還可以看見實(shí)時(shí)速率. 
  2. tail -f xxx.log | pv -bt 

查看, 去除特殊字符 

  1. # 查看特殊字符  
  2. cat -v xxx.sh  
  3. # 去除特殊字符  
  4. sed -i 's/^M//g’ env.sh  去除文件的特殊字符, 比如^M:  需要這樣輸入: ctrl+v+enter 

處理因系統(tǒng)原因引起的文件中特殊字符的問題 

  1. # 可以轉(zhuǎn)換為該系統(tǒng)下的文件格式  
  2. cat file.sh > file.sh_bak  
  3. # 先將file.sh中文件內(nèi)容復(fù)制下來然后運(yùn)行, 然后粘貼內(nèi)容, 最后ctrl + d 保存退出  
  4. cat > file1.sh  
  5. # 在vim中通過如下設(shè)置文件編碼和文件格式  
  6. :set fileencodings=utf-8 ,然后 w (存盤)一下即可轉(zhuǎn)化為 utf8 格式,  
  7. :set fileformat=unix  
  8. # 在mac下使用dos2unix進(jìn)行文件格式化  
  9. find . -name "*.sh" | xargs dos2unix 

tee, 重定向的同時(shí)輸出到屏幕

  1. awk ‘{print $0}’ xxx.log | tee test.log 

檢索相關(guān)

grep 

  1. # 反向匹配, 查找不包含xxx的內(nèi)容  
  2. grep -v xxx  
  3. # 排除所有空行  
  4. grep -v '^/pre>  
  5. # 返回結(jié)果 2,則說明第二行是空行  
  6. grep -n “^$” 111.txt      
  7. # 查詢以abc開頭的行  
  8. grep -n “^abc” 111.txt   
  9. # 同時(shí)列出該詞語出現(xiàn)在文章的第幾行  
  10. grep 'xxx' -n xxx.log  
  11. # 計(jì)算一下該字串出現(xiàn)的次數(shù)  
  12. grep 'xxx' -c xxx.log  
  13. # 比對的時(shí)候,不計(jì)較大小寫的不同  
  14. grep 'xxx' -i xxx.log 

awk 

  1. # 以':' 為分隔符,如果第五域有user則輸出該行  
  2. awk -F ':' '{if ($5 ~ /user/) print $0}' /etc/passwd   
  3. # 統(tǒng)計(jì)單個(gè)文件中某個(gè)字符(串)(中文無效)出現(xiàn)的次數(shù)  
  4. awk -v RS='character' 'END {print --NR}' xxx.txt  

find檢索命令 

  1. # 在目錄下找后綴是.mysql的文件  
  2. find /home/eagleye -name '*.mysql' -print  
  3. # 會從 /usr 目錄開始往下找,找最近3天之內(nèi)存取過的文件。  
  4. find /usr -atime 3 –print  
  5. # 會從 /usr 目錄開始往下找,找最近5天之內(nèi)修改過的文件。  
  6. find /usr -ctime 5 –print  
  7. # 會從 /doc 目錄開始往下找,找jacky 的、文件名開頭是 j的文件。   
  8. find /doc -user jacky -name 'j*' –print  
  9. # 會從 /doc 目錄開始往下找,找尋文件名是 ja 開頭或者 ma開頭的文件。  
  10. find /doc \( -name 'ja*' -o- -name 'ma*' \) –print  
  11. #  會從 /doc 目錄開始往下找,找到凡是文件名結(jié)尾為 bak的文件,把它刪除掉。-exec 選項(xiàng)是執(zhí)行的意思,rm 是刪除命令,{ } 表示文件名,“\;”是規(guī)定的命令結(jié)尾。   
  12. find /doc -name '*bak' -exec rm {} \; 

網(wǎng)絡(luò)相關(guān)

查看什么進(jìn)程使用了該端口 

  1. lsof -i:port 

獲取本機(jī)ip地址 

  1. /sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:" 

iptables 

  1. # 查看iptables狀態(tài)  
  2. service iptables status  
  3. # 要封停一個(gè)ip  
  4. iptables -I INPUT -s ***.***.***.*** -j DROP  
  5. # 要解封一個(gè)IP,使用下面這條命令:  
  6. iptables -D INPUT -s ***.***.***.*** -j DROP  
  7. 備注: 參數(shù)-I是表示Insert(添加),-D表示Delete(刪除)。后面跟的是規(guī)則,INPUT表示入站,***.***.***.***表示要封停的IP,DROP表示放棄連接。  
  8. #開啟9090端口的訪問  
  9. /sbin/iptables -I INPUT -p tcp --dport 9090 -j ACCEPT   
  10. # 防火墻開啟、關(guān)閉、重啟  
  11. /etc/init.d/iptables status  
  12. /etc/init.d/iptables start  
  13. /etc/init.d/iptables stop  
  14. /etc/init.d/iptables restart 

nc命令, tcp調(diào)試?yán)?nbsp;

  1. #給某一個(gè)endpoint發(fā)送TCP請求,就將data的內(nèi)容發(fā)送到對端  
  2. nc 192.168.0.11 8000 < data.txt  
  3. #nc可以當(dāng)做服務(wù)器,監(jiān)聽某個(gè)端口號,把某一次請求的內(nèi)容存儲到received_data里  
  4. nc -l 8000 > received_data  
  5. #上邊只監(jiān)聽一次,如果多次可以加上-k參數(shù)  
  6. nc -lk 8000 

tcpdump 

  1. # dump出本機(jī)12301端口的tcp包  
  2. tcpdump -i em1 tcp port 12301 -s 1500 -w abc.pcap 

跟蹤網(wǎng)絡(luò)路由路徑 

  1. # traceroute默認(rèn)使用udp方式, 如果是-I則改成icmp方式  
  2. traceroute -I www.163.com  
  3. # 從ttl第3跳跟蹤  
  4. traceroute -M 3 www.163.com   
  5. # 加上端口跟蹤  
  6. traceroute -p 8080 192.168.10.11 

ss 

  1. # 顯示本地打開的所有端口 
  2. ss -l   
  3. # 顯示每個(gè)進(jìn)程具體打開的socket  
  4. ss -pl   
  5. # 顯示所有tcp socket  
  6. ss -t -a   
  7. # 顯示所有的UDP Socekt  
  8. ss -u -a   
  9. # 顯示所有已建立的SMTP連接  
  10. ss -o state established '( dport = :smtp or sport = :smtp )'    
  11. # 顯示所有已建立的HTTP連接   
  12. ss -o state established '( dport = :http or sport = :http )'    
  13. 找出所有連接X服務(wù)器的進(jìn)程  
  14. ss -x src /tmp/.X11-unix/*    
  15. 列出當(dāng)前socket統(tǒng)計(jì)信息  
  16. ss -s   
  17. 解釋:netstat是遍歷/proc下面每個(gè)PID目錄,ss直接讀/proc/net下面的統(tǒng)計(jì)信息。所以ss執(zhí)行的時(shí)候消耗資源以及消耗的時(shí)間都比netstat少很多 

netstat 

  1. # 輸出每個(gè)ip的連接數(shù),以及總的各個(gè)狀態(tài)的連接數(shù)  
  2. netstat -n | awk '/^tcp/ {n=split($(NF-1),array,":");if(n<=2)++S[array[(1)]];else++S[array[(4)]];++s[$NF];++N} END {for(a in S){printf("%-20s %s\n", a, S[a]);++I}printf("%-20s %s\n","TOTAL_IP",I);for(a in s) printf("%-20s %s\n",a, s[a]);printf("%-20s %s\n","TOTAL_LINK",N);}' 
  3. # 統(tǒng)計(jì)所有連接狀態(tài),  
  4. # CLOSED:無連接是活動的或正在進(jìn)行  
  5. # LISTEN:服務(wù)器在等待進(jìn)入呼叫  
  6. # SYN_RECV:一個(gè)連接請求已經(jīng)到達(dá),等待確認(rèn)  
  7. # SYN_SENT:應(yīng)用已經(jīng)開始,打開一個(gè)連接  
  8. # ESTABLISHED:正常數(shù)據(jù)傳輸狀態(tài)  
  9. # FIN_WAIT1:應(yīng)用說它已經(jīng)完成  
  10. # FIN_WAIT2:另一邊已同意釋放  
  11. # ITMED_WAIT:等待所有分組死掉  
  12. # CLOSING:兩邊同時(shí)嘗試關(guān)閉  
  13. # TIME_WAIT:主動關(guān)閉連接一端還沒有等到另一端反饋期間的狀態(tài)  
  14. # LAST_ACK:等待所有分組死掉  
  15. netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}'  
  16. # 查找較多time_wait連接  
  17. netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20 

監(jiān)控linux性能命令

top 

  1. 按大寫的 F 或 O 鍵,然后按 a-z 可以將進(jìn)程按照相應(yīng)的列進(jìn)行排序, 然后回車。而大寫的 R 鍵可以將當(dāng)前的排序倒轉(zhuǎn) 
列名 含義
PID 進(jìn)程id
PPID 父進(jìn)程id
RUSER Real user name
UID 進(jìn)程所有者的用戶id
USER 進(jìn)程所有者的用戶名
GROUP 進(jìn)程所有者的組名
TTY 啟動進(jìn)程的終端名。不是從終端啟動的進(jìn)程則顯示為 ?
PR 優(yōu)先級
NI nice值。負(fù)值表示高優(yōu)先級,正值表示低優(yōu)先級
P 最后使用的CPU,僅在多CPU環(huán)境下有意義
%CPU 上次更新到現(xiàn)在的CPU時(shí)間占用百分比
TIME 進(jìn)程使用的CPU時(shí)間總計(jì),單位秒
TIME+ 進(jìn)程使用的CPU時(shí)間總計(jì),單位1/100秒
%MEM 進(jìn)程使用的物理內(nèi)存百分比
VIRT 進(jìn)程使用的虛擬內(nèi)存總量,單位kb。VIRT=SWAP+RES
SWAP 進(jìn)程使用的虛擬內(nèi)存中,被換出的大小,單位kb。
RES 進(jìn)程使用的、未被換出的物理內(nèi)存大小,單位kb。RES=CODE+DATA
CODE 可執(zhí)行代碼占用的物理內(nèi)存大小,單位kb
DATA 可執(zhí)行代碼以外的部分(數(shù)據(jù)段+棧)占用的物理內(nèi)存大小,單位kb
SHR 共享內(nèi)存大小,單位kb
nFLT 頁面錯(cuò)誤次數(shù)
nDRT 最后一次寫入到現(xiàn)在,被修改過的頁面數(shù)。
S 進(jìn)程狀態(tài)。D=不可中斷的睡眠狀態(tài),R=運(yùn)行,S=睡眠,T=跟蹤/停止,Z=僵尸進(jìn)程
COMMAND 命令名/命令行
WCHAN 若該進(jìn)程在睡眠,則顯示睡眠中的系統(tǒng)函數(shù)名
Flags 任務(wù)標(biāo)志,參考 sched.h

dmesg,查看系統(tǒng)日志 

  1. dmesg 

iostat,磁盤IO情況監(jiān)控 

  1. iostat -xz 1  
  2. # r/s, w/s, rkB/s, wkB/s:分別表示每秒讀寫次數(shù)和每秒讀寫數(shù)據(jù)量(千字節(jié))。讀寫量過大,可能會引起性能問題。  
  3. # await:IO操作的平均等待時(shí)間,單位是毫秒。這是應(yīng)用程序在和磁盤交互時(shí),需要消耗的時(shí)間,包括IO等待和實(shí)際操作的耗時(shí)。如果這個(gè)數(shù)值過大,可能是硬件設(shè)備遇到了瓶頸或者出現(xiàn)故障。  
  4. # avgqu-sz:向設(shè)備發(fā)出的請求平均數(shù)量。如果這個(gè)數(shù)值大于1,可能是硬件設(shè)備已經(jīng)飽和(部分前端硬件設(shè)備支持并行寫入)。  
  5. # %util:設(shè)備利用率。這個(gè)數(shù)值表示設(shè)備的繁忙程度,經(jīng)驗(yàn)值是如果超過60,可能會影響IO性能(可以參照IO操作平均等待時(shí)間)。如果到達(dá)100%,說明硬件設(shè)備已經(jīng)飽和。  
  6. # 如果顯示的是邏輯設(shè)備的數(shù)據(jù),那么設(shè)備利用率不代表后端實(shí)際的硬件設(shè)備已經(jīng)飽和。值得注意的是,即使IO性能不理想,也不一定意味這應(yīng)用程序性能會不好,可以利用諸如預(yù)讀取、寫緩存等策略提升應(yīng)用性能。 

free,內(nèi)存使用情況 

  1. free -m  
  2. eg:  
  3.      total       used       free     shared    buffers     cached  
  4. Mem:          1002        769        232          0         62        421  
  5. -/+ buffers/cache:          286        715  
  6. Swap:          1153          0       1153  
  7. 第一部分Mem行:  
  8. total 內(nèi)存總數(shù): 1002M  
  9. used 已經(jīng)使用的內(nèi)存數(shù): 769M  
  10. free 空閑的內(nèi)存數(shù): 232M  
  11. shared 當(dāng)前已經(jīng)廢棄不用,總是0  
  12. buffers Buffer 緩存內(nèi)存數(shù): 62M  
  13. cached Page 緩存內(nèi)存數(shù):421M  
  14. 關(guān)系:total(1002M) = used(769M) + free(232M)  
  15. 第二部分(-/+ buffers/cache):  
  16. (-buffers/cache) used內(nèi)存數(shù):286M (指的第一部分Mem行中的used – buffers – cached)  
  17. (+buffers/cache) free內(nèi)存數(shù): 715M (指的第一部分Mem行中的free + buffers + cached)  
  18. 可見-buffers/cache反映的是被程序?qū)崒?shí)在在吃掉的內(nèi)存,而+buffers/cache反映的是可以挪用的內(nèi)存總數(shù).  
  19. 第三部分是指交換分區(qū) 

sar,查看網(wǎng)絡(luò)吞吐狀態(tài) 

  1. # sar命令在這里可以查看網(wǎng)絡(luò)設(shè)備的吞吐率。在排查性能問題時(shí),可以通過網(wǎng)絡(luò)設(shè)備的吞吐量,判斷網(wǎng)絡(luò)設(shè)備是否已經(jīng)飽和  
  2. sar -n DEV 1  
  3.  
  4. # sar命令在這里用于查看TCP連接狀態(tài),其中包括:  
  5. # active/s:每秒本地發(fā)起的TCP連接數(shù),既通過connect調(diào)用創(chuàng)建的TCP連接;  
  6. # passive/s:每秒遠(yuǎn)程發(fā)起的TCP連接數(shù),即通過accept調(diào)用創(chuàng)建的TCP連接;  
  7. # retrans/s:每秒TCP重傳數(shù)量;  
  8. # TCP連接數(shù)可以用來判斷性能問題是否由于建立了過多的連接,進(jìn)一步可以判斷是主動發(fā)起的連接,還是被動接受的連接。TCP重傳可能是因?yàn)榫W(wǎng)絡(luò)環(huán)境惡劣,或者服務(wù)器壓力過大導(dǎo)致丟包  
  9. sar -n TCP,ETCP 1 

vmstat, 給定時(shí)間監(jiān)控CPU使用率, 內(nèi)存使用, 虛擬內(nèi)存交互, IO讀寫 

  1. # 2表示每2秒采集一次狀態(tài)信息, 1表示只采集一次(忽略既是一直采集)  
  2. vmstat 2 1  
  3. eg:  
  4. r b swpd free buff cache si so bi bo in cs us sy id wa  
  5. 1 0 0 3499840 315836 3819660 0 0 0 1 2 0 0 0 100 0  
  6. 0 0 0 3499584 315836 3819660 0 0 0 0 88 158 0 0 100 0  
  7. 0 0 0 3499708 315836 3819660 0 0 0 2 86 162 0 0 100 0  
  8. 0 0 0 3499708 315836 3819660 0 0 0 10 81 151 0 0 100 0  
  9. 1 0 0 3499732 315836 3819660 0 0 0 2 83 154 0 0 100 0 
  •  r 表示運(yùn)行隊(duì)列(就是說多少個(gè)進(jìn)程真的分配到CPU),我測試的服務(wù)器目前CPU比較空閑,沒什么程序在跑,當(dāng)這個(gè)值超過了CPU數(shù)目,就會出現(xiàn)CPU瓶頸了。這個(gè)也和top的負(fù)載有關(guān)系,一般負(fù)載超過了3就比較高,超過了5就高,超過了10就不正常了,服務(wù)器的狀態(tài)很危險(xiǎn)。top的負(fù)載類似每秒的運(yùn)行隊(duì)列。如果運(yùn)行隊(duì)列過大,表示你的CPU很繁忙,一般會造成CPU使用率很高。
  •  b 表示阻塞的進(jìn)程,這個(gè)不多說,進(jìn)程阻塞,大家懂的。
  •  swpd 虛擬內(nèi)存已使用的大小,如果大于0,表示你的機(jī)器物理內(nèi)存不足了,如果不是程序內(nèi)存泄露的原因,那么你該升級內(nèi)存了或者把耗內(nèi)存的任務(wù)遷移到其他機(jī)器。
  •  free 空閑的物理內(nèi)存的大小,我的機(jī)器內(nèi)存總共8G,剩余3415M。
  •  buff Linux/Unix系統(tǒng)是用來存儲,目錄里面有什么內(nèi)容,權(quán)限等的緩存,我本機(jī)大概占用300多M
  •  cache cache直接用來記憶我們打開的文件,給文件做緩沖,我本機(jī)大概占用300多M(這里是Linux/Unix的聰明之處,把空閑的物理內(nèi)存的一部分拿來做文件和目錄的緩存,是為了提高 程序執(zhí)行的性能,當(dāng)程序使用內(nèi)存時(shí),buffer/cached會很快地被使用。)
  •  si 每秒從磁盤讀入虛擬內(nèi)存的大小,如果這個(gè)值大于0,表示物理內(nèi)存不夠用或者內(nèi)存泄露了,要查找耗內(nèi)存進(jìn)程解決掉。我的機(jī)器內(nèi)存充裕,一切正常。
  •  so 每秒虛擬內(nèi)存寫入磁盤的大小,如果這個(gè)值大于0,同上。
  •  bi 塊設(shè)備每秒接收的塊數(shù)量,這里的塊設(shè)備是指系統(tǒng)上所有的磁盤和其他塊設(shè)備,默認(rèn)塊大小是1024byte,我本機(jī)上沒什么IO操作,所以一直是0,但是我曾在處理拷貝大量數(shù)據(jù)(2-3T)的機(jī)器上看過可以達(dá)到140000/s,磁盤寫入速度差不多140M每秒
  • bo 塊設(shè)備每秒發(fā)送的塊數(shù)量,例如我們讀取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO過于頻繁,需要調(diào)整。
  •  in 每秒CPU的中斷次數(shù),包括時(shí)間中斷
  •  cs 每秒上下文切換次數(shù),例如我們調(diào)用系統(tǒng)函數(shù),就要進(jìn)行上下文切換,線程的切換,也要進(jìn)程上下文切換,這個(gè)值要越小越好,太大了,要考慮調(diào)低線程或者進(jìn)程的數(shù)目,例如在apache和nginx這種web服務(wù)器中,我們一般做性能測試時(shí)會進(jìn)行幾千并發(fā)甚至幾萬并發(fā)的測試,選擇web服務(wù)器的進(jìn)程可以由進(jìn)程或者線程的峰值一直下調(diào),壓測,直到cs到一個(gè)比較小的值,這個(gè)進(jìn)程和線程數(shù)就是比較合適的值了。系統(tǒng)調(diào)用也是,每次調(diào)用系統(tǒng)函數(shù),我們的代碼就會進(jìn)入內(nèi)核空間,導(dǎo)致上下文切換,這個(gè)是很耗資源,也要盡量避免頻繁調(diào)用系統(tǒng)函數(shù)。上下文切換次數(shù)過多表示你的CPU大部分浪費(fèi)在上下文切換,導(dǎo)致CPU干正經(jīng)事的時(shí)間少了,CPU沒有充分利用,是不可取的。
  •  us 用戶CPU時(shí)間,我曾經(jīng)在一個(gè)做加密解密很頻繁的服務(wù)器上,可以看到us接近100,r運(yùn)行隊(duì)列達(dá)到80(機(jī)器在做壓力測試,性能表現(xiàn)不佳)。
  •  sy 系統(tǒng)CPU時(shí)間,如果太高,表示系統(tǒng)調(diào)用時(shí)間長,例如是IO操作頻繁。
  •  id 空閑 CPU時(shí)間,一般來說,id + us + sy = 100,一般我認(rèn)為id是空閑CPU使用率,us是用戶CPU使用率,sy是系統(tǒng)CPU使用率。
  •  wt 等待IO CPU時(shí)間。 

 

責(zé)任編輯:龐桂玉 來源: Java知音
相關(guān)推薦

2020-10-29 18:42:26

Linux命令操作系統(tǒng)

2020-11-05 07:58:12

CSS變量Web

2016-01-12 10:38:58

Angular.js代碼調(diào)試

2018-10-15 12:27:50

iPhone設(shè)計(jì)蘋果

2023-10-17 16:31:07

人工智能GitHub

2020-10-30 09:02:15

Redis內(nèi)存數(shù)據(jù)

2021-11-02 08:54:35

Linux CPULinux 系統(tǒng)

2018-08-07 16:01:32

synchronizevolatilefinal

2022-09-26 10:09:08

MVCC控制并發(fā)

2021-02-22 13:32:19

MySQLSQL索引

2016-08-31 13:36:24

IBM

2022-11-08 09:33:36

訂單系統(tǒng)電商

2018-07-03 14:54:25

Java內(nèi)存模型

2020-12-11 08:23:06

JavaMemory Mode內(nèi)存模型

2020-03-18 08:00:00

LinuxHtop系統(tǒng)性能

2018-12-07 09:31:52

分布式鎖服務(wù)框架分布式系統(tǒng)

2020-04-20 13:11:21

HashMap底層存儲

2024-04-10 08:48:31

MySQLSQL語句

2023-12-27 11:38:01

2019-09-19 14:03:32

B樹節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號