Java 開發(fā)常用的 Linux 命令知識積累

  • 寫在前面

  • 基本操作

  • Linux關(guān)機,重啟

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

  • 建立軟連接

  • rpm相關(guān)

  • sshkey

  • 命令重命名

  • 同步服務器時間

  • 后臺運行命令

  • 強制活動用戶退出

  • 查看命令路徑

  • 查看進程所有打開最大fd數(shù)

  • 配置dns

  • nslookup,查看域名路由表

  • last, 最近登錄信息列表

  • 設置固定ip

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

  • 查看進程樹找到服務器進程

  • 查看進程啟動路徑

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

  • 強制關(guān)閉進程名包含xxx的所有進程

  • vim操作

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

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

  • wc命令

  • 常用壓縮, 解壓縮命令

    • 壓縮命令
    • 解壓縮命令
  • 變更文件所屬用戶, 用戶組

  • cp, scp, mkdir

  • 比較兩個文件

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

  • 查看, 去除特殊字符

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

  • tee, 重定向的同時輸出到屏幕

  • grep

  • awk

  • find檢索命令

  • 查看什么進程使用了該端口

  • 獲取本機ip地址

  • iptables

  • nc命令, tcp調(diào)試利器

  • tcpdump

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

  • ss

  • netstat

  • top

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

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

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

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

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


寫在前面

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

基本操作

Linux關(guān)機,重啟

# 關(guān)機
shutdown -h now

# 重啟
shutdown -r now

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

# 查看系統(tǒng)內(nèi)核信息
uname -a

# 查看系統(tǒng)內(nèi)核版本
cat /proc/version

# 查看當前用戶環(huán)境變量
env

cat /proc/cpuinfo

# 查看有幾個邏輯cpu, 包括cpu型號
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

# 查看有幾顆cpu,每顆分別是幾核
cat /proc/cpuinfo | grep physical | uniq -c

# 查看當前CPU運行在32bit還是64bit模式下, 如果是運行在32bit下也不代表CPU不支持64bit
getconf LONG_BIT

# 結(jié)果大于0, 說明支持64bit計算. lm指long mode, 支持lm則是64bit
cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l

建立軟連接

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

rpm相關(guān)

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

sshkey

# 創(chuàng)建sshkey
ssh-keygen -t rsa -C your_email@example.com

#id_rsa.pub 的內(nèi)容拷貝到要控制的服務器的 home/username/.ssh/authorized_keys 中,如果沒有則新建(.ssh權(quán)限為700, authorized_keys權(quán)限為600)

命令重命名

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

同步服務器時間

sudo ntpdate -u ntp.api.bz

后臺運行命令

# 后臺運行,并且有nohup.out輸出
nohup xxx &

# 后臺運行, 不輸出任何日志
nohup xxx > /dev/null &

# 后臺運行, 并將錯誤信息做標準輸出到日志中 
nohup xxx >out.log 2>&1 &

強制活動用戶退出

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

查看命令路徑

which <命令>

查看進程所有打開最大fd數(shù)

ulimit -n

配置dns

vim /etc/resolv.conf

nslookup,查看域名路由表

nslookup google.com

last, 最近登錄信息列表

# 最近登錄的5個賬號
last -n 5

設置固定ip

搜索公縱號:MarkerHub,關(guān)注回復[ vue ]獲取前后端入門教程氯材!

ifconfig em1  192.168.5.177 netmask 255.255.255.0

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

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

查看進程樹找到服務器進程

ps auwxf

查看進程啟動路徑

cd /proc/xxx(進程號)
ls -all
# cwd對應的是啟動路徑

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

# 新增用戶
useradd 用戶名
passwd 用戶名

#增加sudo權(quán)限
vim /etc/sudoers
# 修改文件里面的
# root    ALL=(ALL)       ALL
# 用戶名 ALL=(ALL)       ALL

強制關(guān)閉進程名包含xxx的所有進程

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

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

vim操作

#normal模式下 g表示全局, x表示查找的內(nèi)容, y表示替換后的內(nèi)容
:%s/x/y/g
 
#normal模式下
0  # 光標移到行首(數(shù)字0)
$  # 光標移至行尾
shift + g # 跳到文件最后
gg # 跳到文件頭
 
# 顯示行號
:set nu
 
# 去除行號
:set nonu
 
