【面試-八股文】Linux高頻面試題膨蛮,助你吊打面試官系列

大家好,我是溫大大

繼上次輸出【面試-八股文】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):「測試猿溫大大」

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末逸尖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子将谊,更是在濱河造成了極大的恐慌冷溶,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尊浓,死亡現(xiàn)場離奇詭異逞频,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)栋齿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門苗胀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人瓦堵,你說我怎么就攤上這事基协。” “怎么了菇用?”我有些...
    開封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵澜驮,是天一觀的道長。 經(jīng)常有香客問我惋鸥,道長杂穷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任卦绣,我火速辦了婚禮耐量,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘滤港。我一直安慰自己廊蜒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開白布溅漾。 她就那樣靜靜地躺著山叮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪添履。 梳的紋絲不亂的頭發(fā)上屁倔,一...
    開封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音缝龄,去河邊找鬼汰现。 笑死,一個(gè)胖子當(dāng)著我的面吹牛叔壤,可吹牛的內(nèi)容都是我干的瞎饲。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼炼绘,長吁一口氣:“原來是場噩夢啊……” “哼嗅战!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起俺亮,我...
    開封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤驮捍,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后脚曾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體东且,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年本讥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了珊泳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拷沸,死狀恐怖色查,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情撞芍,我是刑警寧澤秧了,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站序无,受9級(jí)特大地震影響验毡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜愉镰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一米罚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧丈探,春花似錦录择、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至讼渊,卻和暖如春动看,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背爪幻。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來泰國打工菱皆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留须误,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓仇轻,卻偏偏與公主長得像京痢,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子篷店,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

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