功能說(shuō)明:比較兩個(gè)文件是否有差異。
創(chuàng)新互聯(lián)從2013年創(chuàng)立,先為明水等服務(wù)建站,明水等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢(xún)服務(wù)。為明水企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
語(yǔ)法:cmp [-clsv][-i 字符數(shù)目][--help][第一個(gè)文件][第二個(gè)文件]
補(bǔ)充說(shuō)明:當(dāng)相互比較的兩個(gè)文件完全一樣時(shí),則該指令不會(huì)顯示任何信息。若發(fā)現(xiàn)有所差異,預(yù)設(shè)會(huì)標(biāo)示出第一個(gè)不同之處的字符和列數(shù)編號(hào)。若不指定任何文件名稱(chēng)或是所給予的文件名為”-”,則cmp指令會(huì)從標(biāo)準(zhǔn)輸入設(shè)備讀取數(shù)據(jù)。
參數(shù):
-c或–print-chars 除了標(biāo)明差異處的十進(jìn)制字碼之外,一并顯示該字符所對(duì)應(yīng)字符。
-i字符數(shù)目或–ignore-initial=字符數(shù)目 指定一個(gè)數(shù)目。
-l或–verbose 標(biāo)示出所有不一樣的地方。
-s或–quiet或–silent 不顯示錯(cuò)誤信息。
-v或–version 顯示版本信息。
–help 在線幫助。
實(shí)例:
1. 要確定兩個(gè)文件是否相同,請(qǐng)輸入:
cmp prog.o.bak prog.o
這比較 prog.o.bak 和 prog.o。如果文件相同,則不顯示消息。如果文件不同,則顯示第一個(gè)不同的位置;例如:
prog.o.bak prog.o differ: char 4, line 1
如果顯示消息 cmp: EOF on prog.o.bak,則 prog.o 的第一部分與 prog.o.bak 相同,但在 prog.o 中還有其他數(shù)據(jù)。
2. 要顯示不同字節(jié)的每個(gè)對(duì),請(qǐng)輸入:
cmp -l prog.o.bak prog.o
這比較文件,然后顯示字節(jié)數(shù)(使用十進(jìn)制格式)和每個(gè)不同的不同字節(jié)(使用八進(jìn)制格式)。例如,如果第五個(gè)字節(jié)在 prog.o.bak 中是八進(jìn)制 101,在 prog.o 中是 141,則 cmp
不是這樣的
if COMMAND的語(yǔ)義是, 如果COMMAND執(zhí)行成功, 而linux下面成功的標(biāo)志往往是0.
也就是說(shuō)COMMAND返回0的話, 就繼續(xù)執(zhí)行, 否則執(zhí)行else。
這一點(diǎn)和C、JAVA這些編程語(yǔ)言是相反的。
因?yàn)閏sh里面設(shè)置變量不能以$開(kāi)頭。正確寫(xiě)法是:
set path1 = `cmp count1 count`; echo $path1
當(dāng)你在IDC主機(jī)商購(gòu)買(mǎi)一臺(tái)系統(tǒng)為 Linux 服務(wù)器之后,我想大家第一時(shí)間就是對(duì)主機(jī)進(jìn)行一個(gè)性能分析,這里我跟大家分享幾個(gè)命令,能讓大家在一分鐘以?xún)?nèi)對(duì)自己的性能有一個(gè)大致的鳥(niǎo)解?
uptime
dmesg | tail
vmstat 1
mpstat -P ALL 1
pidstat 1
iostat -xz 1
free -m
sar -n DEV 1
sar -n TCP,ETCP 1
top
這10個(gè)命令到底是什么意思,我為大家一一解釋一下:
1.uptime
# uptime
03:16:26 up 21:31, 1 user, load average: 10.02, 06.43, 09.02
在上面的例子中,平均負(fù)載顯示是在不斷增加的,1 分鐘的值是 10,相比 15 分鐘的值 09 來(lái)說(shuō)是增加了。這個(gè)數(shù)字這么大就意味著有事情發(fā)生了.
2. dmesg | tail
# dmesg | tail
[? 14.102501] ISO 9660 Extensions: RRIP_1991A
[? 15.900216] ISO 9660 Extensions: Microsoft Joliet Level 3
[? 15.900234] ISO 9660 Extensions: RRIP_1991A
[? 17.030540] EXT4-fs (vda1): resizing filesystem from 5242619 to 13106939 blocks
[? 17.151434] random: crng init done
[? 17.151436] random: 7 urandom warning(s) missed due to ratelimiting
[? 18.314268] EXT4-fs (vda1): resized filesystem to 13106939
[? 20.394666] new mount options do not match the existing superblock, will be ignored
[? 38.405804] ISO 9660 Extensions: Microsoft Joliet Level 3
[? 38.407599] ISO 9660 Extensions: RRIP_1991A
這里展示的是最近 10 條系統(tǒng)消息日志,如果系統(tǒng)消息沒(méi)有就不會(huì)展示。主要是看由于性能問(wèn)題導(dǎo)致的錯(cuò)誤。
3. vmstat 1
# vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r? b? swpd? free? buff? cache? si? so? ? bi? ? bo? in? cs us sy id wa st
1? 0? ? ? 0 324644 141184 1270628? ? 0? ? 0? ? 10? ? 40? 207? 431? 1? 1 99? 0? 0
0? 0? ? ? 0 324388 141184 1270628? ? 0? ? 0? ? 0? ? 0? 130? 280? 1? 1 98? 0? 0
0? 0? ? ? 0 324388 141184 1270628? ? 0? ? 0? ? 0? ? 0? 89? 169? 0? 0 100? 0? 0
0? 0? ? ? 0 324420 141184 1270628? ? 0? ? 0? ? 0? ? 0? 118? 225? 1? 0 99? 0? 0
0? 0? ? ? 0 324420 141184 1270628? ? 0? ? 0? ? 0? ? 32? 125? 254? 0? 0 99? 1? 0
1? 1? ? ? 0 324420 141184 1270628? ? 0? ? 0? ? 0? ? 68? 96? 171? 0? 0 96? 4? 0
0? 0? ? ? 0 324452 141184 1270628? ? 0? ? 0? ? 0? 184? 127? 166? 0? 1 96? 3? 0
^C
r: CPU 上的等待運(yùn)行的可運(yùn)行進(jìn)程數(shù)。這個(gè)指標(biāo)提供了判斷 CPU 飽和度的數(shù)據(jù),因?yàn)樗话?I/O 等待的進(jìn)程??山忉尀椋骸皉” 的值比 CPU 數(shù)大的時(shí)候就是飽和的。
free:空閑內(nèi)存,單位是 k。如果這個(gè)數(shù)比較大,就說(shuō)明你還有充足的空閑內(nèi)存?!癴ree -m” 和下面第 7 個(gè)命令,可以更詳細(xì)的分析空閑內(nèi)存的狀態(tài)。
si,so:交換進(jìn)來(lái)和交換出去的數(shù)據(jù)量,如果這兩個(gè)值為非 0 值,那么就說(shuō)明沒(méi)有內(nèi)存了。
us,sy,id,wa,st:這些是 CPU 時(shí)間的分解,是所有 CPU 的平均值。它們是用戶(hù)時(shí)間,系統(tǒng)時(shí)間(內(nèi)核),空閑,等待 I/O 時(shí)間,和被偷的時(shí)間(這里主要指其它的客戶(hù),或者使用 Xen,這些客戶(hù)有自己獨(dú)立的操作域)。
4. mpstat -P ALL 1
# mpstat -P ALL 1
Linux 4.15.0-88-generic (VM-0-17-ubuntu) 06/15/2020 _x86_64_ (1 CPU)
03:33:26 AM? CPU? ? %usr? %nice? ? %sys %iowait? ? %irq? %soft? %steal? %guest? %gnice? %idle
03:33:27 AM? all? ? 0.00? ? 0.00? ? 0.00? ? 1.00? ? 0.00? ? 0.00? ? 0.00? ? 0.00? ? 0.00? 99.00
03:33:27 AM? ? 0? ? 0.00? ? 0.00? ? 0.00? ? 1.00? ? 0.00? ? 0.00? ? 0.00? ? 0.00? ? 0.00? 99.00
這個(gè)命令打印各個(gè) CPU 的時(shí)間統(tǒng)計(jì),可以看出整體 CPU 的使用是不是均衡的。由于我使用的是1H2G主機(jī)看不出區(qū)別!
5. pidstat 1
# pidstat 1
Linux 4.15.0-88-generic (VM-0-17-ubuntu) 06/15/2020 _x86_64_ (1 CPU)
03:34:47 AM? UID? ? ? PID? ? %usr %system? %guest? %wait? ? %CPU? CPU? Command
03:34:48 AM? ? 0? ? ? 1120? ? 1.00? ? 0.00? ? 0.00? ? 0.00? ? 1.00? ? 0? sshd
pidstat 命令為每個(gè) CPU 統(tǒng)計(jì)信息功能。由于我使用的是1H2G主機(jī)看不出區(qū)別!
6. iostat -xz 1
# iostat -xz 1
Linux 4.15.0-88-generic (VM-0-17-ubuntu) 06/15/2020 _x86_64_ (1 CPU)
avg-cpu:? %user? %nice %system %iowait? %steal? %idle
? ? ? 0.67? ? 0.01? ? 0.52? ? 0.29? ? 0.00? 98.52
Device? ? ? ? ? ? r/s? ? w/s? ? rkB/s? ? wkB/s? rrqm/s? wrqm/s? %rrqm? %wrqm r_await w_await aqu-sz rareq-sz wareq-sz? svctm? %util
loop0? ? ? ? ? ? 0.00? ? 0.00? ? ? 0.00? ? ? 0.00? ? 0.00? ? 0.00? 0.00? 0.00? ? 0.22? ? 0.00? 0.00? ? 9.64? ? 0.00? 0.00? 0.00
scd0? ? ? ? ? ? 0.02? ? 0.00? ? ? 0.48? ? ? 0.00? ? 0.00? ? 0.00? 0.00? 0.00? ? 0.21? ? 0.00? 0.00? ? 27.72? ? 0.00? 0.19? 0.00
vda? ? ? ? ? ? ? 0.64? ? 4.07? ? ? 9.15? ? 40.59? ? 0.00? ? 1.99? 0.00? 32.85? ? 3.58? ? 2.31? 0.01? ? 14.31? ? 9.96? 0.24? 0.11
avg-cpu:? %user? %nice %system %iowait? %steal? %idle
? ? ? 0.00? ? 0.00? ? 0.00? ? 0.00? ? 0.00? 100.00
Device? ? ? ? ? ? r/s? ? w/s? ? rkB/s? ? wkB/s? rrqm/s? wrqm/s? %rrqm? %wrqm r_await w_await aqu-sz rareq-sz wareq-sz? svctm? %util
r/s, w/s, rkB/s, wkB/s:這些表示設(shè)備上每秒鐘的讀寫(xiě)次數(shù)和讀寫(xiě)的字節(jié)數(shù)(單位是k字節(jié))。這些可以看出設(shè)備的負(fù)載情況。性能問(wèn)題可能就是簡(jiǎn)單的因?yàn)榇罅康奈募虞d請(qǐng)求。
await:I/O 等待的平均時(shí)間(單位是毫秒)。這是應(yīng)用程序所等待的時(shí)間,包含了等待隊(duì)列中的時(shí)間和被調(diào)度服務(wù)的時(shí)間。過(guò)大的平均等待時(shí)間就預(yù)示著設(shè)備超負(fù)荷了或者說(shuō)設(shè)備有問(wèn)題了。
avgqu-sz:設(shè)備上請(qǐng)求的平均數(shù)。數(shù)值大于 1 可能表示設(shè)備飽和了(雖然設(shè)備通常都是可以支持并行請(qǐng)求的,特別是在背后掛了多個(gè)磁盤(pán)的虛擬設(shè)備)。
%util:設(shè)備利用率。是使用率的百分?jǐn)?shù),展示每秒鐘設(shè)備工作的時(shí)間。這個(gè)數(shù)值大于 60% 則會(huì)導(dǎo)致性能很低(可以在 await 中看),當(dāng)然這也取決于設(shè)備特點(diǎn)。這個(gè)數(shù)值接近 100% 則表示設(shè)備飽和了。
7. free -m/h
ubuntu@VM-0-17-ubuntu:~# free -m
? ? ? ? ? total? ? ? ? used? ? ? ? free? ? ? shared? buff/cache? available
Mem:? ? ? ? ? 1833? ? ? ? 137? ? ? ? 313? ? ? ? ? 5? ? ? ? 1381? ? ? ? 1506
Swap:? ? ? ? ? ? 0? ? ? ? ? 0? ? ? ? ? 0
ubuntu@VM-0-17-ubuntu:~$ free -h
? ? ? ? ? total? ? ? ? used? ? ? ? free? ? ? shared? buff/cache? available
Mem:? ? ? ? ? 1.8G? ? ? ? 139M? ? ? ? 311M? ? ? ? 5.8M? ? ? ? 1.3G? ? ? ? 1.5G
Swap:? ? ? ? ? ? 0B? ? ? ? ? 0B? ? ? ? ? 0B
這個(gè)命令我相信大家都熟悉,buffers:用于塊設(shè)備 I/O 緩沖的緩存,cached:用于文件系統(tǒng)的頁(yè)緩存。
8. sar -n DEV 1
ubuntu@VM-0-17-ubuntu:~# sar -n DEV 1
Linux 4.15.0-88-generic (VM-0-17-ubuntu) 06/15/2020 _x86_64_ (1 CPU)
03:43:35 AM? ? IFACE? rxpck/s? txpck/s? ? rxkB/s? ? txkB/s? rxcmp/s? txcmp/s? rxmcst/s? %ifutil
03:43:36 AM? ? ? eth0? ? 11.00? ? 10.00? ? ? 0.79? ? ? 1.06? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00
03:43:36 AM? ? ? ? lo? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00
使用這個(gè)工具是可以檢測(cè)網(wǎng)絡(luò)接口的吞吐:rxkB/s 和 txkB/s,作為收發(fā)數(shù)據(jù)負(fù)載的度量,也是檢測(cè)是否達(dá)到收發(fā)極限。在上面這個(gè)例子中,eth0 接收數(shù)據(jù)達(dá)到 0.79 kb 字節(jié)/秒,發(fā)送數(shù)據(jù)達(dá)到1.06 字節(jié)/秒。
9. sar -n TCP,ETCP 1
ubuntu@VM-0-17-ubuntu:~# sar -n TCP,ETCP 1
Linux 4.15.0-88-generic (VM-0-17-ubuntu) 06/15/2020 _x86_64_ (1 CPU)
03:49:56 AM? active/s passive/s? ? iseg/s? ? oseg/s
03:49:57 AM? ? ? 0.00? ? ? 0.00? ? ? 5.05? ? ? 3.03
03:49:56 AM? atmptf/s? estres/s retrans/s isegerr/s? orsts/s
03:49:57 AM? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00
這是對(duì) TCP 關(guān)鍵指標(biāo)的統(tǒng)計(jì),它包含了以下內(nèi)容:
active/s:每秒本地發(fā)起的 TCP 連接數(shù)(例如通過(guò) connect() 發(fā)起的連接)。
passive/s:每秒遠(yuǎn)程發(fā)起的連接數(shù)(例如通過(guò) accept() 接受的連接)。
retrans/s:每秒TCP重傳數(shù)。
10. top
ubuntu@VM-0-17-ubuntu:~# top
top - 03:53:20 up 1 day,? 1:41,? 1 user,? load average: 0.01, 0.04, 0.00
Tasks:? 89 total,? 1 running,? 52 sleeping,? 0 stopped,? 0 zombie
%Cpu(s):? 0.3 us,? 0.3 sy,? 0.0 ni, 99.3 id,? 0.0 wa,? 0.0 hi,? 0.0 si,? 0.0 st
KiB Mem :? 1877076 total,? 317436 free,? 143420 used,? 1416220 buff/cache
KiB Swap:? ? ? ? 0 total,? ? ? ? 0 free,? ? ? ? 0 used.? 1540856 avail Mem
PID USER? ? ? PR? NI? ? VIRT? ? RES? ? SHR S %CPU %MEM? ? TIME+ COMMAND? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
3730 root? ? ? 20? 0? 105688? 6812? 5840 S? 0.3? 0.4? 0:00.01 sshd? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
7546 root? ? ? 20? 0? 644608? 14924? 6776 S? 0.3? 0.8? 2:48.99 YDService? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
1 root? ? ? 20? 0? 159892? 9260? 6796 S? 0.0? 0.5? 0:06.45 systemd? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
2 root? ? ? 20? 0? ? ? 0? ? ? 0? ? ? 0 S? 0.0? 0.0? 0:00.00 kthreadd? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
4 root? ? ? 0 -20? ? ? 0? ? ? 0? ? ? 0 I? 0.0? 0.0? 0:00.00 kworker/0:0H? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
6 root? ? ? 0 -20? ? ? 0? ? ? 0? ? ? 0 I? 0.0? 0.0? 0:00.00 mm_percpu_wq? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
7 root? ? ? 20? 0? ? ? 0? ? ? 0? ? ? 0 S? 0.0? 0.0? 0:04.29 ksoftirqd/0? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
8 root? ? ? 20? 0? ? ? 0? ? ? 0? ? ? 0 I? 0.0? 0.0? 0:08.85 rcu_sched? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
9 root? ? ? 20? 0? ? ? 0? ? ? 0? ? ? 0 I? 0.0? 0.0? 0:00.00 rcu_bh? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
10 root? ? ? rt? 0? ? ? 0? ? ? 0? ? ? 0 S? 0.0? 0.0? 0:00.00 migration/0? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
11 root? ? ? rt? 0? ? ? 0? ? ? 0? ? ? 0 S? 0.0? 0.0? 0:00.16 watchdog/0? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
12 root? ? ? 20? 0? ? ? 0? ? ? 0? ? ? 0 S? 0.0? 0.0? 0:00.00 cpuhp/0? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
13 root? ? ? 20? 0? ? ? 0? ? ? 0? ? ? 0 S? 0.0? 0.0? 0:00.00 kdevtmpfs? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
top 命令包含了很多我們前面提到的指標(biāo)。這個(gè)命令可以很容易看出指標(biāo)的變化表示負(fù)載的變化,這個(gè)看起來(lái)和前面的命令有很大不同。
top 的一個(gè)缺陷也比較明顯,很難看出變化趨勢(shì),其它像 vmstat 和 pidstat 這樣的工具就會(huì)很清晰,它們是以滾動(dòng)的方式輸出統(tǒng)計(jì)信息。所以如果你在看到有問(wèn)題的信息時(shí)沒(méi)有及時(shí)的暫停下來(lái)(Ctrl-S 是暫停, Ctrl-Q 是繼續(xù)),那么這些有用的信息就會(huì)被清屏。
文章原文: ?(來(lái)都來(lái)了,就去我博客看下?。。?/p>
分享標(biāo)題:cmp命令linux cmp命令怎么用
標(biāo)題URL:http://weahome.cn/article/dohdphc.html