# 檢索
/xxx(檢索內(nèi)容)  # 從頭檢索, 按n查找下一個
?xxx(檢索內(nèi)容)  # 從尾部檢索

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

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

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

# 查看磁盤掛載情況
mount

# 查看磁盤分區(qū)信息
df

# 查看目錄及子目錄大小
du -H -h

# 查看當前目錄下各個文件, 文件夾占了多少空間, 不會遞歸
du -sh *

wc命令

# 查看文件里有多少行
wc -l filename
 
# 看文件里有多少個word
wc -w filename

# 文件里最長的那一行是多少個字
wc -L filename

# 統(tǒng)計字節(jié)數(shù)
wc -c

常用壓縮, 解壓縮命令

壓縮命令

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

解壓縮命令

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

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

chown eagleye.eagleye xxx.log

cp, scp, mkdir

#復制
cp xxx.log

# 復制并強制覆蓋同名文件
cp -f xxx.log

# 復制文件夾
cp -r xxx(源文件夾) yyy(目標文件夾)

# 遠程復制
scp -P ssh端口 username@10.10.10.101:/home/username/xxx /home/xxx

# 級聯(lián)創(chuàng)建目錄
mkdir -p /xxx/yyy/zzz

# 批量創(chuàng)建文件夾, 會在test,main下都創(chuàng)建java, resources文件夾
mkdir -p src/{test,main}/{java,resources}

比較兩個文件

diff -u 1.txt 2.txt

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

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

查看, 去除特殊字符

# 查看特殊字符
cat -v xxx.sh

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

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

# 可以轉(zhuǎn)換為該系統(tǒng)下的文件格式
cat file.sh > file.sh_bak

# 先將file.sh中文件內(nèi)容復制下來然后運行, 然后粘貼內(nèi)容, 最后ctrl + d 保存退出
cat > file1.sh

# 在vim中通過如下設置文件編碼和文件格式
:set fileencodings=utf-8 ,然后 w (存盤)一下即可轉(zhuǎn)化為 utf8 格式欧芽,
:set fileformat=unix

# 在mac下使用dos2unix進行文件格式化
find . -name "*.sh" | xargs dos2unix

tee, 重定向的同時輸出到屏幕

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

檢索相關(guān)

grep

# 反向匹配, 查找不包含xxx的內(nèi)容
grep -v xxx

# 排除所有空行
grep -v '^$'

# 返回結(jié)果 2,則說明第二行是空行
grep -n “^$” 111.txt    

# 查詢以abc開頭的行
grep -n “^abc” 111.txt 

# 同時列出該詞語出現(xiàn)在文章的第幾行
grep 'xxx' -n xxx.log

# 計算一下該字串出現(xiàn)的次數(shù)
grep 'xxx' -c xxx.log

# 比對的時候,不計較大小寫的不同
grep 'xxx' -i xxx.log

awk

# 以':' 為分隔符,如果第五域有user則輸出該行
awk -F ':' '{if ($5 ~ /user/) print $0}' /etc/passwd 

# 統(tǒng)計單個文件中某個字符(串)(中文無效)出現(xiàn)的次數(shù)
awk -v RS='character' 'END {print --NR}' xxx.txt

find檢索命令

# 在目錄下找后綴是.mysql的文件
find /home/eagleye -name '*.mysql' -print

# 會從 /usr 目錄開始往下找葛圃,找最近3天之內(nèi)存取過的文件千扔。
find /usr -atime 3 –print
  
# 會從 /usr 目錄開始往下找,找最近5天之內(nèi)修改過的文件库正。
find /usr -ctime 5 –print

# 會從 /doc 目錄開始往下找曲楚,找jacky 的、文件名開頭是 j的文件诀诊。  
find /doc -user jacky -name 'j*' –print

# 會從 /doc 目錄開始往下找洞渤,找尋文件名是 ja 開頭或者 ma開頭的文件。
find /doc \( -name 'ja*' -o- -name 'ma*' \) –print

#  會從 /doc 目錄開始往下找属瓣,找到凡是文件名結(jié)尾為 bak的文件,把它刪除掉讯柔。-exec 選項是執(zhí)行的意思抡蛙,rm 是刪除命令,{ } 表示文件名魂迄,“\;”是規(guī)定的命令結(jié)尾粗截。 
find /doc -name '*bak' -exec rm {} \;

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

