在做Linux系統(tǒng)優(yōu)化的時(shí)候,物理內(nèi)存是其中最重要的一方面。自然的,Linux也提供了非常多的方法來監(jiān)控寶貴的內(nèi)存資源的使用情況。下面的清單詳細(xì)的列出了Linux系統(tǒng)下通過視圖工具或命令行來查看內(nèi)存使用情況的各種方法。
創(chuàng)新互聯(lián)公司為企業(yè)提供:品牌網(wǎng)站設(shè)計(jì)、網(wǎng)絡(luò)營銷策劃、成都小程序開發(fā)、營銷型網(wǎng)站建設(shè)和網(wǎng)站運(yùn)營托管,一站式網(wǎng)絡(luò)營銷整體服務(wù)。實(shí)現(xiàn)不斷獲取潛在客戶之核心目標(biāo),建立了企業(yè)專屬的“成都全網(wǎng)營銷”,就用不著再為了獲取潛在客戶而苦惱,相反,客戶會(huì)主動(dòng)找您,生意就找上門來了!
1./proc/meminfo
查看RAM使用情況最簡單的方法是通過 /proc/meminfo。這個(gè)動(dòng)態(tài)更新的虛擬文件實(shí)際上是許多其他內(nèi)存相關(guān)工具(如:free / ps / top)等的組合顯示。/proc/meminfo列出了所有你想了解的內(nèi)存的使用情況。進(jìn)程的內(nèi)存使用信息也可以通過 /proc//statm 和 /proc//status 來查看。
$ cat /proc/meminfo
2.atop
atop命令是一個(gè)終端環(huán)境的監(jiān)控命令。它顯示的是各種系統(tǒng)資源(CPU, memory, network, I/O, kernel)的綜合,并且在高負(fù)載的情況下進(jìn)行了彩色標(biāo)注。
$ sudo atop
3.free
free命令是一個(gè)快速查看內(nèi)存使用情況的方法,它是對(duì) /proc/meminfo 收集到的信息的一個(gè)概述。
$ free -h
4.GNOME System Monitor
GNOME System Monitor 是一個(gè)顯示最近一段時(shí)間內(nèi)的CPU、內(nèi)存、交換區(qū)及網(wǎng)絡(luò)的使用情況的視圖工具。它還提供了一種查看CPU及內(nèi)存使用情況的方法。
$ gnome-system-monitor
5.htop
htop命令顯示了每個(gè)進(jìn)程的內(nèi)存實(shí)時(shí)使用率。它提供了所有進(jìn)程的常駐內(nèi)存大小、程序總內(nèi)存大小、共享庫大小等的報(bào)告。列表可以水平及垂直滾動(dòng)。
$ htop
6.KDE System Monitor
功能同 4 中介紹的GENOME版本。
$ ksysguard
7.memstat
memstat是一個(gè)有效識(shí)別 executable(s), process(es) and shared libraries使用虛擬內(nèi)存情況的命令。給定一個(gè)進(jìn)程ID,memstat可以列出這個(gè)進(jìn)程相關(guān)的可執(zhí)行文件、數(shù)據(jù)和共享庫。
$ memstat -p
8.nmon
nmon是一個(gè)基于ncurses的系統(tǒng)基準(zhǔn)測試工具,它可以監(jiān)控CPU、內(nèi)存、I/O、文件系統(tǒng)及網(wǎng)絡(luò)資源等的互動(dòng)模式。對(duì)于內(nèi)存的使用,它可以實(shí)時(shí)的顯示 總/剩余內(nèi)存、交換空間等信息。
$ nmon
9.ps
ps命令可以實(shí)時(shí)的顯示各個(gè)進(jìn)程的內(nèi)存使用情況。Reported memory usage information includes %MEM (percent of physical memory used), VSZ (total amount of virtual memory used), and RSS (total amount of physical memory used)。你可以使用 “–sort”選項(xiàng)對(duì)進(jìn)程進(jìn)行排序,例如按RSS進(jìn)行排序:
$ ps aux –sort -rss
10.smem
smem命令允許你統(tǒng)計(jì)基于/proc信息的不同進(jìn)程和用戶的內(nèi)存使用情況。內(nèi)存使用情況的分析可以導(dǎo)出圖表(如條形圖和餅圖)。
$ sudo smem –pie name -c “pss”
11.top
top命令提供了實(shí)時(shí)的運(yùn)行中的程序的資源使用統(tǒng)計(jì)。你可以根據(jù)內(nèi)存的使用和大小來進(jìn)行排序。
$ top
12.vmstat
vmstat命令顯示實(shí)時(shí)的和平均的統(tǒng)計(jì),覆蓋CPU、內(nèi)存、I/O等內(nèi)容。例如內(nèi)存情況,不僅顯示物理內(nèi)存,也統(tǒng)計(jì)虛擬內(nèi)存。
$ vmstat -s
1. 前言
linux之間傳文件命令用什么命令?本文介紹一種最常用,也是功能強(qiáng)大的文件同步和傳輸工具Rsync,本文提供詳細(xì)傻瓜式教程。
在本教程中,我們將通過實(shí)際使用案例和最常見的rsync選項(xiàng)的詳細(xì)說明向您展示如何使用rsync。
本教程適用于Ubuntu系統(tǒng)、Linux Mint系統(tǒng)、Deepin深度Linux系統(tǒng)、Fedora系統(tǒng)、Debian系統(tǒng)、Elementary OS系統(tǒng)、OpenSUSE系統(tǒng)、CentOS系統(tǒng)、RHEL系統(tǒng),Arch Linux等等GNU Linux發(fā)行版。
2. `rsync`介紹
Rsync是一個(gè)快速且通用的命令行實(shí)用程序,它可以使Windows與Linux之間,Linux與Linux之間傳文件或者Linux與MAC OS之間傳文件。或從Linux本地文件系統(tǒng)到遠(yuǎn)程Rsync守護(hù)進(jìn)程之間同步文件和文件夾。它只傳輸源和目標(biāo)之間的差異,從而提供快速增量文件傳輸。
Rsync可以用于鏡像數(shù)據(jù)、增量備份、在Linux系統(tǒng)之間傳文件,也可以用于Linux與Windows之間傳輸文件,還可以替代日常使用的scp、sftp和cp命令,他們一般也用于Linux之間傳文件或者Linux與MAC OS之間傳文件。
3. 如何安裝`Rsync`
rsync實(shí)用程序預(yù)裝在大多數(shù)Linux發(fā)行版和macOS上。你可以輸入以下命令,檢查你的系統(tǒng)是否已安裝:
查看Rsync版本的輸出結(jié)果:
如果您的系統(tǒng)上沒有安裝rsync,您可以使用發(fā)行版的包管理器輕松地安裝它。
在Ubuntu 或者Debian體系的Linux系統(tǒng)上安裝rsync
在CentOS 或者Fedora系統(tǒng)上安裝rsync
4. Rsync命令使用語法
在討論如何使用rsync命令之前,讓我們先回顧一下基本語法。
rsync實(shí)用程序表達(dá)式采用以下形式:
rsync提供了許多選項(xiàng)來控制其行為和功能。最廣泛使用的選項(xiàng)是:
-a, --archive, 歸檔模式, 相當(dāng)于 -rlptgoD。這個(gè)選項(xiàng)告訴rsync遞歸地同步目錄、傳輸特殊設(shè)備和塊設(shè)備、保存符號(hào)鏈接、修改時(shí)間、組、所有權(quán)和權(quán)限。
-z, --compress. 這個(gè)選項(xiàng)將強(qiáng)制rsync在傳送文件到目標(biāo)計(jì)算機(jī)時(shí)壓縮數(shù)據(jù)。僅當(dāng)?shù)竭h(yuǎn)程計(jì)算機(jī)的連接很慢時(shí)才使用此選項(xiàng)。
-P, 相當(dāng)于--partial --progress。使用此選項(xiàng)時(shí),rsync將在傳輸期間顯示一個(gè)進(jìn)度條,并保留部分傳輸?shù)奈募?。?dāng)通過緩慢或不穩(wěn)定的網(wǎng)絡(luò)連接傳輸大文件時(shí),它非常有用。
--delete. 使用此選項(xiàng)時(shí),rsync將從目標(biāo)位置刪除無關(guān)文件。它對(duì)鏡像很有用。
-q, --quiet。如果希望禁用非錯(cuò)誤消息,請(qǐng)使用此選項(xiàng)。
-e. 此選項(xiàng)允許您選擇不同的遠(yuǎn)程shell。默認(rèn)情況下,rsync被配置為使用ssh。
5. 使用Rsync最基本的功能使Linux之間傳輸文件
要將一個(gè)文件從一個(gè)本地位置復(fù)制到另一個(gè)本地位置,可以運(yùn)行以下命令:
運(yùn)行該命令的用戶必須具有目標(biāo)位置上的讀權(quán)限和目標(biāo)上的寫權(quán)限。
從目標(biāo)位置省略文件名將復(fù)制具有當(dāng)前名稱的文件。如果您想將文件保存在另一個(gè)名稱下,請(qǐng)?jiān)谀繕?biāo)部件上指定新名稱:
比如復(fù)制filename.zip到目標(biāo)目錄并重新把文件名修改為newfilename.zip
在下面的例子中,我們正在創(chuàng)建一個(gè)本地備份我們的網(wǎng)站文件:
如果目標(biāo)目錄不存在,rsync將創(chuàng)建它。
值得一提的是,rsync對(duì)后面帶有斜杠/的源目錄提供了不同的處理。如果在源目錄上添加一個(gè)尾隨斜杠,它將只將目錄的內(nèi)容復(fù)制到目標(biāo)目錄。當(dāng)后面的斜杠被省略時(shí),rsync將把源目錄復(fù)制到目標(biāo)目錄中。
6. 如何使用Rsync與遠(yuǎn)程服務(wù)器同步文件(包括上傳下載)
當(dāng)使用rsync進(jìn)行遠(yuǎn)程傳輸時(shí),必須同時(shí)安裝在源機(jī)器和目標(biāo)機(jī)器上。rsync的新版本被配置為使用SSH作為默認(rèn)遠(yuǎn)程shell。
在下面的例子中,我們將一個(gè)目錄從本地轉(zhuǎn)移到遠(yuǎn)程機(jī)器:
如果你需要配置2臺(tái)Linux之間免密碼登錄,請(qǐng)查看以下教程:
如果你想把數(shù)據(jù)從遠(yuǎn)程傳輸?shù)奖镜貦C(jī)器,你需要使用遠(yuǎn)程位置作為一個(gè)源:
如果遠(yuǎn)程主機(jī)上的SSH監(jiān)聽的端口不是默認(rèn)的22端口,那么可以使用-e選項(xiàng)指定端口:
比如遠(yuǎn)程服務(wù)器的SSH端口被修改為1234
當(dāng)傳輸大量數(shù)據(jù)時(shí),建議在屏幕會(huì)話中運(yùn)行rsync命令或使用-P選項(xiàng):
7. 使用Rsync傳送或同步文件時(shí),排除某些文件或者目錄
當(dāng)使用Rsync排除文件或目錄時(shí),需要使用它們到源位置的相對(duì)路徑。
有兩個(gè)選項(xiàng)可以排除文件和目錄。第一個(gè)選項(xiàng)是使用--exclude參數(shù),并在命令行中指定要排除的文件和目錄。
在下面的例子中,我們排除了位于src_directory中的123和abc目錄:
第二個(gè)選項(xiàng)是使用--exclude-from參數(shù),并指定要在文件中排除的文件和目錄。
vi exclude-file.txt
加入需要排除的文件,比如文件file1.c,目錄zcwyou:
8. 總結(jié)
在本教程中,您學(xué)習(xí)了如何使用Rsync在多臺(tái)Linux之間傳輸、復(fù)制或同步文件和目錄。在Rsync用戶手冊(cè)頁面上有更多關(guān)于Rsync的內(nèi)容。
如果你有任何問題,請(qǐng)留下你的意見。
不同版本的Linux命令數(shù)量不一樣,這里筆者把它們中比較重要的和使用頻率最多的命令,按照它們?cè)谙到y(tǒng)中的作用分成幾個(gè)部分介紹給,通過這些基礎(chǔ)命令的學(xué)習(xí)可以進(jìn)一步理解Linux系統(tǒng):
安裝和登錄命令:login、shutdown、halt、reboot、mount、umount、chsh。
文件處理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln。
系統(tǒng)管理相關(guān)命令:df、top、free、quota、at、lp、adduser、groupaddkill、crontab、tar、unzip、gunzip、last。
網(wǎng)絡(luò)操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rloginrcp、finger、mail、nslookup。
學(xué)習(xí)linux注意事項(xiàng)
1、Linux嚴(yán)格區(qū)分大小寫。
2、Linux所有的存儲(chǔ)設(shè)備都必須掛載之后用戶才能使用,包括硬盤、U盤和光盤。
3、Windows下的程序不能直接在Linux中安裝和運(yùn)行。
Linux運(yùn)維人員必會(huì)的120個(gè)命令
跟老男孩學(xué)Linux運(yùn)維:核心系統(tǒng)命令實(shí)戰(zhàn)
前言
第1章 Linux命令行簡介 / 1
1.1Linux命令行概述 / 1
1.2在Linux命令行下查看命令幫助 / 4
1.3Linux shutdown reboot halt / 9
關(guān)機(jī):
shutdown -h now
halt
init 0
第2章 文件和目錄操作命令 / 13
2.1pwd:顯示當(dāng)前所在的位置 / 13
2.2cd:切換目錄 / 16
2.3tree:以樹形結(jié)構(gòu)顯示目錄下的內(nèi)容 / 18
2.4mkdir:創(chuàng)建目錄 / 22
2.5touch:創(chuàng)建空文件或改變文件的時(shí)間戳屬性 / 27
2.6ls:顯示目錄下的內(nèi)容及相關(guān)屬性信息 / 30
2.7cp:復(fù)制文件或目錄 / 39
2.8mv:移動(dòng)或重命名文件 / 42
2.9rm:刪除文件或目錄 / 45
2.10rmdir:刪除空目錄 / 48
2.11ln:硬鏈接與軟鏈接 / 49
2.12readlink:查看符號(hào)鏈接文件的內(nèi)容 / 54
2.13find:查找目錄下的文件 / 55
2.14xargs:將標(biāo)準(zhǔn)輸入轉(zhuǎn)換成命令行參數(shù) / 68
2.15rename:重命名文件 / 71
2.16basename:顯示文件名或目錄名 / 72
2.17dirname:顯示文件或目錄路徑 / 72
2.18chattr:改變文件的擴(kuò)展屬性 / 73
2.19lsattr:查看文件擴(kuò)展屬性 / 75
2.20file:顯示文件的類型 / 76
2.21md5sum:計(jì)算和校驗(yàn)文件的MD5值 / 77
2.22chown:改變文件或目錄的用戶和用戶組 / 80
2.23chmod:改變文件或目錄權(quán)限 / 81
2.24chgrp:更改文件用戶組 / 85
2.25umask:顯示或設(shè)置權(quán)限掩碼 / 86
2.26老男孩從新手成為技術(shù)大牛的心法 / 90
第3章 文件過濾及內(nèi)容編輯處理命令 / 91
3.1cat:合并文件或查看文件內(nèi)容 / 91
3.2tac:反向顯示文件內(nèi)容 / 103
3.3more:分頁顯示文件內(nèi)容 / 104
3.4less:分頁顯示文件內(nèi)容 / 107
3.5head:顯示文件內(nèi)容頭部 / 109
3.6tail:顯示文件內(nèi)容尾部 / 111
3.7tailf:跟蹤日志文件 / 114
3.8cut:從文本中提取一段文字并輸出 / 115
3.9split:分割文件 / 117
3.10paste:合并文件 / 118
3.11sort:文本排序 / 123
3.12join:按兩個(gè)文件的相同字段合并 / 127
3.13uniq:去除重復(fù)行 / 129
3.14wc:統(tǒng)計(jì)文件的行數(shù)、單詞數(shù)或字節(jié)數(shù) / 131
3.15iconv:轉(zhuǎn)換文件的編碼格式 / 133
3.16dos2unix:將DOS格式文件轉(zhuǎn)換成UNIX格式 / 134
3.17diff:比較兩個(gè)文件的不同 / 135
3.18vimdiff:可視化比較工具 / 138
3.19rev:反向輸出文件內(nèi)容 / 139
3.20tr:替換或刪除字符 / 140
3.21od:按不同進(jìn)制顯示文件 / 143
3.22tee:多重定向 / 145
3.23vi/vim:純文本編輯器 / 147
3.24老男孩逆襲思想:做Linux運(yùn)維的多個(gè)好處 / 152
第4章 文本處理三劍客 / 153
4.1grep:文本過濾工具 / 153
4.2sed:字符流編輯器 / 159
4.3awk基礎(chǔ)入門 / 165
第5章 Linux信息顯示與搜索文件命令 / 176
5.1uname:顯示系統(tǒng)信息 / 176
5.2hostname:顯示或設(shè)置系統(tǒng)的主機(jī)名 / 178
5.3dmesg:系統(tǒng)啟動(dòng)異常診斷 / 179
5.4stat:顯示文件或文件系統(tǒng)狀態(tài) / 181
5.5du:統(tǒng)計(jì)磁盤空間使用情況 / 183
5.6date:顯示與設(shè)置系統(tǒng)時(shí)間 / 186
5.7echo:顯示一行文本 / 190
5.8watch:監(jiān)視命令執(zhí)行情況 / 193
5.9which:顯示命令的全路徑 / 195
5.10whereis:顯示命令及其相關(guān)文件全路徑 / 196
5.11locate:快速定位文件路徑 / 197
5.12updatedb:更新mlocate數(shù)據(jù)庫 / 199
5.13老男孩逆襲思想:新手在工作中如何問問題不會(huì)被鄙視 / 200
第6章 文件備份與壓縮命令 / 201
6.1tar:打包備份 / 201
6.2gzip:壓縮或解壓文件 / 208
6.3zip:打包和壓縮文件 / 211
6.4unzip:解壓zip文件 / 212
6.5scp:遠(yuǎn)程文件復(fù)制 / 214
6.6rsync:文件同步工具 / 216
6.7老男孩逆襲思想:新手如何高效地提問 / 220
第7章 Linux用戶管理及用戶信息查詢命令 / 222
7.1 useradd:創(chuàng)建用戶 / 222
7.2usermod:修改用戶信息 / 227
7.3userdel:刪除用戶 / 229
7.4groupadd:創(chuàng)建新的用戶組 / 230
7.5groupdel:刪除用戶組 / 231
7.6passwd:修改用戶密碼 / 232
7.7chage:修改用戶密碼有效期 / 237
7.8chpasswd:批量更新用戶密碼 / 238
7.9su:切換用戶 / 240
7.10visudo:編輯sudoers文件 / 242
7.11sudo:以另一個(gè)用戶身份執(zhí)行命令 / 244
7.12id:顯示用戶與用戶組的信息 / 248
7.13w:顯示已登錄用戶信息 / 249
7.14who:顯示已登錄用戶信息 / 250
7.15users:顯示已登錄用戶 / 252
7.16whoami:顯示當(dāng)前登錄的用戶名 / 253
7.17last:顯示用戶登錄列表 / 253
7.18lastb:顯示用戶登錄失敗的記錄 / 254
7.19lastlog:顯示所有用戶的最近登錄記錄 / 255
第8章 Linux磁盤與文件系統(tǒng)管理命令 / 257
8.1fdisk:磁盤分區(qū)工具 / 257
8.2partprobe:更新內(nèi)核的硬盤分區(qū)表信息 / 265
8.3tune2fs:調(diào)整ext2/ext3/ext4文件系統(tǒng)參數(shù) / 266
8.4parted:磁盤分區(qū)工具 / 268
8.5mkfs:創(chuàng)建Linux文件系統(tǒng) / 272
8.6dumpe2fs:導(dǎo)出ext2/ext3/ext4文件系統(tǒng)信息 / 274
8.7resize2fs:調(diào)整ext2/ext3/ext4文件系統(tǒng)大小 / 275
8.8fsck:檢查并修復(fù)Linux文件系統(tǒng) / 278
8.9dd:轉(zhuǎn)換或復(fù)制文件 / 281
8.10mount:掛載文件系統(tǒng) / 284
8.11umount:卸載文件系統(tǒng) / 288
8.12df:報(bào)告文件系統(tǒng)磁盤空間的使用情況 / 289
8.13mkswap:創(chuàng)建交換分區(qū) / 293
8.14swapon:激活交換分區(qū) / 294
8.15swapoff:關(guān)閉交換分區(qū) / 295
8.16sync:刷新文件系統(tǒng)緩沖區(qū) / 296
第9章 Linux進(jìn)程管理命令 / 298
9.1ps:查看進(jìn)程 / 298
9.2pstree:顯示進(jìn)程狀態(tài)樹 / 305
9.3pgrep:查找匹配條件的進(jìn)程 / 306
9.4kill:終止進(jìn)程 / 307
9.5killall:通過進(jìn)程名終止進(jìn)程 / 310
9.6pkill:通過進(jìn)程名終止進(jìn)程 / 311
9.7top:實(shí)時(shí)顯示系統(tǒng)中各個(gè)進(jìn)程的資源占用狀況 / 313
9.8nice:調(diào)整程序運(yùn)行時(shí)的優(yōu)先級(jí) / 320
9.9renice:調(diào)整運(yùn)行中的進(jìn)程的優(yōu)先級(jí) / 323
9.10nohup:用戶退出系統(tǒng)進(jìn)程繼續(xù)工作 / 324
9.11strace:跟蹤進(jìn)程的系統(tǒng)調(diào)用 / 325
9.12ltrace:跟蹤進(jìn)程調(diào)用庫函數(shù) / 332
9.13runlevel:輸出當(dāng)前運(yùn)行級(jí)別 / 334
9.14init:初始化Linux進(jìn)程 / 335
9.15service:管理系統(tǒng)服務(wù) / 335
第10章 Linux網(wǎng)絡(luò)管理命令 / 338
10.1ifconfig:配置或顯示網(wǎng)絡(luò)接口信息 / 338
10.2ifup:激活網(wǎng)絡(luò)接口 / 343
ifup eth0
10.3ifdown:禁用網(wǎng)絡(luò)接口 / 343
ifdown eth0
service network restart(/etc/init.d/network restart) 激活整個(gè)網(wǎng)絡(luò),所有網(wǎng)卡。
10.4route:顯示或管理路由表 / 344
10.5arp:管理系統(tǒng)的arp緩存 / 350
10.6ip:網(wǎng)絡(luò)配置工具 / 351
10.7netstat:查看網(wǎng)絡(luò)狀態(tài) / 358
10.8ss:查看網(wǎng)絡(luò)狀態(tài) / 362
10.9ping:測試主機(jī)之間網(wǎng)絡(luò)的連通性 / 363
10.10traceroute:追蹤數(shù)據(jù)傳輸路由狀況 / 366
10.11arping:發(fā)送arp請(qǐng)求 / 367
10.12telnet:遠(yuǎn)程登錄主機(jī) / 369
10.13nc:多功能網(wǎng)絡(luò)工具 / 370
10.14ssh:安全地遠(yuǎn)程登錄主機(jī) / 373
10.15wget:命令行下載工具 / 376
10.16mailq:顯示郵件傳輸隊(duì)列 / 379
10.17mail:發(fā)送和接收郵件 / 381
10.18nslookup:域名查詢工具 / 386
10.19dig:域名查詢工具 / 389
10.20host:域名查詢工具 / 393
10.21nmap:網(wǎng)絡(luò)探測工具和安全/端口掃描器 / 394
10.22tcpdump:監(jiān)聽網(wǎng)絡(luò)流量 / 398
第11章 Linux系統(tǒng)管理命令 / 407
11.1lsof:查看進(jìn)程打開的文件 / 407
11.2uptime:顯示系統(tǒng)的運(yùn)行時(shí)間及負(fù)載 / 411
11.3free:查看系統(tǒng)內(nèi)存信息 / 411
11.4iftop:動(dòng)態(tài)顯示網(wǎng)絡(luò)接口流量信息 / 413
11.5vmstat:虛擬內(nèi)存統(tǒng)計(jì) / 415
11.6mpstat:CPU信息統(tǒng)計(jì) / 419
11.7iostat:I/O信息統(tǒng)計(jì) / 420
11.8iotop:動(dòng)態(tài)顯示磁盤I/O統(tǒng)計(jì)信息 / 423
11.9sar:收集系統(tǒng)信息 / 425
11.10chkconfig:管理開機(jī)服務(wù) / 430
11.11ntsysv:管理開機(jī)服務(wù) / 433
11.12 setup:系統(tǒng)管理工具 / 434
11.13ethtool:查詢網(wǎng)卡參數(shù) / 436
11.14mii-tool:管理網(wǎng)絡(luò)接口的狀態(tài) / 437
11.19rpm:RPM包管理器 / 443
11.20yum:自動(dòng)化RPM包管理工具 / 446
top命令
第12章 Linux系統(tǒng)常用內(nèi)置命令 / 450
12.1Linux內(nèi)置命令概述 / 450
12.2Linux內(nèi)置命令簡介 / 450
12.3Linux常用內(nèi)置命令實(shí)例 / 452
grep egrep區(qū)別
grep 默認(rèn)不支持?jǐn)U展 但可以通過-E 選擇來支持?jǐn)U展正則
egrep 支持?jǐn)U展正則
關(guān)于正則與擴(kuò)展正則的區(qū)別可以看我另一篇shell 正則的介紹
文件處理順序 以行為單位,逐行進(jìn)行處理
默認(rèn)只輸出與表達(dá)式相匹配的文本行
基本用法
- 格式1:egrep [選擇] '正則表達(dá)式' 文件
- 格式2:前置命令 | egrep [選擇] '正則表達(dá)式'
? egrep命令工具 (擴(kuò)展正則命令)
? 常用命令選項(xiàng)
?grep 正則表達(dá)式,用來查找過濾文檔的工具符號(hào)
grep "root" user //在user文檔中查找有單詞root的行
grep "^root" user //在user文檔中查找以單詞root開頭的行
grep "bash " user //查找空行
grep "^ " user //查找以空格開頭的行
grep "[rot]" user //查找字母r或者o或者t
grep "roo[tn]" user //查找root或者roon
grep "[^rot]" user //查找字母r或者o或者t之外的內(nèi)容
grep "[a-z]" user //查找小寫字母
grep "[A-Z]" user //查找大寫字母
grep "[a-Z]" user //查找所有字母
grep "[0-9]" user //查找數(shù)字
grep "r..t" user //查找以r開頭t結(jié)尾中間有2個(gè)任意字符的單詞
grep "r. " user //查找以r開頭后面任意字符 相當(dāng)手通配符
grep "ro*" user //查找以r開頭后面有或沒有字母o的單詞,o可以出現(xiàn)任意次
grep "o{1,2}" user //查找o出現(xiàn)1次到2次的行
grep "o{2,3}" user //查找o出現(xiàn)2次到3次的行
grep "o{2}" user //查找o出現(xiàn)2次的行
grep "o{1,} " user //查找o出現(xiàn)1次以及1次以上
grep "(:0){2}" user //查找:0(數(shù)字零)連續(xù)出現(xiàn)2次的行
擴(kuò)展正則
egrep "o+" user //查找o出現(xiàn)1次以及1次以上
egrep "o?" user //查找o出現(xiàn)0次或1次
egrep "o{1,2}" user //查找o出現(xiàn)1次到2次的行
egrep "o{2,3}" user //查找o出現(xiàn)2次到3次的行
egrep "o{2}" user //查找o出現(xiàn)2次的行
egrep "o{1,}" user //查找o出現(xiàn)1次以及1次以上
egrep "(:0){2}" user //查找:0(數(shù)字零)連續(xù)出現(xiàn)2次的行
egrep "bash|nologin" user //查找bash或者nologin
egrep "\bthe\b" a //查找單詞the,前后是空格或者特殊符號(hào)
案例:
正則表達(dá)式匹配練習(xí)
1)典型的應(yīng)用場合:grep、egrep檢索文本行
grep命令不帶-E選項(xiàng)時(shí),支持基本正則匹配模式。比如“word”關(guān)鍵詞檢索、“^word”匹配以word開頭的行、“word$”匹配以word結(jié)尾的行……等等。
輸出以“r”開頭的用戶記錄:
輸出以“l(fā)ocalhost”結(jié)尾的行:
若希望在grep檢索式同時(shí)組合多個(gè)條件,比如輸出以“root”或者以“daemon”開頭的行:
而若若使用grep -E或egrep命令,可支持?jǐn)U展正則匹配模式,能夠自動(dòng)識(shí)別 |、{} 等擴(kuò)展正則表達(dá)式中的特殊字符,用起來更加方便,比如:
或者
使用grep -E 與 使用egrep命令完全等效,推薦使用后者,特別是涉及到復(fù)雜的正則表達(dá)式的時(shí)候。
2)grep、egrep命令的-q選項(xiàng)
選項(xiàng) -q 表示 quiet(靜默)的意思,結(jié)合此選項(xiàng)可以只做檢索而并不輸出,通常在腳本內(nèi)用來識(shí)別查找的目標(biāo)是否存在,通過返回狀態(tài) $? 來判斷,這樣可以忽略無關(guān)的文本信息,簡化腳本輸出。
比如,檢查/etc/hosts文件內(nèi)是否存在192.168.4.4的映射記錄,如果存在則顯示“YES”,否則輸出“NO”,一般會(huì)執(zhí)行:
這樣grep的輸出信息和腳本判斷后的提示混雜在一起,用戶不易辨別,所以可以改成以下操作:
是不是清爽多了,從上述結(jié)果也可以看到,使用 -q 選項(xiàng)的效果與使用 /dev/null的效果類似。
3)基本元字符 ^、$ —— 匹配行首、行尾
輸出注釋的配置行(以#開頭的行):
統(tǒng)計(jì)本地用戶中登錄Shell為“/sbin/nologin”的用戶個(gè)數(shù):
提示: -m10僅在文件的前10行中過濾,后面的行不再過濾。
結(jié)合 -c 選項(xiàng)輸出匹配的行數(shù)
使用 -c 選項(xiàng)可輸出匹配行數(shù),這與通過管道再 wc -l的效果是相同的,但是寫法更簡便。比如,統(tǒng)計(jì)使用“/bin/bash”作為登錄Shell的正常用戶個(gè)數(shù),可執(zhí)行:
或者
4)基本元字符 . —— 匹配任意單個(gè)字符
以/etc/rc.local文件為例,確認(rèn)文本內(nèi)容:
輸出/etc/rc.local文件內(nèi)的空行(用 –v 選項(xiàng)將條件取反):
5)基本元字符 +、?、 —— 目標(biāo)出現(xiàn)的次數(shù)*
還以/etc/rc.local文件為例:
輸出包括 f、ff、ff、……的行,即“f”至少出現(xiàn)一次:
輸出包括init、initial的行,即末尾的“ial”最多出現(xiàn)一次(可能沒有):
輸出包括stu、stuf、stuff、stufff、……的行,即末尾的“f”可出現(xiàn)任意多次,也可以沒有。重復(fù)目標(biāo)只有一個(gè)字符時(shí),可以不使用括號(hào):
輸出所有行,單獨(dú)的“.*”可匹配任意行(包括空行):
輸出/etc/passwd文件內(nèi)“r”開頭且以“nologin”結(jié)尾的用戶記錄,即中間可以是任意字符:
6)元字符 {} —— 限定出現(xiàn)的次數(shù)范圍
創(chuàng)建一個(gè)練習(xí)用的測試文件:
輸出包括ababab的行,即“ab”連續(xù)出現(xiàn)3次:
輸出包括abab、ababab、abababab的行,即“ab”連續(xù)出現(xiàn)2~4次:
輸出包括ababab、abababab、……的行,即“ab”最少連續(xù)出現(xiàn)3次:
7)元字符 [] —— 匹配范圍內(nèi)的單個(gè)字符
還以前面的測試文件bracet.txt為例:
輸出包括abc、abd的行,即前兩個(gè)字符為“ab”,第三個(gè)字符只要是c、d中的一個(gè)就符合條件:
輸出包括大寫字母的行,使用[A-Z]匹配連續(xù)范圍:
8)單詞邊界匹配
以文件/etc/rc.local為例:
輸出包括單詞“init”的行,文件中“initialization”不合要求:
或者:
輸出包括以“l(fā)l”結(jié)尾的單詞的行,使用 匹配單詞右邊界:
或者:
9)多個(gè)條件的組合
通過dmesg啟動(dòng)日志查看藍(lán)牙設(shè)備、網(wǎng)卡設(shè)備相關(guān)的信息: