大家好,我是溫大大
繼上次輸出【面試-八股文】mysql 萬字總結(jié)季研,助你吊打面試官鸽疾,業(yè)界反響還不錯(cuò)
最近溫大大繼續(xù)爆肝輸出 姐妹篇 Linux萬字總結(jié),
從linux基礎(chǔ)训貌、三劍客(grep\sed\awk)制肮、shell腳本編程、文件管理命令递沪、磁盤管理命令豺鼻、網(wǎng)絡(luò)通訊命令、系統(tǒng)備份命令 以及 高頻面試題角度出發(fā)的嘔心力作(呵呵呵*2)
只為助你拿下高薪offer
建議小伙伴先一鍵三連
點(diǎn)贊款慨、關(guān)注儒飒、收藏(其實(shí)收藏對(duì)你們幫助大,你點(diǎn)贊+關(guān)注就當(dāng)是溫大大的朋友啦檩奠,日后朋友有難溫大大第一個(gè)站出來幫你喲桩了,咱們拒絕白嫖)
目錄
0. 基礎(chǔ)
0.1 什么是Linux
0.2 Unix和Linux有什么區(qū)別附帽?
0.3 什么是 Linux 內(nèi)核?
0.4 Linux的基本組件是什么井誉?
0.5 Linux 的體系結(jié)構(gòu)
0.6 BASH和DOS之間的基本區(qū)別是什么蕉扮?
0.7 Linux 開機(jī)啟動(dòng)過程?
0.8 Linux系統(tǒng)缺省的運(yùn)行級(jí)別颗圣?
0.9 Linux 使用的進(jìn)程間通信方式喳钟?
0.10 Linux 有哪些系統(tǒng)日志文件?
0.11 Linux系統(tǒng)安裝多個(gè)桌面環(huán)境有幫助嗎在岂?
0.12 什么是交換空間奔则?
0.13 什么是root帳戶
0.14 什么是LILO?
0.15 什么是BASH蔽午?
0.16 什么是CLI易茬?
0.17 什么是GUI?
0.18 開源的優(yōu)勢是什么及老?
0.19 GNU項(xiàng)目的重要性是什么抽莱?
linux 三劍客 grep、sed写半、awk
1.0 簡介
1.1 grep
1.2 sed
1.3 awk
shell
2.1 Shell 腳本是什么
2.2 可以在 Shell 腳本中使用哪些類型的變量岸蜗?
2.3 Shell 腳本中if語法如何嵌套?
2.4 Shell 腳本中case語句的語法?
2.5 Shell 腳本中for循環(huán)語法?
2.6 Shell 腳本中while循環(huán)語法叠蝇?
2.7 Shell 腳本中 break 命令的作用璃岳?
2.8 Shell 腳本中 continue 命令的作用?
2.9 如何使腳本可執(zhí)行?
2.10 如何調(diào)試 Shell腳本悔捶?
2.11 如何將標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出同時(shí)重定向到同一位置?
2.12 如何在 Shell 腳本如何定義函數(shù)呢铃慷?
2.13 如何執(zhí)行算術(shù)運(yùn)算?
文件管理命令
3.1 cat 命令
3.2 chmod 命令
3.3 chown 命令
3.4 cp 命令
3.5 find 命令
3.6 head 命令
3.7 less 命令
3.8 ln 命令
3.9 locate 命令
3.10 more 命令
3.11 mv 命令
3.12 rm 命令
3.13 tail 命令
3.14 touch 命令
3.15 vim 命令
3.16 whereis 命令
3.17 which 命令
文檔編輯命令
4.1 grep 命令
4.2 wc 命令
磁盤管理命令
5.1 cd 命令
5.2 df 命令
5.3 du 命令
5.4 ls命令
5.5 mkdir 命令
5.6 pwd 命令
5.7 rmdir 命令
網(wǎng)絡(luò)通訊命令
6.1 ifconfig 命令
6.2 iptables 命令
6.3 netstat 命令
6.4 ping 命令
6.5 telnet 命令
系統(tǒng)管理命令
7.1 date 命令
7.2 free 命令
7.3 kill 命令
7.4 ps 命令
7.5 rpm 命令
7.6 top 命令
7.7? yum 命令
備份壓縮命令
8.1 bzip2 命令
8.2 gzip 命令
8.3 tar 命令
8.4 unzip 命令
0. 基礎(chǔ)
0.1 什么是Linux
Linux是一套免費(fèi)使用和自由傳播的類Unix操作系統(tǒng)蜕该,是一個(gè)基于POSIX和Unix的多用戶犁柜、多任務(wù)、支持多線程和多CPU的操作系統(tǒng)堂淡。它能運(yùn)行主要的Unix工具軟件馋缅、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。它支持32位和64位硬件绢淀。Linux繼承了Unix以網(wǎng)絡(luò)為核心的設(shè)計(jì)思想萤悴,是一個(gè)性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。
0.2 Unix和Linux有什么區(qū)別皆的?
Linux和Unix都是功能強(qiáng)大的操作系統(tǒng)覆履,都是應(yīng)用廣泛的服務(wù)器操作系統(tǒng),有很多相似之處,甚至有一部分人錯(cuò)誤地認(rèn)為Unix和Linux操作系統(tǒng)是一樣的硝全,然而栖雾,事實(shí)并非如此,以下是兩者的區(qū)別伟众。
開源性 Linux是一款開源操作系統(tǒng)析藕,不需要付費(fèi),即可使用赂鲤;Unix是一款對(duì)源碼實(shí)行知識(shí)產(chǎn)權(quán)保護(hù)的傳統(tǒng)商業(yè)軟件噪径,使用需要付費(fèi)授權(quán)使用柱恤。
跨平臺(tái)性 Linux操作系統(tǒng)具有良好的跨平臺(tái)性能数初,可運(yùn)行在多種硬件平臺(tái)上;Unix操作系統(tǒng)跨平臺(tái)性能較弱梗顺,大多需與硬件配套使用泡孩。
可視化界面 Linux除了進(jìn)行命令行操作,還有窗體管理系統(tǒng)寺谤;Unix只是命令行下的系統(tǒng)仑鸥。
硬件環(huán)境 Linux操作系統(tǒng)對(duì)硬件的要求較低,安裝方法更易掌握变屁;Unix對(duì)硬件要求比較苛刻眼俊,按照難度較大。
用戶群體 Linux的用戶群體很廣泛粟关,個(gè)人和企業(yè)均可使用疮胖;Unix的用戶群體比較窄,多是安全性要求高的大型企業(yè)使用闷板,如銀行澎灸、電信部門等,或者Unix硬件廠商使用遮晚,如Sun等性昭。
相比于Unix操作系統(tǒng),Linux操作系統(tǒng)更受廣大計(jì)算機(jī)愛好者的喜愛县遣,主要原因是Linux操作系統(tǒng)具有Unix操作系統(tǒng)的全部功能糜颠,并且能夠在普通PC計(jì)算機(jī)上實(shí)現(xiàn)全部的Unix特性,開源免費(fèi)的特性萧求,更容易普及使用其兴!
0.3 什么是 Linux 內(nèi)核?
Linux 系統(tǒng)的核心是內(nèi)核饭聚。內(nèi)核控制著計(jì)算機(jī)系統(tǒng)上的所有硬件和軟件忌警,在必要時(shí)分配硬件,并根據(jù)需要執(zhí)行軟件。
系統(tǒng)內(nèi)存管理
應(yīng)用程序管理
硬件設(shè)備管理
文件系統(tǒng)管理
0.4 Linux的基本組件是什么法绵?
就像任何其他典型的操作系統(tǒng)一樣箕速,Linux擁有所有這些組件:內(nèi)核,shell和GUI朋譬,系統(tǒng)實(shí)用程序和應(yīng)用程序盐茎。Linux比其他操作系統(tǒng)更具優(yōu)勢的是每個(gè)方面都附帶其他功能,所有代碼都可以免費(fèi)下載徙赢。
0.5 Linux 的體系結(jié)構(gòu)
從大的方面講字柠,Linux 體系結(jié)構(gòu)可以分為兩塊:
用戶空間(User Space) :用戶空間又包括用戶的應(yīng)用程序(User Applications)、C 庫(C Library) 狡赐。
內(nèi)核空間(Kernel Space) :內(nèi)核空間又包括系統(tǒng)調(diào)用接口(System Call Interface)窑业、內(nèi)核(Kernel)、平臺(tái)架構(gòu)相關(guān)的代碼(Architecture-Dependent Kernel Code) 枕屉。
為什么 Linux 體系結(jié)構(gòu)要分為用戶空間和內(nèi)核空間的原因常柄?
1、現(xiàn)代 CPU 實(shí)現(xiàn)了不同的工作模式搀擂,不同模式下 CPU 可以執(zhí)行的指令和訪問的寄存器不同西潘。
2、Linux 從 CPU 的角度出發(fā)哨颂,為了保護(hù)內(nèi)核的安全喷市,把系統(tǒng)分成了兩部分。
用戶空間和內(nèi)核空間是程序執(zhí)行的兩種不同的狀態(tài)威恼,我們可以通過兩種方式完成用戶空間到內(nèi)核空間的轉(zhuǎn)移:1)系統(tǒng)調(diào)用品姓;2)硬件中斷。
0.6 BASH和DOS之間的基本區(qū)別是什么沃测?
BASH和DOS控制臺(tái)之間的主要區(qū)別在于3個(gè)方面:
BASH命令區(qū)分大小寫缭黔,而DOS命令則不區(qū)分;
在BASH下,/ character是目錄分隔符蒂破,\作為轉(zhuǎn)義字符馏谨。在DOS下,/用作命令參數(shù)分隔符附迷,\是目錄分隔符
DOS遵循命名文件中的約定惧互,即8個(gè)字符的文件名后跟一個(gè)點(diǎn),擴(kuò)展名為3個(gè)字符喇伯。BASH沒有遵循這樣的慣例逝段。
0.7 Linux 開機(jī)啟動(dòng)過程士骤?
了解即可
1猿规、主機(jī)加電自檢衬鱼,加載 BIOS 硬件信息。
2、讀取 MBR 的引導(dǎo)文件(GRUB匆赃、LILO)淤毛。
3、引導(dǎo) Linux 內(nèi)核算柳。
4低淡、運(yùn)行第一個(gè)進(jìn)程 init (進(jìn)程號(hào)永遠(yuǎn)為 1 )。
5瞬项、進(jìn)入相應(yīng)的運(yùn)行級(jí)別蔗蹋。
6、運(yùn)行終端囱淋,輸入用戶名和密碼猪杭。
0.8 Linux系統(tǒng)缺省的運(yùn)行級(jí)別?
關(guān)機(jī)绎橘。
單機(jī)用戶模式胁孙。
字符界面的多用戶模式(不支持網(wǎng)絡(luò))唠倦。
字符界面的多用戶模式称鳞。
未分配使用。
圖形界面的多用戶模式稠鼻。
重啟冈止。
0.9 Linux 使用的進(jìn)程間通信方式?
了解即可
1候齿、管道(pipe)熙暴、流管道(s_pipe)、有名管道(FIFO)慌盯。
2周霉、信號(hào)(signal) 。
3亚皂、消息隊(duì)列俱箱。
4、共享內(nèi)存灭必。
5狞谱、信號(hào)量。
6禁漓、套接字(socket) 跟衅。
0.10 Linux 有哪些系統(tǒng)日志文件?
比較重要的是 /var/log/messages 日志文件播歼。
該日志文件是許多進(jìn)程日志文件的匯總伶跷,從該文件可以看出任何入侵企圖或成功的入侵。
另外,如果胖友的系統(tǒng)里有 ELK 日志集中收集叭莫,它也會(huì)被收集進(jìn)去磷支。
0.11 Linux系統(tǒng)安裝多個(gè)桌面環(huán)境有幫助嗎?
通常食寡,一個(gè)桌面環(huán)境雾狈,如KDE或Gnome,足以在沒有問題的情況下運(yùn)行抵皱。盡管系統(tǒng)允許從一個(gè)環(huán)境切換到另一個(gè)環(huán)境善榛,但這對(duì)用戶來說都是優(yōu)先考慮的問題。有些程序在一個(gè)環(huán)境中工作而在另一個(gè)環(huán)境中無法工作呻畸,因此它也可以被視為選擇使用哪個(gè)環(huán)境的一個(gè)因素移盆。
0.12 什么是交換空間?
交換空間是Linux使用的一定空間伤为,用于臨時(shí)保存一些并發(fā)運(yùn)行的程序咒循。當(dāng)RAM沒有足夠的內(nèi)存來容納正在執(zhí)行的所有程序時(shí),就會(huì)發(fā)生這種情況绞愚。
0.13 什么是root帳戶
root帳戶就像一個(gè)系統(tǒng)管理員帳戶叙甸,允許你完全控制系統(tǒng)。你可以在此處創(chuàng)建和維護(hù)用戶帳戶位衩,為每個(gè)帳戶分配不同的權(quán)限裆蒸。每次安裝Linux時(shí)都是默認(rèn)帳戶。
0.14 什么是LILO糖驴?
LILO是Linux的引導(dǎo)加載程序僚祷。它主要用于將Linux操作系統(tǒng)加載到主內(nèi)存中,以便它可以開始運(yùn)行贮缕。
0.15 什么是BASH辙谜?
BASH是Bourne Again SHell的縮寫。它由Steve Bourne編寫感昼,作為原始Bourne Shell(由/ bin / sh表示)的替代品装哆。它結(jié)合了原始版本的Bourne Shell的所有功能,以及其他功能抑诸,使其更容易使用烂琴。從那以后,它已被改編為運(yùn)行Linux的大多數(shù)系統(tǒng)的默認(rèn)shell蜕乡。
0.16 什么是CLI奸绷?
命令行界面(英語:command-line interface,縮寫]:CLI)是在圖形用戶界面得到普及之前使用最為廣泛的用戶界面层玲,它通常不支持鼠標(biāo)号醉,用戶通過鍵盤輸入指令反症,計(jì)算機(jī)接收到指令后,予以執(zhí)行畔派。也有人稱之為字符用戶界面(CUI)铅碍。
通常認(rèn)為,命令行界面(CLI)沒有圖形用戶界面(GUI)那么方便用戶操作线椰。因?yàn)榘福钚薪缑娴能浖ǔP枰脩粲洃洸僮鞯拿睿呛┯洌捎谄浔旧淼奶攸c(diǎn)烦绳,命令行界面要較圖形用戶界面節(jié)約計(jì)算機(jī)系統(tǒng)的資源。在熟記命令的前提下配紫,使用命令行界面往往要較使用圖形用戶界面的操作速度要快径密。所以,圖形用戶界面的操作系統(tǒng)中躺孝,都保留著可選的命令行界面享扔。
0.17 什么是GUI?
圖形用戶界面(Graphical User Interface植袍,簡稱 GUI惧眠,又稱圖形用戶接口)是指采用圖形方式顯示的計(jì)算機(jī)操作用戶界面。
圖形用戶界面是一種人與計(jì)算機(jī)通信的界面顯示格式奋单,允許用戶使用鼠標(biāo)等輸入設(shè)備操縱屏幕上的圖標(biāo)或菜單選項(xiàng)锉试,以選擇命令、調(diào)用文件览濒、啟動(dòng)程序或執(zhí)行其它一些日常任務(wù)。與通過鍵盤輸入文本或字符命令來完成例行任務(wù)的字符界面相比拖云,圖形用戶界面有許多優(yōu)點(diǎn)贷笛。
0.18 開源的優(yōu)勢是什么?
開源允許你將軟件(包括源代碼)免費(fèi)分發(fā)給任何感興趣的人宙项。然后乏苦,人們可以添加功能,甚至可以調(diào)試和更正源代碼中的錯(cuò)誤尤筐。它們甚至可以讓它運(yùn)行得更好汇荐,然后再次自由地重新分配這些增強(qiáng)的源代碼。這最終使社區(qū)中的每個(gè)人受益盆繁。
0.19 GNU項(xiàng)目的重要性是什么掀淘?
這種所謂的自由軟件運(yùn)動(dòng)具有多種優(yōu)勢,例如可以自由地運(yùn)行程序以及根據(jù)你的需要自由學(xué)習(xí)和修改程序油昂。它還允許你將軟件副本重新分發(fā)給其他人革娄,以及自由改進(jìn)軟件并將其發(fā)布給公眾倾贰。
1.0 簡介
Linux中最重要的三個(gè)命令在業(yè)界被稱為“三劍客”,它們是awk,sed,grep拦惋。
我們現(xiàn)在知道Linux下一切皆文件匆浙,對(duì)Linux的操作就是對(duì)文件的處理,那么怎么能更好的處理文件呢厕妖?這就要用到我們上面的三劍客命令首尼。
grep擅長查找功能言秸,sed擅長取行和替換饰恕。awk擅長取列。
1.1 grep
grep: 過濾
grep?[OPTIONS]?PATTERN?[FILE...]
--color=auto?對(duì)匹配到的文本著色顯示
-v?顯示不被pattern匹配到的行
-i?忽略字符大小寫
-n?顯示匹配的行號(hào)
-c?統(tǒng)計(jì)匹配的行數(shù)
-o?僅顯示匹配到的字符串
-q?靜默模式井仰,不輸出任何信息
-A#?after,?后#行
-B#?before,?前#行
-C#?context,?前后各#行
-e?實(shí)現(xiàn)多個(gè)選項(xiàng)間的邏輯or關(guān)系
grep?–e?‘cat?’?-e?‘dog’?file
-w?匹配整個(gè)單詞
-E?使用ERE,相當(dāng)于egrep
-F?相當(dāng)于fgrep埋嵌,不支持正則表達(dá)式
例:
1、包含root: grep -n root
2俱恶、不包含root: grep -nv root
3雹嗦、s開頭: grep ^s
4、以n結(jié)尾: grep -n n$
1.2 sed
sed: 取行進(jìn)行 打印合是、替換
sed?[option]...'script'inputfile
選項(xiàng)
-n?不輸出模式空間內(nèi)容到屏幕了罪,即不自動(dòng)打印
-e?多點(diǎn)編輯
-f?/PATH/SCRIPT_FILE:?從指定文件中讀取編輯腳本
-r?支持使用擴(kuò)展正則表達(dá)式
-i?直接編輯文件
-i.bak?備份文件并原處編輯
script?地址定界
不給地址:對(duì)全文進(jìn)行處理
單地址:
#:?指定的行,$:最后一行
/pattern/:被此處模式所能夠匹配到的每一行
地址范圍:
#,#
#,+#
/pat1/,/pat2/
`#,/pat1/
~:步進(jìn)
1~2?奇數(shù)行
2~2?偶數(shù)行
編輯命令:
d?刪除模式空間匹配的行聪全,并立即啟用下一輪循環(huán)
p?打印當(dāng)前模式空間內(nèi)容泊藕,追加到默認(rèn)輸出之后
a?[\]text1?在指定行后面追加文本,支持使用\n實(shí)現(xiàn)多行追加
i?[\]text?在行前面插入文本
c?[\]text?替換行為單行或多行文本
w?/path/somefile?保存模式匹配的行至指定文件
r?/path/somefile?讀取指定文件的文本至模式空間中匹配到的行后
=?為模式空間中的行打印行號(hào)
!?模式空間中匹配行取反處理
s///:查找替換,支持使用其它分隔符,s@@@难礼,s###
替換標(biāo)記:
g?行內(nèi)全局替換
p?顯示替換成功的行
w?/PATH/TO/SOMEFILE?將替換成功的行保存至文件中
舉例子:
1娃圆、打印第2行: sed -n 2p passwd
2、打印2-5行: sed -n 2,5p passwd
3蛾茉、root全替換abc: sed -i 's/root/abc/g' passwd
直接修改讀取的文件內(nèi)容讼呢,而不是輸出到終端。
s :取代谦炬,可以直接進(jìn)行取代的工作悦屏。
g: 是全局的意思。其中#是格式符键思,他也可以是@或者別的/础爬。
Sed替換格式是:sed -i ‘s/要替換的內(nèi)容/替換成的內(nèi)容/g' 文件名。
1.3 awk
awk: 取列進(jìn)行 打印
[root@debugresetreset54142x1?~]#?awk?--help
Usage:?awk?[POSIX?or?GNU?style?options]?-f
progfile?[--]?file?...
Usage:?awk?[POSIX?or?GNU?style?options]
[--]'program'file?...
POSIX?options:??????????GNU?long?options:?(standard)
-f?progfile?????????????--file=progfile
-F?fs???????????????????--field-separator=fs
-v?var=val??????????????--assign=var=val
Short?options:??????????GNU?long?options:?(extensions)
-b??????????????????????--characters-as-bytes
-c??????????????????????--traditional
-C??????????????????????--copyright
-d[file]????????????????--dump-variables[=file]
-e'program-text'--source='program-text'
-E?file?????????????????--exec=file
-g??????????????????????--gen-pot
-h??????????????????????--help
-L?[fatal]??????????????--lint[=fatal]
-n??????????????????????--non-decimal-data
-N??????????????????????--use-lc-numeric
-O??????????????????????--optimize
-p[file]????????????????--profile[=file]
-P??????????????????????--posix
-r??????????????????????--re-interval
-S??????????????????????--sandbox
-t??????????????????????--lint-old
-V??????????????????????--version
舉例子:
1吼鳞、打印文件第一列:
這里的分隔符是冒號(hào) 看蚜,然后print打印第一列
2、輸出字段1,3,6赖条,以制表符作為分隔符
2. shell
2.1 Shell 腳本是什么
1個(gè) Shell 腳本是一個(gè)文本文件失乾,包含一個(gè)或多個(gè)命令常熙。作為系統(tǒng)管理員,我們經(jīng)常需要使用多個(gè)命令來完成一項(xiàng)任務(wù)碱茁,我們可以添加這些所有命令在一個(gè)文本文件(Shell 腳本)來完成這些日常工作任務(wù)裸卫。
什么是默認(rèn)登錄 Shell ?
在 Linux 操作系統(tǒng)纽竣,"/bin/bash" 是默認(rèn)登錄 Shell墓贿,是在創(chuàng)建用戶時(shí)分配的。
2.2 可以在 Shell 腳本中使用哪些類型的變量蜓氨?
在 Shell 腳本聋袋,我們可以使用兩種類型的變量:
系統(tǒng)定義變量
系統(tǒng)變量是由系統(tǒng)系統(tǒng)自己創(chuàng)建的。這些變量通常由大寫字母組成穴吹,可以通過 set 命令查看幽勒。
用戶定義變量
用戶變量由系統(tǒng)用戶來生成和定義,變量的值可以通過命令 "echo $<變量名>" 查看港令。
在寫一個(gè) Shell 腳本時(shí)啥容,如果你想要檢查前一命令是否執(zhí)行成功,在 if 條件中使用 $? 可以來檢查前一命令的結(jié)束狀態(tài)顷霹。
如果結(jié)束狀態(tài)是 0 咪惠,說明前一個(gè)命令執(zhí)行成功。例如:
root@localhost:~##?ls?/usr/bin/shar
/usr/bin/shar
root@localhost:~##?echo?$?
0
如果結(jié)束狀態(tài)不是0淋淀,說明命令執(zhí)行失敗遥昧。例如:
root@localhost:~##?ls?/usr/bin/share
ls:?cannot?access?/usr/bin/share:?No?such?file?or?directory
root@localhost:~##?echo?$?
2
2.3 Shell 腳本中if語法如何嵌套?
if 語法
if[?條件?]
then
命令1
命令2
…..
else
if[?條件?]
then
命令1
命令2
….
else
命令1
命令2
…..
fi
fi
在 Shell 腳本中如何比較兩個(gè)數(shù)字?
在 if-then 中使用測試命令( -gt 等)來比較兩個(gè)數(shù)字朵纷。例如:
#!/bin/bash
x=10
y=20
if[$x-gt$y]
then
echo“x?is?greater?than?y”
else
echo“y?is?greater?than?x”
fi
2.4 Shell 腳本中case語句的語法?
語法
case變量in
值1)
命令1
命令2
…..
最后命令
!!
值2)
命令1
命令2
……
最后命令
;;
esac
2.5 Shell 腳本中for循環(huán)語法炭臭?
語法
for變量in循環(huán)列表
do
命令1
命令2
….
最后命令
done
2.6 Shell 腳本中while循環(huán)語法?
如同 for 循環(huán)柴罐,while 循環(huán)只要條件成立就重復(fù)它的命令塊徽缚。
不同于 for循環(huán),while 循環(huán)會(huì)不斷迭代革屠,直到它的條件不為真。
語法:
while[?條件?]
do
命令…
done
do-while 語句的基本格式排宰?
do-while 語句類似于 while 語句似芝,但檢查條件語句之前先執(zhí)行命令(LCTT 譯注:意即至少執(zhí)行一次。)板甘。下面是用 do-while 語句的語法:
do
{
命令
}while(條件)
2.7 Shell 腳本中 break 命令的作用党瓮?
break 命令一個(gè)簡單的用途是退出執(zhí)行中的循環(huán)。我們可以在 while 和 until 循環(huán)中使用 break 命令跳出循環(huán)盐类。
2.8 Shell 腳本中 continue 命令的作用寞奸?
continue 命令不同于 break 命令呛谜,它只跳出當(dāng)前循環(huán)的迭代,而不是整個(gè)循環(huán)枪萄。continue 命令很多時(shí)候是很有用的隐岛,例如錯(cuò)誤發(fā)生,但我們依然希望繼續(xù)執(zhí)行大循環(huán)的時(shí)候瓷翻。
2.9 如何使腳本可執(zhí)行?
使用 chmod 命令來使腳本可執(zhí)行聚凹。例子如下:chmod a+x myscript.sh 。
#!/bin/bash 的作用齐帚?
#!/bin/bash 是 Shell 腳本的第一行妒牙,稱為釋伴(shebang)行。
這里 # 符號(hào)叫做 hash 对妄,而 ! 叫做 bang湘今。
它的意思是命令通過 /bin/bash 來執(zhí)行。
2.10 如何調(diào)試 Shell腳本剪菱?
使用 -x' 數(shù)(sh -x myscript.sh)可以調(diào)試 Shell腳本摩瞎。
另一個(gè)種方法是使用 -nv 參數(shù)(sh -nv myscript.sh)。
2.11 如何將標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出同時(shí)重定向到同一位置?
方法一:2>&1 (如## ls /usr/share/doc > out.txt 2>&1 ) 琅豆。
方法二:&> (如## ls /usr/share/doc &> out.txt ) 愉豺。
2.12 如何在 Shell 腳本如何定義函數(shù)呢?
函數(shù)是擁有名字的代碼塊茫因。當(dāng)我們定義代碼塊蚪拦,我們就可以在我們的腳本調(diào)用函數(shù)名字,該塊就會(huì)被執(zhí)行冻押。示例如下所示:
2.13 如何執(zhí)行算術(shù)運(yùn)算驰贷?
有兩種方法來執(zhí)行算術(shù)運(yùn)算:
1、使用 expr 命令:## expr 5 + 2 洛巢。
2括袒、用一個(gè)美元符號(hào)和方括號(hào)(表達(dá)式):[16 + 4] ; test=$[16 + 4] 。
3. 文件管理命令
3.1 cat 命令
cat 簡介
1.一次顯示整個(gè)文件:
cat?filename
2.從鍵盤創(chuàng)建一個(gè)文件:
cat?>?filename
3.將幾個(gè)文件合并為一個(gè)文件:
cat?file1?file2?>?file
3.2 chmod 命令
chmod 簡介
Linux/Unix 的文件調(diào)用權(quán)限分為三級(jí) : 文件擁有者稿茉、群組锹锰、其他。利用 chmod 可以控制文件如何被他人所調(diào)用漓库。
用于改變 linux 系統(tǒng)文件或目錄的訪問權(quán)限恃慧。用它控制文件或目錄的訪問權(quán)限。該命令有兩種用法渺蒿。一種是包含字母和操作符表達(dá)式的文字設(shè)定法痢士;另一種是包含數(shù)字的數(shù)字設(shè)定法。
每一文件或目錄的訪問權(quán)限都有三組茂装,每組用三位表示怠蹂,分別為文件屬主的讀善延、寫和執(zhí)行權(quán)限;與屬主同組的用戶的讀城侧、寫和執(zhí)行權(quán)限易遣;系統(tǒng)中其他用戶的讀、寫和執(zhí)行權(quán)限赞庶⊙档玻可使用 ls -l test.txt 查找。
chmod 權(quán)限說明:
-rw-r--r--?1?root?root?296K?11-13?06:03?log2012.log
第一列共有 10 個(gè)位置歧强,第一個(gè)字符指定了文件類型澜薄。在通常意義上,一個(gè)目錄也是一個(gè)文件摊册。如果第一個(gè)字符是橫線肤京,表示是一個(gè)非目錄的文件。如果是 d茅特,表示是一個(gè)目錄忘分。從第二個(gè)字符開始到第十個(gè) 9 個(gè)字符,3 個(gè)字符一組白修,分別表示了 3 組用戶對(duì)文件或者目錄的權(quán)限妒峦。權(quán)限字符用橫線代表空許可,r 代表只讀,w 代表寫,x 代表可執(zhí)行丐箩。
chmod 常用參數(shù):
-c?當(dāng)發(fā)生改變時(shí)惩妇,報(bào)告處理信息
-R?處理指定目錄以及其子目錄下所有文件
chmod 權(quán)限范圍:
u?:目錄或者文件的當(dāng)前的用戶
g?:目錄或者文件的當(dāng)前的群組
o?:除了目錄或者文件的當(dāng)前用戶或群組之外的用戶或者群組
a?:所有的用戶及群組
chmod 權(quán)限代號(hào):
r?:讀權(quán)限辩棒,用數(shù)字4表示
w?:寫權(quán)限,用數(shù)字2表示
x?:執(zhí)行權(quán)限,用數(shù)字1表示
-?:刪除權(quán)限,用數(shù)字0表示
s?:特殊權(quán)限
chmod 實(shí)例:
(1)所有用戶可執(zhí)行權(quán)限:a+x
chmod?a+x?t.log
(2)撤銷所有的權(quán)限 + 賦予可讀權(quán)限:u=r
chmod?u=r?t.log
(3)屬主分配(7)權(quán)限胚鸯,所在組分配(5),其他用戶分配(1)
7表示:讀笨鸡、寫姜钳、執(zhí)行
5表示:讀、執(zhí)行
1表示:執(zhí)行
chmod?751?t.log?-c(或者:chmod?u=rwx,g=rx,o=x?t.log)
3.3 chown 命令
chown 簡介
chown 改為指定的 用戶或組
用戶可以是用戶名或者用戶 ID形耗;
組可以是組名或者組 ID傲须;
文件是以空格分開的要改變權(quán)限的文件列表,支持通配符趟脂。
-c?顯示更改的部分的信息
-R?處理指定目錄及子目錄
實(shí)例:
(1)改變擁有者和群組
chown?-c?mail:mail?log2012.log
(2)改變文件群組
chown?-c?:mail?t.log
(3)改變文件夾及子文件目錄屬主及屬組為 mail
chown?-cR?mail:test/
3.4 cp 命令
cp 簡介
將源文件復(fù)制至目標(biāo)文件,或?qū)⒍鄠€(gè)源文件復(fù)制至目標(biāo)目錄例衍。
注意:命令行復(fù)制昔期,如果目標(biāo)文件已經(jīng)存在會(huì)提示是否覆蓋已卸,而在 shell 腳本中,如果不加 -i 參數(shù)硼一,則不會(huì)提示累澡,而是直接覆蓋!
-i?提示
-r?復(fù)制目錄及目錄內(nèi)所有項(xiàng)目
-a?復(fù)制的文件與原文件時(shí)間一樣
實(shí)例:
(1)復(fù)制 a.txt 到 test 目錄下般贼,保持原文件時(shí)間愧哟,如果原文件存在提示是否覆蓋。
cp?-ai?a.txttest
(2)為 a.txt 建議一個(gè)鏈接(快捷方式)
cp?-s?a.txt?link_a.txt
3.5 find 命令
find 命令
用于在文件樹中查找文件哼蛆,并作出相應(yīng)的處理蕊梧。
命令格式:
find?pathname?-options?[-print-exec-ok?...]
命令參數(shù):
pathname:?find命令所查找的目錄路徑。例如用.來表示當(dāng)前目錄腮介,用/來表示系統(tǒng)根目錄肥矢。
-print:?find命令將匹配的文件輸出到標(biāo)準(zhǔn)輸出。
-exec:?find命令對(duì)匹配的文件執(zhí)行該參數(shù)所給出的shell命令叠洗。相應(yīng)命令的形式為'command'{??}?\;甘改,注意{???}和\;之間的空格灭抑。
-ok:?和-exec的作用相同十艾,只不過以一種更為安全的模式來執(zhí)行該參數(shù)所給出的shell命令,在執(zhí)行每一個(gè)命令之前腾节,都會(huì)給出提示忘嫉,讓用戶來確定是否執(zhí)行。
命令選項(xiàng):
-name?按照文件名查找文件
-perm?按文件權(quán)限查找文件
-user?按文件屬主查找文件
-group??按照文件所屬的組來查找文件禀倔。
-type查找某一類型的文件榄融,諸如:
b?-?塊設(shè)備文件
d?-?目錄
c?-?字符設(shè)備文件
l?-?符號(hào)鏈接文件
p?-?管道文件
f?-?普通文件
實(shí)例:
(1)查找 48 小時(shí)內(nèi)修改過的文件
find?-atime?-2
(2)在當(dāng)前目錄查找 以 .log 結(jié)尾的文件。 . 代表當(dāng)前目錄
find?./?-name'*.log'
(3)查找 /opt 目錄下 權(quán)限為 777 的文件
find?/opt?-perm?777
(4)查找大于 1K 的文件
find?-size?+1000c
(5)查找等于 1000 字符的文件
find?-size?1000c
3.6 head 命令
head 用來顯示檔案的開頭至標(biāo)準(zhǔn)輸出中救湖,默認(rèn) head 命令打印其相應(yīng)文件的開頭 10 行愧杯。
常用參數(shù):
-n<行數(shù)>?顯示的行數(shù)(行數(shù)為復(fù)數(shù)表示從最后向前數(shù))
實(shí)例:
(1)顯示 1.log 文件中前 20 行
head?1.log?-n?20
(2)顯示 1.log 文件前 20 字節(jié)
head?-c?20?log2014.log
(3)顯示 t.log最后 10 行
head?-n?-10?t.log
3.7 less 命令
less 與 more 類似,但使用 less 可以隨意瀏覽文件鞋既,而 more 僅能向前移動(dòng)力九,卻不能向后移動(dòng),而且 less 在查看之前不會(huì)加載整個(gè)文件邑闺。
常用命令參數(shù):
-i??忽略搜索時(shí)的大小寫
-N??顯示每行的行號(hào)
-o??<文件名>?將less?輸出的內(nèi)容在指定文件中保存起來
-s??顯示連續(xù)空行為一行
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重復(fù)前一個(gè)搜索(與?/?或???有關(guān))
N:反向重復(fù)前一個(gè)搜索(與?/?或???有關(guān))
-x?<數(shù)字>?將“tab”鍵顯示為規(guī)定的數(shù)字空格
b??向后翻一頁
d??向后翻半頁
h??顯示幫助界面
Q??退出less?命令
u??向前滾動(dòng)半頁
y??向前滾動(dòng)一行
空格鍵?滾動(dòng)一行
回車鍵?滾動(dòng)一頁
[pagedown]:?向下翻動(dòng)一頁
[pageup]:???向上翻動(dòng)一頁
實(shí)例:
(1)ps 查看進(jìn)程信息并通過 less 分頁顯示
ps?-aux?|?less?-N
(2)查看多個(gè)文件
less?1.log?2.log
3.8 ln 命令
ln 命令
功能是為文件在另外一個(gè)位置建立一個(gè)同步的鏈接跌前,當(dāng)在不同目錄需要該問題時(shí),就不需要為每一個(gè)目錄創(chuàng)建同樣的文件陡舅,通過 ln 創(chuàng)建的鏈接(link)減少磁盤占用量抵乓。
鏈接分類
軟件鏈接
硬鏈接
軟鏈接
1.軟鏈接,以路徑的形式存在。類似于Windows操作系統(tǒng)中的快捷方式
2.軟鏈接可以 跨文件系統(tǒng) 灾炭,硬鏈接不可以
3.軟鏈接可以對(duì)一個(gè)不存在的文件名進(jìn)行鏈接
4.軟鏈接可以對(duì)目錄進(jìn)行鏈接
硬鏈接
1.硬鏈接茎芋,以文件副本的形式存在。但不占用實(shí)際空間蜈出。
2.不允許給目錄創(chuàng)建硬鏈接
3.硬鏈接只有在同一個(gè)文件系統(tǒng)中才能創(chuàng)建
常用參數(shù):
-b 刪除田弥,覆蓋以前建立的鏈接
-s 軟鏈接(符號(hào)鏈接)
-v 顯示詳細(xì)處理過程
實(shí)例:
(1)給文件創(chuàng)建軟鏈接,并顯示操作信息
ln?-sv?source.log?link.log
(2)給文件創(chuàng)建硬鏈接铡原,并顯示操作信息
ln?-v?source.log?link1.log
(3)給目錄創(chuàng)建軟鏈接
ln?-sv?/opt/soft/test/test3?/opt/soft/test/test5
3.9 locate 命令
locate 與 find 命令相似偷厦,可以使用如 *、? 等進(jìn)行正則匹配查找
常用參數(shù):
-l?num(要顯示的行數(shù))
-f???將特定的檔案系統(tǒng)排除在外燕刻,如將proc排除在外
-r???使用正則運(yùn)算式做為尋找條件
實(shí)例:
(1)查找和 pwd 相關(guān)的所有文件(文件名中包含 pwd)
locatepwd
(2)搜索 etc 目錄下所有以 sh 開頭的文件
locate?/etc/sh
(3)查找 /var 目錄下只泼,以 reason 結(jié)尾的文件
locate?-r'^/var.*reason$'(其中.表示一個(gè)字符,*表示任務(wù)多個(gè)酌儒;.*表示任意多個(gè)字符)
3.10 more 命令
功能類似于 cat, more 會(huì)以一頁一頁的顯示方便使用者逐頁閱讀辜妓,而最基本的指令就是按空白鍵(space)就往下一頁顯示,按 b 鍵就會(huì)往回(back)一頁顯示忌怎。
命令參數(shù):
+n??????從笫?n?行開始顯示
-n???????定義屏幕大小為n行
+/pattern?在每個(gè)檔案顯示前搜尋該字串(pattern)籍滴,然后從該字串前兩行之后開始顯示
-c???????從頂部清屏,然后顯示
-d???????提示“Press?space?tocontinue榴啸,’q’?to?quit(按空格鍵繼續(xù)孽惰,按q鍵退出)”,禁用響鈴功能
-l????????忽略Ctrl+l(換頁)字符
-p???????通過清除窗口而不是滾屏來對(duì)文件進(jìn)行換頁鸥印,與-c選項(xiàng)相似
-s???????把連續(xù)的多個(gè)空行顯示為一行
-u???????把文件內(nèi)容中的下畫線去掉
常用操作命令:
Enter????向下?n?行勋功,需要定義。默認(rèn)為?1?行
Ctrl+F???向下滾動(dòng)一屏
空格鍵??向下滾動(dòng)一屏
Ctrl+B??返回上一屏
=???????輸出當(dāng)前行的行號(hào)
:f?????輸出文件名和當(dāng)前行的行號(hào)
V??????調(diào)用vi編輯器
!命令???調(diào)用Shell库说,并執(zhí)行命令
q???????退出more
實(shí)例:
(1)從第3行起顯示
more?+3?text.txt
(2)在所列出文件目錄詳細(xì)信息狂鞋,借助管道使每次顯示 5 行
ls?-l?|?more?-5
3.11 mv 命令
mv 命令
移動(dòng)文件或修改文件名,根據(jù)第二參數(shù)類型(如目錄潜的,則移動(dòng)文件骚揍;如為文件則重命令該文件)。
當(dāng)?shù)诙€(gè)參數(shù)為目錄時(shí)啰挪,第一個(gè)參數(shù)可以是多個(gè)以空格分隔的文件或目錄信不,然后移動(dòng)第一個(gè)參數(shù)指定的多個(gè)文件到第二個(gè)參數(shù)指定的目錄中。
實(shí)例:
(1)將文件 test.log 重命名為 test1.txt
mv?test.log?test1.txt
(2)將文件 log1.txt,log2.txt,log3.txt 移動(dòng)到根的 test3 目錄中
mv?llog1.txt?log2.txt?log3.txt?/test3
(3)將文件 file1 改名為 file2亡呵,如果 file2 已經(jīng)存在抽活,則詢問是否覆蓋
mv?-i?log1.txt?log2.txt
(4)移動(dòng)當(dāng)前文件夾下的所有文件到上一級(jí)目錄
mv?*?../
3.12 rm 命令(萬惡之源-多少程序員因?yàn)榍昧怂苈罚?/p>
刪除一個(gè)目錄中的一個(gè)或多個(gè)文件或目錄,如果沒有使用 -r 選項(xiàng)锰什,則 rm 不會(huì)刪除目錄下硕。如果使用 rm 來刪除文件丁逝,通常仍可以將該文件恢復(fù)原狀。
rm?[選項(xiàng)]?文件…
實(shí)例:
(1)刪除任何 .log 文件卵牍,刪除前逐一詢問確認(rèn):
rm?-i?*.log
(2)刪除 test 子目錄及子目錄中所有檔案刪除果港,并且不用一一確認(rèn):
rm?-rftest
(3)刪除以 -f 開頭的文件
rm?--?-f*
3.13 tail 命令
從文件末尾查看日志
常用參數(shù):
-f?循環(huán)讀取(常用于查看遞增的日志文件)
-n<行數(shù)>?顯示行數(shù)(從后向前)
例子
tail?-f?ping.log
3.14 touch 命令
Linux touch命令用于修改文件或者目錄的時(shí)間屬性糊昙,包括存取時(shí)間和更改時(shí)間。若文件不存在谢谦,系統(tǒng)會(huì)建立一個(gè)新的文件释牺。
ls -l 可以顯示檔案的時(shí)間記錄。
語法
touch?[-acfm][-d<日期時(shí)間>][-r<參考文件或目錄>]?[-t<日期時(shí)間>][--help][--version][文件或目錄…]
參數(shù)說明:
a?改變檔案的讀取時(shí)間記錄回挽。
m?改變檔案的修改時(shí)間記錄没咙。
c?假如目的檔案不存在,不會(huì)建立新的檔案千劈。與?--no-create?的效果一樣祭刚。
f?不使用,是為了與其他?unix?系統(tǒng)的相容性而保留墙牌。
r?使用參考檔的時(shí)間記錄涡驮,與?--file?的效果一樣。
d?設(shè)定時(shí)間與日期喜滨,可以使用各種不同的格式捉捅。
t?設(shè)定檔案的時(shí)間記錄,格式與?date?指令相同虽风。
–no-create?不會(huì)建立新檔案棒口。
–help列出指令格式。
–version?列出版本訊息辜膝。
實(shí)例
使用指令"touch"修改文件"testfile"的時(shí)間屬性為當(dāng)前系統(tǒng)時(shí)間无牵,輸入如下命令:
$?touch?testfile#修改文件的時(shí)間屬性?
首先,使用ls命令查看testfile文件的屬性厂抖,如下所示:
$?ls?-l?testfile#查看文件的時(shí)間屬性??
#原來文件的修改時(shí)間為16:09??
-rw-r--r--?1?hdd?hdd?55?2011-08-22?16:09?testfile
執(zhí)行指令"touch"修改文件屬性以后茎毁,并再次查看該文件的時(shí)間屬性,如下所示:
$?touch?testfile#修改文件時(shí)間屬性為當(dāng)前系統(tǒng)時(shí)間??
$?ls?-l?testfile#查看文件的時(shí)間屬性??
#修改后文件的時(shí)間屬性為當(dāng)前系統(tǒng)時(shí)間??
-rw-r--r--?1?hdd?hdd?55?2011-08-22?19:53?testfile
使用指令"touch"時(shí)验游,如果指定的文件不存在充岛,則將創(chuàng)建一個(gè)新的空白文件。例如耕蝉,在當(dāng)前目錄下崔梗,使用該指令創(chuàng)建一個(gè)空白文件"file",輸入如下命令:
$?touch?file#創(chuàng)建一個(gè)名為“file”的新的空白文件?
3.15 vim 命令
Vim是從 vi 發(fā)展出來的一個(gè)文本編輯器垒在。代碼補(bǔ)完蒜魄、編譯及錯(cuò)誤跳轉(zhuǎn)等方便編程的功能特別豐富扔亥,在程序員中被廣泛使用。
打開文件并跳到第 10 行:vim +10 filename.txt 谈为。
打開文件跳到第一個(gè)匹配的行:vim +/search-term filename.txt 旅挤。
以只讀模式打開文件:vim -R /etc/passwd 。
基本上 vi/vim 共分為三種模式伞鲫,分別是命令模式(Command mode)粘茄,輸入模式(Insert mode)和底線命令模式(Last line mode)。
一圖勝千言:
3.16 whereis 命令
whereis 命令
whereis 命令只能用于程序名的搜索秕脓,而且只搜索二進(jìn)制文件(參數(shù)-b)柒瓣、man說明文件(參數(shù)-m)和源代碼文件(參數(shù)-s)。如果省略參數(shù)吠架,則返回所有信息芙贫。whereis 及 locate 都是基于系統(tǒng)內(nèi)建的數(shù)據(jù)庫進(jìn)行搜索,因此效率很高傍药,而find則是遍歷硬盤查找文件磺平。
常用參數(shù):
-b???定位可執(zhí)行文件。
-m???定位幫助文件拐辽。
-s???定位源代碼文件拣挪。
-u???搜索默認(rèn)路徑下除可執(zhí)行文件、源代碼文件薛训、幫助文件以外的其它文件媒吗。
實(shí)例:
(1)查找 locate 程序相關(guān)文件
whereis?locate
(2)查找 locate 的源碼文件
whereis?-s?locate
(3)查找 lcoate 的幫助文件
whereis?-m?locate
3.17 which 命令
在 linux 要查找某個(gè)文件,但不知道放在哪里了乙埃,可以使用下面的一些命令來搜索:
which查看可執(zhí)行文件的位置闸英。
whereis?查看文件的位置。
locate??配合數(shù)據(jù)庫查看文件位置介袜。
find????????實(shí)際搜尋硬盤查詢文件名稱甫何。
which 是在 PATH 就是指定的路徑中,搜索某個(gè)系統(tǒng)命令的位置遇伞,并返回第一個(gè)搜索結(jié)果辙喂。使用 which 命令,就可以看到某個(gè)系統(tǒng)命令是否存在鸠珠,以及執(zhí)行的到底是哪一個(gè)位置的命令巍耗。
常用參數(shù):
-n??指定文件名長度,指定的長度必須大于或等于所有文件中最長的文件名渐排。
實(shí)例:
(1)查看 ls 命令是否存在炬太,執(zhí)行哪個(gè)
whichls
(2)查看 which
whichwhich
(3)查看 cd
whichcd(顯示不存在,因?yàn)閏d是內(nèi)建命令驯耻,而which查找顯示是?PATH?中的命令)
4. 文檔編輯命令
4.1 grep 命令
強(qiáng)大的文本搜索命令亲族,grep
命令格式:
grep?[option]?pattern?file|dir
常用參數(shù):
-A?n?--after-context顯示匹配字符后n行
-B?n?--before-context顯示匹配字符前n行
-C?n?--context?顯示匹配字符前后n行
-c?--count?計(jì)算符合樣式的列數(shù)
-i?忽略大小寫
-l?只列出文件內(nèi)容符合指定的樣式的文件名稱
-f?從文件中讀取關(guān)鍵詞
-n?顯示匹配內(nèi)容的所在文件中行數(shù)
-R?遞歸查找文件夾
grep 的規(guī)則表達(dá)式:
^#?如:'^grep'匹配所有以grep開頭的行炒考。?
$#?如:'grep$'匹配所有以grep結(jié)尾的行。?
.#?如:'gr.p'匹配gr后接一個(gè)任意字符霎迫,然后是p斋枢。??
*#?如:'*grep'匹配所有一個(gè)或多個(gè)空格后緊跟grep的行。
.*#?任意字符知给。??
[]#匹配指定字符瓤帚,如'[Gg]rep'匹配Grep和grep。?
[^]#匹配不在指定字符炼鞠,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一個(gè)字母開頭缘滥,緊跟rep的行。??
\(..\)#標(biāo)記匹配字符谒主,如'\(love\)',love被標(biāo)記為1赃阀。???
\<#錨定單詞的開始霎肯,如:'\<grep'匹配包含以grep開頭的單詞的行。
\>#錨定單詞的結(jié)束榛斯,如'grep\>'匹配包含以grep結(jié)尾的單詞的行观游。
x\{m\}#重復(fù)字符x,m次驮俗,如:'0\{5\}'匹配包含5個(gè)o的行懂缕。?
x\{m,\}#重復(fù)字符x,至少m次,如:'o\{5,\}'匹配至少有5個(gè)o的行王凑。??
x\{m,n\}#重復(fù)字符x搪柑,至少m次,不多于n次索烹,如:'o\{5,10\}'匹配5--10個(gè)o的行工碾。??
\w#匹配文字和數(shù)字,如:'G\w*p'匹配以G后跟零個(gè)或多個(gè)文字或數(shù)字字符百姓,然后是p渊额。??
\W#\w的反置形式,匹配一個(gè)或多個(gè)非單詞字符垒拢,如點(diǎn)號(hào)句號(hào)等旬迹。??
\b#單詞鎖定符,如:?'\bgrep\b'只匹配grep求类。
實(shí)例:
(1)查找指定進(jìn)程
ps?-ef?|?grep?svn
(2)查找指定進(jìn)程個(gè)數(shù)
ps?-ef?|?grep?svn?-c
(3)從文件中讀取關(guān)鍵詞
cat?test1.txt?|?grep?-f?key.log
(4)從文件夾中遞歸查找以grep開頭的行奔垦,并只列出文件
grep?-lR'^grep'/tmp
(5)查找非x開關(guān)的行內(nèi)容
grep'^[^x]'test.txt
(6)顯示包含 ed 或者 at 字符的內(nèi)容行
grep?-E'ed|at'test.txt
4.2 wc 命令
wc(word count)功能為統(tǒng)計(jì)指定的文件中字節(jié)數(shù)、字?jǐn)?shù)仑嗅、行數(shù)宴倍,并將統(tǒng)計(jì)結(jié)果輸出
命令格式:
wc?[option]?file..
命令參數(shù):
-c?統(tǒng)計(jì)字節(jié)數(shù)
-l?統(tǒng)計(jì)行數(shù)
-m?統(tǒng)計(jì)字符數(shù)
-w?統(tǒng)計(jì)詞數(shù)张症,一個(gè)字被定義為由空白、跳格或換行字符分隔的字符串
實(shí)例:
(1)查找文件的 行數(shù) 單詞數(shù) 字節(jié)數(shù) 文件名
wc?text.txt
結(jié)果:
7?????8?????70?????test.txt
(2)統(tǒng)計(jì)輸出結(jié)果的行數(shù)
cat?test.txt?|?wc?-l
5. 磁盤管理命令
5.1 cd 命令
實(shí)例:
(1)進(jìn)入要目錄
cd/
(2)進(jìn)入 “home” 目錄
cd~
(3)進(jìn)入上一次工作路徑
cd-
(4)把上個(gè)命令的參數(shù)作為cd參數(shù)使用鸵贬。
cd!$
5.2 df 命令
df 命令
顯示磁盤空間使用情況俗他。
-a?全部文件系統(tǒng)列表
-h?以方便閱讀的方式顯示信息
-i?顯示inode信息
-k?區(qū)塊為1024字節(jié)
-l?只顯示本地磁盤
-T?列出文件系統(tǒng)類型
實(shí)例:
(1)顯示磁盤使用情況
df?-l
(2)以易讀方式列出所有文件系統(tǒng)及其類型
df?-haT
5.3 du 命令
du 命令也是查看使用空間的,但是與 df 命令不同的是 Linux du 命令是對(duì)文件和目錄磁盤使用的空間的查看:
命令格式:
du?[選項(xiàng)]?[文件]
常用參數(shù):
-a?顯示目錄中所有文件大小
-k?以KB為單位顯示文件大小
-m?以MB為單位顯示文件大小
-g?以GB為單位顯示文件大小
-h?以易讀方式顯示文件大小
-s?僅顯示總計(jì)
-c或--total??除了顯示個(gè)別目錄或文件的大小外阔逼,同時(shí)也顯示所有目錄或文件的總和
實(shí)例:
(1)以易讀方式顯示文件夾內(nèi)及子文件夾大小
du?-h?scf/
(2)以易讀方式顯示文件夾內(nèi)所有文件大小
du?-ah?scf/
(3)顯示幾個(gè)文件或目錄各自占用磁盤空間的大小兆衅,還統(tǒng)計(jì)它們的總和
du?-hctest/?scf/
(4)輸出當(dāng)前目錄下各個(gè)子目錄所使用的空間
du?-hc?--max-depth=1?scf/
5.4 ls命令
就是 list 的縮寫,通過 ls 命令不僅可以查看 linux 文件夾包含的文件嗜浮,而且可以查看文件權(quán)限(包括目錄羡亩、文件夾、文件權(quán)限)查看目錄信息等等危融。
常用參數(shù)搭配:
ls?-a?列出目錄所有文件畏铆,包含以.開始的隱藏文件
ls?-A?列出除.及..的其它文件
ls?-r?反序排列
ls?-t?以文件修改時(shí)間排序
ls?-S?以文件大小排序
ls?-h?以易讀大小顯示
ls?-l?除了文件名之外,還將文件的權(quán)限吉殃、所有者辞居、文件大小等信息詳細(xì)列出來
實(shí)例:
(1) 按易讀方式按時(shí)間反序排序,并顯示文件詳細(xì)信息
ls?-lhrt
(2) 按大小反序顯示文件詳細(xì)信息
ls?-lrS
(3)列出當(dāng)前目錄中所有以"t"開頭的目錄的詳細(xì)內(nèi)容
ls?-l?t*
(4) 列出文件絕對(duì)路徑(不包含隱藏文件)
ls?|?sed"s:^:`pwd`/:"
(5) 列出文件絕對(duì)路徑(包含隱藏文件)
find$pwd-maxdepth?1?|?xargs?ls?-ld
5.5 mkdir 命令
mkdir 命令用于創(chuàng)建文件夾蛋勺。
可用選項(xiàng):
-m:?對(duì)新建目錄設(shè)置存取權(quán)限瓦灶,也可以用?chmod?命令設(shè)置;
-p:?可以是一個(gè)路徑名稱。此時(shí)若路徑中的某些目錄尚不存在,加上此選項(xiàng)后抱完,系統(tǒng)將自動(dòng)建立好那些尚不在的目錄贼陶,即一次可以建立多個(gè)目錄。
實(shí)例:
(1)當(dāng)前工作目錄下創(chuàng)建名為 t的文件夾
mkdir?t
(2)在 tmp 目錄下創(chuàng)建路徑為 test/t1/t 的目錄巧娱,若不存在碉怔,則創(chuàng)建:
mkdir?-p?/tmp/test/t1/t
5.6 pwd 命令
pwd 命令用于查看當(dāng)前工作目錄路徑。
實(shí)例:
(1)查看當(dāng)前路徑
pwd
(2)查看軟鏈接的實(shí)際路徑
pwd-P
5.7 rmdir 命令
從一個(gè)目錄中刪除一個(gè)或多個(gè)子目錄項(xiàng)家卖,刪除某目錄時(shí)也必須具有對(duì)其父目錄的寫權(quán)限眨层。
注意:不能刪除非空目錄
實(shí)例:
當(dāng) parent 子目錄被刪除后使它也成為空目錄的話,則順便一并刪除:
rmdir?-p?parent/child/child11
6. 網(wǎng)絡(luò)通訊命令
6.1 ifconfig 命令
ifconfig 命令
ifconfig 用于查看和配置 Linux 系統(tǒng)的網(wǎng)絡(luò)接口上荡。
查看所有網(wǎng)絡(luò)接口及其狀態(tài):ifconfig -a 趴樱。
使用 up 和 down 命令啟動(dòng)或停止某個(gè)接口:ifconfig eth0 up 和 ifconfig eth0 down 。
6.2 iptables 命令
iptables 命令
iptables 酪捡,是一個(gè)配置 Linux 內(nèi)核防火墻的命令行工具叁征。功能非常強(qiáng)大,對(duì)于我們開發(fā)來說逛薇,主要掌握如何開放端口即可捺疼。例如:
把來源 IP 為 192.168.1.101 訪問本機(jī) 80 端口的包直接拒絕:iptables -I INPUT -s 192.168.1.101 -p tcp --dport 80 -j REJECT 。
開啟 80 端口永罚,因?yàn)閣eb對(duì)外都是這個(gè)端口
iptables?-A?INPUT?-p?tcp?--dport?80?-j?ACCEP
另外啤呼,要注意使用?iptables?save?命令卧秘,進(jìn)行保存。否則官扣,服務(wù)器重啟后翅敌,配置的規(guī)則將丟失。
6.3 netstat 命令
netstat 命令
Linux netstat命令用于顯示網(wǎng)絡(luò)狀態(tài)惕蹄。
利用netstat指令可讓你得知整個(gè)Linux系統(tǒng)的網(wǎng)絡(luò)情況蚯涮。
語法
netstat?[-acCeFghilMnNoprstuvVwx][-A<網(wǎng)絡(luò)類型>][--ip]
參數(shù)說明:
-a或–all?顯示所有連線中的Socket。
-A<網(wǎng)絡(luò)類型>或–<網(wǎng)絡(luò)類型>?列出該網(wǎng)絡(luò)類型連線中的相關(guān)地址卖陵。
-c或–continuous?持續(xù)列出網(wǎng)絡(luò)狀態(tài)遭顶。
-C或–cache?顯示路由器配置的快取信息。
-e或–extend?顯示網(wǎng)絡(luò)其他相關(guān)信息泪蔫。
-F或–fib?顯示FIB棒旗。
-g或–groups?顯示多重廣播功能群組組員名單。
-h或–help在線幫助撩荣。
-i或–interfaces?顯示網(wǎng)絡(luò)界面信息表單嗦哆。
-l或–listening?顯示監(jiān)控中的服務(wù)器的Socket。
-M或–masquerade?顯示偽裝的網(wǎng)絡(luò)連線婿滓。
-n或–numeric?直接使用IP地址,而不通過域名服務(wù)器粥喜。
-N或–netlink或–symbolic?顯示網(wǎng)絡(luò)硬件外圍設(shè)備的符號(hào)連接名稱凸主。
-o或–timers?顯示計(jì)時(shí)器。
-p或–programs?顯示正在使用Socket的程序識(shí)別碼和程序名稱额湘。
-r或–route?顯示Routing?Table卿吐。
-s或–statistice?顯示網(wǎng)絡(luò)工作信息統(tǒng)計(jì)表。
-t或–tcp?顯示TCP傳輸協(xié)議的連線狀況锋华。
-u或–udp?顯示UDP傳輸協(xié)議的連線狀況嗡官。
-v或–verbose?顯示指令執(zhí)行過程。
-V或–version?顯示版本信息毯焕。
-w或–raw?顯示RAW傳輸協(xié)議的連線狀況衍腥。
-x或–unix?此參數(shù)的效果和指定"-A?unix"參數(shù)相同。
–ip或–inet?此參數(shù)的效果和指定"-A?inet"參數(shù)相同纳猫。
實(shí)例
如何查看系統(tǒng)都開啟了哪些端口婆咸?
[root@centos6?~?13:20#55]#?netstat?-lnp
Active?Internet?connections?(only?servers)
Proto?Recv-Q?Send-Q?Local?Address???????????????Foreign?Address?????????????State???????PID/Program?name
tcp????????0??????0?0.0.0.0:22??????????????????0.0.0.0:*???????????????????LISTEN??????1035/sshd
tcp????????0??????0?:::22???????????????????????:::*????????????????????????LISTEN??????1035/sshd
udp????????0??????0?0.0.0.0:68??????????????????0.0.0.0:*???????????????????????????????931/dhclient
Active?UNIX?domain?sockets?(only?servers)
Proto?RefCnt?Flags???????Type???????State?????????I-Node?PID/Program?name????Path
unix??2??????[?ACC?]?????STREAM?????LISTENING?????6825???1/init??????????????@/com/ubuntu/upstart
unix??2??????[?ACC?]?????STREAM?????LISTENING?????8429???1003/dbus-daemon????/var/run/dbus/system_bus_socket
如何查看網(wǎng)絡(luò)連接狀況?
[root@centos6?~?13:22#58]#?netstat?-an
Active?Internet?connections?(servers?and?established)
Proto?Recv-Q?Send-Q?Local?Address???????????????Foreign?Address?????????????State
tcp????????0??????0?0.0.0.0:22??????????????????0.0.0.0:*???????????????????LISTEN
tcp????????0??????0?192.168.147.130:22??????????192.168.147.1:23893?????????ESTABLISHED
tcp????????0??????0?:::22???????????????????????:::*????????????????????????LISTEN
udp????????0??????0?0.0.0.0:68??????????????????0.0.0.0:*
如何統(tǒng)計(jì)系統(tǒng)當(dāng)前進(jìn)程連接數(shù)芜辕?
輸入命令?netstat?-an?|?grep?ESTABLISHED?|?wc?-l?尚骄。
輸出結(jié)果?177?。一共有?177?連接數(shù)侵续。
6.4 ping 命令
ping 命令
Linux ping命令用于檢測主機(jī)倔丈。
執(zhí)行ping指令會(huì)使用ICMP傳輸協(xié)議憨闰,發(fā)出要求回應(yīng)的信息,若遠(yuǎn)端主機(jī)的網(wǎng)絡(luò)功能沒有問題需五,就會(huì)回應(yīng)該信息鹉动,因而得知該主機(jī)運(yùn)作正常。
指定接收包的次數(shù)
ping?-c?2?www.baidu.com
6.5 telnet 命令
telnet 命令
Linux telnet命令用于遠(yuǎn)端登入警儒。
執(zhí)行telnet指令開啟終端機(jī)階段作業(yè)训裆,并登入遠(yuǎn)端主機(jī)。
語法
telnet?[-8acdEfFKLrx][-b<主機(jī)別名>][-e<脫離字符>][-k<域名>][-l<用戶名稱>][-n<記錄文件>][-S<服務(wù)類型>][-X<認(rèn)證形態(tài)>][主機(jī)名稱或IP地址<通信端口>]
參數(shù)說明:
-8?允許使用8位字符資料蜀铲,包括輸入與輸出边琉。
-a?嘗試自動(dòng)登入遠(yuǎn)端系統(tǒng)。
-b<主機(jī)別名>?使用別名指定遠(yuǎn)端主機(jī)名稱记劝。
-c?不讀取用戶專屬目錄里的.telnetrc文件变姨。
-d?啟動(dòng)排錯(cuò)模式。
-e<脫離字符>?設(shè)置脫離字符厌丑。
-E?濾除脫離字符定欧。
-f?此參數(shù)的效果和指定"-F"參數(shù)相同。
-F?使用Kerberos?V5認(rèn)證時(shí),加上此參數(shù)可把本地主機(jī)的認(rèn)證數(shù)據(jù)上傳到遠(yuǎn)端主機(jī)堰塌。
-k<域名>?使用Kerberos認(rèn)證時(shí)践瓷,加上此參數(shù)讓遠(yuǎn)端主機(jī)采用指定的領(lǐng)域名,而非該主機(jī)的域名爷辱。
-K?不自動(dòng)登入遠(yuǎn)端主機(jī)。
-l<用戶名稱>?指定要登入遠(yuǎn)端主機(jī)的用戶名稱朦肘。
-L?允許輸出8位字符資料饭弓。
-n<記錄文件>?指定文件記錄相關(guān)信息。
-r?使用類似rlogin指令的用戶界面媒抠。
-S<服務(wù)類型>?設(shè)置telnet連線所需的IP?TOS信息弟断。
-x?假設(shè)主機(jī)有支持?jǐn)?shù)據(jù)加密的功能,就使用它趴生。
-X<認(rèn)證形態(tài)>?關(guān)閉指定的認(rèn)證形態(tài)阀趴。
實(shí)例
登錄遠(yuǎn)程主機(jī)
#?登錄IP為?192.168.0.5?的遠(yuǎn)程主機(jī)
telnet?192.168.0.5
7. 系統(tǒng)管理命令
7.1 date 命令
date 命令
顯示或設(shè)定系統(tǒng)的日期與時(shí)間。
命令參數(shù):
-d<字符串>??顯示字符串所指的日期與時(shí)間冲秽。字符串前后必須加上雙引號(hào)舍咖。
-s<字符串>??根據(jù)字符串來設(shè)置日期與時(shí)間。字符串前后必須加上雙引號(hào)锉桑。
-u??顯示GMT排霉。
%H?小時(shí)(00-23)
%I?小時(shí)(00-12)
%M?分鐘(以00-59來表示)
%s?總秒數(shù)。起算時(shí)間為1970-01-01?00:00:00?UTC。
%S?秒(以本地的慣用法來表示)
%a?星期的縮寫攻柠。
%A?星期的完整名稱球订。
%d?日期(以01-31來表示)。
%D?日期(含年月日)瑰钮。
%m?月份(以01-12來表示)冒滩。
%y?年份(以00-99來表示)。
%Y?年份(以四位數(shù)來表示)浪谴。
實(shí)例:
(1)顯示下一天
date?+%Y%m%d?--date="+1?day"http://顯示下一天的日期
(2)-d參數(shù)使用
date?-d"nov?22"今年的?11?月?22?日是星期三
date?-d'2?weeks'2周后的日期
date?-d'next?monday'(下周一的日期)
date?-d?next-day?+%Y%m%d(明天的日期)或者:date?-d?tomorrow?+%Y%m%d
date?-d?last-day?+%Y%m%d(昨天的日期)?或者:date?-d?yesterday?+%Y%m%d
date?-d?last-month?+%Y%m(上個(gè)月是幾月)
date?-d?next-month?+%Y%m(下個(gè)月是幾月)
7.2 free 命令
free 命令
顯示系統(tǒng)內(nèi)存使用情況开睡,包括物理內(nèi)存、交互區(qū)內(nèi)存(swap)和內(nèi)核緩沖區(qū)內(nèi)存苟耻。
命令參數(shù):
-b?以Byte顯示內(nèi)存使用情況
-k?以kb為單位顯示內(nèi)存使用情況
-m?以mb為單位顯示內(nèi)存使用情況
-g?以gb為單位顯示內(nèi)存使用情況
-s<間隔秒數(shù)>?持續(xù)顯示內(nèi)存
-t?顯示內(nèi)存使用總合
實(shí)例:
(1)顯示內(nèi)存使用情況
free
free?-k
free?-m
(2)以總和的形式顯示內(nèi)存的使用信息
free?-t
(3)周期性查詢內(nèi)存使用情況
free?-s?10
7.3 kill 命令
kill 命令
如果任無法終止該程序可用"-KILL" 參數(shù)篇恒,
SIGTERM(15)終止指定進(jìn)程
SIGKILL(9) 將強(qiáng)制結(jié)束進(jìn)程
root用戶將影響用戶的進(jìn)程
非root用戶只能影響自己的進(jìn)程。
常用參數(shù):
-l??信號(hào)凶杖,若果不加信號(hào)的編號(hào)參數(shù)胁艰,則使用“-l”參數(shù)會(huì)列出全部的信號(hào)名稱
-a??當(dāng)處理當(dāng)前進(jìn)程時(shí),不限制命令名和進(jìn)程號(hào)的對(duì)應(yīng)關(guān)系
-p??指定kill命令只打印相關(guān)進(jìn)程的進(jìn)程號(hào)智蝠,而不發(fā)送任何信號(hào)
-s??指定發(fā)送信號(hào)
-u??指定用戶
實(shí)例:
(1)先使用ps查找進(jìn)程pro1腾么,然后用kill殺掉
kill-9?$(ps?-ef?|?grep?pro1)
7.4 ps 命令
ps 查看進(jìn)程狀態(tài)
linux上進(jìn)程有5種狀態(tài):
運(yùn)行(正在運(yùn)行或在運(yùn)行隊(duì)列中等待)
中斷(休眠中, 受阻, 在等待某個(gè)條件的形成或接受到信號(hào))
不可中斷(收到信號(hào)不喚醒和不可運(yùn)行, 進(jìn)程必須等待直到有中斷發(fā)生)
僵死(進(jìn)程已終止, 但進(jìn)程描述符存在, 直到父進(jìn)程調(diào)用wait4()系統(tǒng)調(diào)用后釋放)
停止(進(jìn)程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號(hào)后停止運(yùn)行運(yùn)行)
5種狀態(tài)碼:
D?不可中斷?uninterruptible?sleep?(usually?IO)
R?運(yùn)行?runnable?(on?run?queue)
S?中斷?sleeping
T?停止?traced?or?stopped
Z?僵死?a?defunct?(”zombie”)?process
命令參數(shù):
-A?顯示所有進(jìn)程
a?顯示所有進(jìn)程
-a?顯示同一終端下所有進(jìn)程
c?顯示進(jìn)程真實(shí)名稱
e?顯示環(huán)境變量
f?顯示進(jìn)程間的關(guān)系
r?顯示當(dāng)前終端運(yùn)行的進(jìn)程
-aux?顯示所有包含其它使用的進(jìn)程
實(shí)例:
(1)顯示當(dāng)前所有進(jìn)程環(huán)境變量及進(jìn)程間關(guān)系
ps?-ef
(2)顯示當(dāng)前所有進(jìn)程
ps?-A
(3)與grep聯(lián)用查找某進(jìn)程
ps?-aux?|?grep?apache
(4)找出與 cron 與 syslog 這兩個(gè)服務(wù)有關(guān)的 PID 號(hào)碼
ps?aux?|?grep'(cron|syslog)'
7.5 rpm 命令
rpm 命令
Linux rpm 命令用于管理套件。
rpm(redhat package manager) 原本是 Red Hat Linux 發(fā)行版專門用來管理 Linux 各項(xiàng)套件的程序杈湾,由于它遵循 GPL 規(guī)則且功能強(qiáng)大方便解虱,因而廣受歡迎。逐漸受到其他發(fā)行版的采用漆撞。RPM 套件管理方式的出現(xiàn)饭寺,讓 Linux 易于安裝,升級(jí)叫挟,間接提升了 Linux 的適用度。
#?查看系統(tǒng)自帶jdk
rpm?-qa?|?grep?jdk
#?刪除系統(tǒng)自帶jdk
rpm?-e?--nodeps?查看jdk顯示的數(shù)據(jù)
#?安裝jdk
rpm?-ivh?jdk-7u80-linux-x64.rpm
7.6 top 命令
top 命令
顯示當(dāng)前系統(tǒng)正在執(zhí)行的進(jìn)程的相關(guān)信息限煞,包括進(jìn)程 ID抹恳、內(nèi)存占用率、CPU 占用率等
常用參數(shù):
-c?顯示完整的進(jìn)程命令
-s?保密模式
-p?<進(jìn)程號(hào)>?指定進(jìn)程顯示
-n?<次數(shù)>循環(huán)顯示次數(shù)
實(shí)例:
top?-?14:06:23?up?70?days,?16:44,??2?users,??load?average:?1.25,?1.32,?1.35
Tasks:?206?total,???1?running,?205?sleeping,???0?stopped,???0?zombie
Cpu(s):??5.9%us,??3.4%sy,??0.0%ni,?90.4%id,??0.0%wa,??0.0%hi,??0.2%si,??0.0%st
Mem:??32949016k?total,?14411180k?used,?18537836k?free,???169884k?buffers
Swap:?32764556k?total,????????0k?used,?32764556k?free,??3612636k?cached
PID?USER??????PR??NI??VIRT??RES??SHR?S?%CPU?%MEM????TIME+??COMMAND
28894?root??????22???0?1501m?405m??10m?S?52.2??1.3???2534:16?java
前五行是當(dāng)前系統(tǒng)情況整體的統(tǒng)計(jì)信息區(qū)署驻。
第一行奋献,任務(wù)隊(duì)列信息,同 uptime 命令的執(zhí)行結(jié)果旺上,具體參數(shù)說明情況如下:
14:06:23 — 當(dāng)前系統(tǒng)時(shí)間
up 70 days, 16:44 — 系統(tǒng)已經(jīng)運(yùn)行了70天16小時(shí)44分鐘(在這期間系統(tǒng)沒有重啟過的)
2 users — 當(dāng)前有2個(gè)用戶登錄系統(tǒng)
load average: 1.15, 1.42, 1.44 — load average后面的三個(gè)數(shù)分別是1分鐘杭攻、5分鐘埠巨、15分鐘的負(fù)載情況乍构。
load average數(shù)據(jù)是每隔5秒鐘檢查一次活躍的進(jìn)程數(shù),然后按特定算法計(jì)算出的數(shù)值松蒜。如果這個(gè)數(shù)除以邏輯CPU的數(shù)量玖瘸,結(jié)果高于5的時(shí)候就表明系統(tǒng)在超負(fù)荷運(yùn)轉(zhuǎn)了。
第二行趴久,Tasks — 任務(wù)(進(jìn)程)弛作,具體信息說明如下:
系統(tǒng)現(xiàn)在共有206個(gè)進(jìn)程旭旭,其中處于運(yùn)行中的有1個(gè)模庐,205個(gè)在休眠(sleep)赖欣,stoped狀態(tài)的有0個(gè),zombie狀態(tài)(僵尸)的有0個(gè)验庙。
第三行顶吮,cpu狀態(tài)信息,具體屬性說明如下:
5.9%us?—?用戶空間占用CPU的百分比粪薛。
3.4%?sy?—?內(nèi)核空間占用CPU的百分比悴了。
0.0%?ni?—?改變過優(yōu)先級(jí)的進(jìn)程占用CPU的百分比
90.4%?id?—?空閑CPU百分比
0.0%?wa?—?IO等待占用CPU的百分比
0.0%?hi?—?硬中斷(Hardware?IRQ)占用CPU的百分比
0.2%?si?—?軟中斷(Software?Interrupts)占用CPU的百分比
備注:在這里CPU的使用比率和windows概念不同,需要理解linux系統(tǒng)用戶空間和內(nèi)核空間的相關(guān)知識(shí)!
第四行湃交,內(nèi)存狀態(tài)熟空,具體信息如下:
32949016k?total?—?物理內(nèi)存總量(32GB)
14411180k?used?—?使用中的內(nèi)存總量(14GB)
18537836k?free?—?空閑內(nèi)存總量(18GB)
169884k?buffers?—?緩存的內(nèi)存量?(169M)
第五行,swap交換分區(qū)信息搞莺,具體信息說明如下:
32764556k?total?—?交換區(qū)總量(32GB)
0k?used?—?使用的交換區(qū)總量(0K)
32764556k?free?—?空閑交換區(qū)總量(32GB)
3612636k?cached?—?緩沖的交換區(qū)總量(3.6GB)
第六行息罗,空行。
第七行以下:各進(jìn)程(任務(wù))的狀態(tài)監(jiān)控才沧,項(xiàng)目列信息說明如下:
PID?—?進(jìn)程id
USER?—?進(jìn)程所有者
PR?—?進(jìn)程優(yōu)先級(jí)
NI?—?nice值迈喉。負(fù)值表示高優(yōu)先級(jí),正值表示低優(yōu)先級(jí)
VIRT?—?進(jìn)程使用的虛擬內(nèi)存總量温圆,單位kb挨摸。VIRT=SWAP+RES
RES?—?進(jìn)程使用的、未被換出的物理內(nèi)存大小岁歉,單位kb得运。RES=CODE+DATA
SHR?—?共享內(nèi)存大小,單位kb
S?—?進(jìn)程狀態(tài)锅移。D=不可中斷的睡眠狀態(tài)?R=運(yùn)行?S=睡眠?T=跟蹤/停止?Z=僵尸進(jìn)程
%CPU?—?上次更新到現(xiàn)在的CPU時(shí)間占用百分比
%MEM?—?進(jìn)程使用的物理內(nèi)存百分比
TIME+?—?進(jìn)程使用的CPU時(shí)間總計(jì)熔掺,單位1/100秒
COMMAND?—?進(jìn)程名稱(命令名/命令行)
top 交互命令
h?顯示top交互命令幫助信息
c?切換顯示命令名稱和完整命令行
m?以內(nèi)存使用率排序
P?根據(jù)CPU使用百分比大小進(jìn)行排序
T?根據(jù)時(shí)間/累計(jì)時(shí)間進(jìn)行排序
W?將當(dāng)前設(shè)置寫入~/.toprc文件中
o或者O?改變顯示項(xiàng)目的順序
7.7? yum 命令
yum 命令
yum 前端軟件包管理器。
yum提供了查找帆啃、安裝瞬女、刪除某一個(gè)、一組甚至全部軟件包的命令努潘,而且命令簡潔而又好記诽偷。
1.列出所有可更新的軟件清單命令:yum?check-update
2.更新所有軟件命令:yum?update
3.僅安裝指定的軟件命令:yum?install?
4.僅更新指定的軟件命令:yum?update?
5.列出所有可安裝的軟件清單命令:yum?list
6.刪除軟件包命令:yum?remove?
7.查找軟件包?命令:yum?search
8.清除緩存命令:
yum?clean?packages:?清除緩存目錄下的軟件包
yum?clean?headers:?清除緩存目錄下的?headers
yum?clean?oldheaders:?清除緩存目錄下舊的?headers
yum?clean,?yum?clean?all?(=?yum?clean?packages;?yum?clean?oldheaders)?:清除緩存目錄下的軟件包及舊的headers
實(shí)例
安裝 pam-devel
[root@www?~]#?yum?install?pam-devel
8. 備份壓縮命令
8.1 bzip2 命令
創(chuàng)建 *.bz2 壓縮文件:bzip2 test.txt 。
解壓 *.bz2 文件:bzip2 -d test.txt.bz2 疯坤。
8.2 gzip 命令
gzip 命令
創(chuàng)建一個(gè) *.gz 的壓縮文件:gzip test.txt 报慕。
解壓 *.gz 文件:gzip -d test.txt.gz 。
顯示壓縮的比率:gzip -l *.gz 压怠。
8.3 tar 命令
tar 命令
用來壓縮和解壓文件眠冈。tar 本身不具有壓縮功能,只具有打包功能菌瘫,有關(guān)壓縮及解壓是調(diào)用其它的功能來完成蜗顽。
弄清兩個(gè)概念:打包和壓縮。
打包是指將一大堆文件或目錄變成一個(gè)總的文件雨让;
壓縮則是將一個(gè)大的文件通過一些壓縮算法變成一個(gè)小文件
常用參數(shù):
-c?建立新的壓縮文件
-f?指定壓縮文件
-r?添加文件到已經(jīng)壓縮文件包中
-u?添加改了和現(xiàn)有的文件到壓縮包中
-x?從壓縮包中抽取文件
-t?顯示壓縮文件中的內(nèi)容
-z?支持gzip壓縮
-j?支持bzip2壓縮
-Z?支持compress解壓文件
-v?顯示操作過程
有關(guān) gzip 及 bzip2 壓縮:
gzip 實(shí)例:
壓縮 gzip fileName .tar.gz 和.tgz
解壓:gunzip filename.gz 或 gzip -d filename.gz
對(duì)應(yīng):
tar zcvf filename.tar.gz
tar zxvf filename.tar.gz
bz2實(shí)例:
壓縮 bzip2 -z filename .tar.bz2
解壓:bunzip filename.bz2或bzip -d filename.bz2
對(duì)應(yīng):
tar jcvf filename.tar.gz
tar jxvf filename.tar.bz2
實(shí)例:
(1)將文件全部打包成 tar 包
tar?-cvf?log.tar?1.log,2.log?或tar?-cvflog.*
(2)將 /etc 下的所有文件及目錄打包到指定目錄雇盖,并使用 gz 壓縮
tar?-zcvf?/tmp/etc.tar.gz?/etc
(3)查看剛打包的文件內(nèi)容(一定加z,因?yàn)槭鞘褂?gzip 壓縮的)
tar?-ztvf?/tmp/etc.tar.gz
(4)要壓縮打包 /home, /etc 栖忠,但不要 /home/dmtsai
tar?--exclude?/home/dmtsai?-zcvf?myfile.tar.gz?/home/*?/etc
8.4 unzip 命令
unzip 命令
解壓 *.zip 文件:unzip test.zip 崔挖。
查看 *.zip 文件的內(nèi)容:unzip -l jasper.zip 贸街。
關(guān)注我,加我好友拉你進(jìn)面試群狸相,一起討論面試干貨 / 套路薛匪,大家一起升職加薪
讓我?guī)湍阋?guī)劃下學(xué)習(xí)線路 & 職業(yè)規(guī)劃線路,幫你升職加薪脓鹃。
關(guān)注公眾號(hào):「測試猿溫大大」