查看什么進程使用了該端口

lsof -i:port

獲取本機ip地址

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

iptables

# 查看iptables狀態(tài)
service iptables status

# 要封停一個ip
iptables -I INPUT -s ***.***.***.*** -j DROP

# 要解封一個IP,使用下面這條命令:
iptables -D INPUT -s ***.***.***.*** -j DROP

備注: 參數(shù)-I是表示Insert(添加)捣炬,-D表示Delete(刪除)熊昌。后面跟的是規(guī)則绽榛,INPUT表示入站,***.***.***.***表示要封停的IP婿屹,DROP表示放棄連接灭美。

#開啟9090端口的訪問
/sbin/iptables -I INPUT -p tcp --dport 9090 -j ACCEPT 

# 防火墻開啟、關(guān)閉昂利、重啟
/etc/init.d/iptables status
/etc/init.d/iptables start
/etc/init.d/iptables stop
/etc/init.d/iptables restart

nc命令, tcp調(diào)試利器

#給某一個endpoint發(fā)送TCP請求,就將data的內(nèi)容發(fā)送到對端
nc 192.168.0.11 8000 < data.txt

#nc可以當做服務器届腐,監(jiān)聽某個端口號,把某一次請求的內(nèi)容存儲到received_data里
nc -l 8000 > received_data

#上邊只監(jiān)聽一次,如果多次可以加上-k參數(shù)
nc -lk 8000

tcpdump

# dump出本機12301端口的tcp包
tcpdump -i em1 tcp port 12301 -s 1500 -w abc.pcap

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

# traceroute默認使用udp方式, 如果是-I則改成icmp方式
traceroute -I www.163.com

# 從ttl第3跳跟蹤
traceroute -M 3 www.163.com  

# 加上端口跟蹤
traceroute -p 8080 192.168.10.11

ss

# 顯示本地打開的所有端口
ss -l 
 
# 顯示每個進程具體打開的socket
ss -pl 
 
# 顯示所有tcp socket
ss -t -a 
 
# 顯示所有的UDP Socekt
ss -u -a 
 
# 顯示所有已建立的SMTP連接
ss -o state established '( dport = :smtp or sport = :smtp )'  
 
# 顯示所有已建立的HTTP連接 
ss -o state established '( dport = :http or sport = :http )'  
 
找出所有連接X服務器的進程
ss -x src /tmp/.X11-unix/*  
 
列出當前socket統(tǒng)計信息
ss -s 
 
解釋:netstat是遍歷/proc下面每個PID目錄蜂奸,ss直接讀/proc/net下面的統(tǒng)計信息犁苏。所以ss執(zhí)行的時候消耗資源以及消耗的時間都比netstat少很多

netstat

# 輸出每個ip的連接數(shù),以及總的各個狀態(tài)的連接數(shù)
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);}'

# 統(tǒng)計所有連接狀態(tài), 
# CLOSED:無連接是活動的或正在進行
# LISTEN:服務器在等待進入呼叫
# SYN_RECV:一個連接請求已經(jīng)到達扩所,等待確認
# SYN_SENT:應用已經(jīng)開始围详,打開一個連接
# ESTABLISHED:正常數(shù)據(jù)傳輸狀態(tài)
# FIN_WAIT1:應用說它已經(jīng)完成
# FIN_WAIT2:另一邊已同意釋放
# ITMED_WAIT:等待所有分組死掉
# CLOSING:兩邊同時嘗試關(guān)閉
# TIME_WAIT:主動關(guān)閉連接一端還沒有等到另一端反饋期間的狀態(tài)
# LAST_ACK:等待所有分組死掉
netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}'

# 查找較多time_wait連接
netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20

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

top

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

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

dmesg

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

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

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

free -m
 
eg:
 
     total       used       free     shared    buffers     cached
Mem:          1002        769        232          0         62        421
-/+ buffers/cache:          286        715
Swap:          1153          0       1153
 
第一部分Mem行:
total 內(nèi)存總數(shù): 1002M
used 已經(jīng)使用的內(nèi)存數(shù): 769M
free 空閑的內(nèi)存數(shù): 232M
shared 當前已經(jīng)廢棄不用,總是0
buffers Buffer 緩存內(nèi)存數(shù): 62M
cached Page 緩存內(nèi)存數(shù):421M
 
關(guān)系:total(1002M) = used(769M) + free(232M)
 
第二部分(-/+ buffers/cache):
(-buffers/cache) used內(nèi)存數(shù):286M (指的第一部分Mem行中的used – buffers – cached)
(+buffers/cache) free內(nèi)存數(shù): 715M (指的第一部分Mem行中的free + buffers + cached)
 
可見-buffers/cache反映的是被程序?qū)崒嵲谠诔缘舻膬?nèi)存,而+buffers/cache反映的是可以挪用的內(nèi)存總數(shù).
 
第三部分是指交換分區(qū)

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

# sar命令在這里可以查看網(wǎng)絡設備的吞吐率卸伞。在排查性能問題時抹镊,可以通過網(wǎng)絡設備的吞吐量,判斷網(wǎng)絡設備是否已經(jīng)飽和
sar -n DEV 1
 
#
# sar命令在這里用于查看TCP連接狀態(tài)荤傲,其中包括:
# active/s:每秒本地發(fā)起的TCP連接數(shù)垮耳,既通過connect調(diào)用創(chuàng)建的TCP連接;
# passive/s:每秒遠程發(fā)起的TCP連接數(shù)遂黍,即通過accept調(diào)用創(chuàng)建的TCP連接终佛;
# retrans/s:每秒TCP重傳數(shù)量;
# TCP連接數(shù)可以用來判斷性能問題是否由于建立了過多的連接妓湘,進一步可以判斷是主動發(fā)起的連接查蓉,還是被動接受的連接。TCP重傳可能是因為網(wǎng)絡環(huán)境惡劣榜贴,或者服務器壓力過大導致丟包
sar -n TCP,ETCP 1

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

# 2表示每2秒采集一次狀態(tài)信息, 1表示只采集一次(忽略既是一直采集)
vmstat 2 1
 
eg:
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 0 3499840 315836 3819660 0 0 0 1 2 0 0 0 100 0
0 0 0 3499584 315836 3819660 0 0 0 0 88 158 0 0 100 0
0 0 0 3499708 315836 3819660 0 0 0 2 86 162 0 0 100 0
0 0 0 3499708 315836 3819660 0 0 0 10 81 151 0 0 100 0
1 0 0 3499732 315836 3819660 0 0 0 2 83 154 0 0 100 0
  • r 表示運行隊列(就是說多少個進程真的分配到CPU),我測試的服務器目前CPU比較空閑,沒什么程序在跑唬党,當這個值超過了CPU數(shù)目鹃共,就會出現(xiàn)CPU瓶頸了。這個也和top的負載有關(guān)系驶拱,一般負載超過了3就比較高霜浴,超過了5就高,超過了10就不正常了蓝纲,服務器的狀態(tài)很危險阴孟。top的負載類似每秒的運行隊列。如果運行隊列過大税迷,表示你的CPU很繁忙永丝,一般會造成CPU使用率很高。
  • b 表示阻塞的進程,這個不多說箭养,進程阻塞慕嚷,大家懂的。
  • swpd 虛擬內(nèi)存已使用的大小毕泌,如果大于0喝检,表示你的機器物理內(nèi)存不足了,如果不是程序內(nèi)存泄露的原因撼泛,那么你該升級內(nèi)存了或者把耗內(nèi)存的任務遷移到其他機器挠说。
  • free 空閑的物理內(nèi)存的大小愿题,我的機器內(nèi)存總共8G损俭,剩余3415M抠忘。
  • buff Linux/Unix系統(tǒng)是用來存儲崎脉,目錄里面有什么內(nèi)容,權(quán)限等的緩存灶体,我本機大概占用300多M
  • cache cache直接用來記憶我們打開的文件,給文件做緩沖阅签,我本機大概占用300多M(這里是Linux/Unix的聰明之處政钟,把空閑的物理內(nèi)存的一部分拿來做文件和目錄的緩存,是為了提高 程序執(zhí)行的性能,當程序使用內(nèi)存時养交,buffer/cached會很快地被使用精算。)
  • si 每秒從磁盤讀入虛擬內(nèi)存的大小,如果這個值大于0碎连,表示物理內(nèi)存不夠用或者內(nèi)存泄露了灰羽,要查找耗內(nèi)存進程解決掉。我的機器內(nèi)存充裕鱼辙,一切正常廉嚼。
  • so 每秒虛擬內(nèi)存寫入磁盤的大小,如果這個值大于0倒戏,同上怠噪。
  • bi 塊設備每秒接收的塊數(shù)量,這里的塊設備是指系統(tǒng)上所有的磁盤和其他塊設備峭梳,默認塊大小是1024byte舰绘,我本機上沒什么IO操作,所以一直是0葱椭,但是我曾在處理拷貝大量數(shù)據(jù)(2-3T)的機器上看過可以達到140000/s捂寿,磁盤寫入速度差不多140M每秒
  • bo 塊設備每秒發(fā)送的塊數(shù)量,例如我們讀取文件孵运,bo就要大于0秦陋。bi和bo一般都要接近0,不然就是IO過于頻繁治笨,需要調(diào)整驳概。
  • in 每秒CPU的中斷次數(shù),包括時間中斷
  • cs 每秒上下文切換次數(shù)旷赖,例如我們調(diào)用系統(tǒng)函數(shù)顺又,就要進行上下文切換,線程的切換等孵,也要進程上下文切換稚照,這個值要越小越好,太大了俯萌,要考慮調(diào)低線程或者進程的數(shù)目,例如在apache和nginx這種web服務器中果录,我們一般做性能測試時會進行幾千并發(fā)甚至幾萬并發(fā)的測試,選擇web服務器的進程可以由進程或者線程的峰值一直下調(diào)咐熙,壓測弱恒,直到cs到一個比較小的值,這個進程和線程數(shù)就是比較合適的值了棋恼。系統(tǒng)調(diào)用也是返弹,每次調(diào)用系統(tǒng)函數(shù)锈玉,我們的代碼就會進入內(nèi)核空間,導致上下文切換琉苇,這個是很耗資源嘲玫,也要盡量避免頻繁調(diào)用系統(tǒng)函數(shù)悦施。上下文切換次數(shù)過多表示你的CPU大部分浪費在上下文切換并扇,導致CPU干正經(jīng)事的時間少了,CPU沒有充分利用抡诞,是不可取的穷蛹。
  • us 用戶CPU時間,我曾經(jīng)在一個做加密解密很頻繁的服務器上昼汗,可以看到us接近100,r運行隊列達到80(機器在做壓力測試肴熏,性能表現(xiàn)不佳)。
  • sy 系統(tǒng)CPU時間顷窒,如果太高蛙吏,表示系統(tǒng)調(diào)用時間長,例如是IO操作頻繁鞋吉。
  • id 空閑 CPU時間鸦做,一般來說,id + us + sy = 100,一般我認為id是空閑CPU使用率谓着,us是用戶CPU使用率,sy是系統(tǒng)CPU使用率赊锚。
  • wt 等待IO CPU時間。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末舷蒲,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子牲平,更是在濱河造成了極大的恐慌,老刑警劉巖欠拾,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異藐窄,居然都是意外死亡,警方通過查閱死者的電腦和手機荆忍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門撤缴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人屈呕,你說我怎么就攤上這事』⒄#” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵镶摘,是天一觀的道長嗽桩。 經(jīng)常有香客問我,道長凄敢,這世上最難降的妖魔是什么碌冶? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮涝缝,結(jié)果婚禮上扑庞,老公的妹妹穿的比我還像新娘。我一直安慰自己拒逮,他們只是感情好罐氨,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著消恍,像睡著了一般岂昭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上狠怨,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天约啊,我揣著相機與錄音,去河邊找鬼佣赖。 笑死恰矩,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的憎蛤。 我是一名探鬼主播外傅,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼俩檬!你這毒婦竟也來了萎胰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤棚辽,失蹤者是張志新(化名)和其女友劉穎技竟,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體屈藐,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡榔组,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年熙尉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片搓扯。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖铅歼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情谭贪,我是刑警寧澤锦担,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布洞渔,位于F島的核電站磁椒,受9級特大地震影響玫芦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜医增,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一叶骨、第九天 我趴在偏房一處隱蔽的房頂上張望祈匙。 院中可真熱鬧,春花似錦跪帝、人聲如沸些阅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至聘裁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間献起,已是汗流浹背镣陕。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工呆抑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人厌殉。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓公罕,卻偏偏與公主長得像耀销,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子罐柳,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容