史上最全Linux面試題(2020最新版)

一严就、Linux 概述

1. 什么是Linux

Linux是一套免費使用和自由傳播的類Unix操作系統(tǒng)鞭缭,是一個基于POSIX和Unix的多用戶荧关、多任務够颠、支持多線程和多CPU的操作系統(tǒng)。它能運行主要的Unix工具軟件徒坡、應用程序和網(wǎng)絡協(xié)議撕氧。它支持32位和64位硬件瘤缩。Linux繼承了Unix以網(wǎng)絡為核心的設計思想喇完,是一個性能穩(wěn)定的多用戶網(wǎng)絡操作系統(tǒng)。

2. Unix和Linux有什么區(qū)別?

Linux和Unix都是功能強大的操作系統(tǒng)锦溪,都是應用廣泛的服務器操作系統(tǒng)不脯,有很多相似之處,甚至有一部分人錯誤地認為Unix和Linux操作系統(tǒng)是一樣的刻诊,然而防楷,事實并非如此,以下是兩者的區(qū)別则涯。

1. 開源性

Linux是一款開源操作系統(tǒng)复局,不需要付費,即可使用粟判;Unix是一款對源碼實行知識產(chǎn)權(quán)保護的傳統(tǒng)商業(yè)軟件亿昏,使用需要付費授權(quán)使用。

2. 跨平臺性

Linux操作系統(tǒng)具有良好的跨平臺性能档礁,可運行在多種硬件平臺上角钩;Unix操作系統(tǒng)跨平臺性能較弱,大多需與硬件配套使用呻澜。

3. 可視化界面

Linux除了進行命令行操作递礼,還有窗體管理系統(tǒng);Unix只是命令行下的系統(tǒng)羹幸。

4. 硬件環(huán)境

Linux操作系統(tǒng)對硬件的要求較低脊髓,安裝方法更易掌握;Unix對硬件要求比較苛刻栅受,安裝難度較大供炼。

5. 用戶群體

Linux的用戶群體很廣泛,個人和企業(yè)均可使用窘疮;Unix的用戶群體比較窄袋哼,多是安全性要求高的大型企業(yè)使用,如銀行闸衫、電信部門等涛贯,或者Unix硬件廠商使用,如Sun等蔚出。

相比于Unix操作系統(tǒng)弟翘,Linux操作系統(tǒng)更受廣大計算機愛好者的喜愛,主要原因是Linux操作系統(tǒng)具有Unix操作系統(tǒng)的全部功能骄酗,并且能夠在普通PC計算機上實現(xiàn)全部的Unix特性稀余,開源免費的特性,更容易普及使用趋翻!

3. 什么是 Linux 內(nèi)核睛琳?

Linux 系統(tǒng)的核心是內(nèi)核。內(nèi)核控制著計算機系統(tǒng)上的所有硬件和軟件,在必要時分配硬件师骗,并根據(jù)需要執(zhí)行軟件历等。

系統(tǒng)內(nèi)存管理

應用程序管理

硬件設備管理

文件系統(tǒng)管理

4. Linux的基本組件是什么?

就像任何其他典型的操作系統(tǒng)一樣辟癌,Linux擁有所有這些組件:內(nèi)核寒屯,shell和GUI,系統(tǒng)實用程序和應用程序黍少。Linux比其他操作系統(tǒng)更具優(yōu)勢的是每個方面都附帶其他功能寡夹,所有代碼都可以免費下載。

5. Linux 的體系結(jié)構(gòu)

從大的方面講厂置,Linux 體系結(jié)構(gòu)可以分為兩塊:

用戶空間(User Space) :用戶空間又包括用戶的應用程序(User Applications)要出、C 庫(C Library) 。

內(nèi)核空間(Kernel Space) :內(nèi)核空間又包括系統(tǒng)調(diào)用接口(System Call Interface)农渊、內(nèi)核(Kernel)患蹂、平臺架構(gòu)相關(guān)的代碼(Architecture-Dependent Kernel Code) 。

為什么 Linux 體系結(jié)構(gòu)要分為用戶空間和內(nèi)核空間的原因砸紊?

1. 現(xiàn)代 CPU 實現(xiàn)了不同的工作模式传于,不同模式下 CPU 可以執(zhí)行的指令和訪問的寄存器不同匙瘪。

2. Linux 從 CPU 的角度出發(fā)展箱,為了保護內(nèi)核的安全,把系統(tǒng)分成了兩部分骗灶。

用戶空間和內(nèi)核空間是程序執(zhí)行的兩種不同的狀態(tài)游添,我們可以通過兩種方式完成用戶空間到內(nèi)核空間的轉(zhuǎn)移:1)系統(tǒng)調(diào)用系草;2)硬件中斷。

6. BASH和DOS之間的基本區(qū)別是什么唆涝?

BASH和DOS控制臺之間的主要區(qū)別在于3個方面:

1. BASH命令區(qū)分大小寫找都,而DOS命令則不區(qū)分;

2. 在BASH下,/ character是目錄分隔符廊酣,\作為轉(zhuǎn)義字符能耻。在DOS下,/用作命令參數(shù)分隔符亡驰,\是目錄分隔符

3. OS遵循命名文件中的約定晓猛,即8個字符的文件名后跟一個點,擴展名為3個字符凡辱。BASH沒有遵循這樣的慣例戒职。

7. Linux 開機啟動過程?

1透乾、主機加電自檢洪燥,加載 BIOS 硬件信息磕秤。

2、讀取 MBR 的引導文件(GRUB蚓曼、LILO)亲澡。

3钦扭、引導 Linux 內(nèi)核纫版。

4、運行第一個進程 init (進程號永遠為 1 )客情。

5其弊、進入相應的運行級別。

6膀斋、運行終端梭伐,輸入用戶名和密碼。

8. Linux系統(tǒng)缺省的運行級別仰担?

關(guān)機糊识。

單機用戶模式。

字符界面的多用戶模式(不支持網(wǎng)絡)摔蓝。

字符界面的多用戶模式赂苗。

未分配使用。

圖形界面的多用戶模式贮尉。

重啟拌滋。

9. Linux 使用的進程間通信方式?

管道(pipe)猜谚、流管道(s_pipe)败砂、有名管道(FIFO)。

信號(signal) 魏铅。

消息隊列昌犹。

共享內(nèi)存。

信號量览芳。

套接字(socket) 祭隔。

10. Linux 有哪些系統(tǒng)日志文件?

比較重要的是

/var/log/messages日志文件路操。

該日志文件是許多進程日志文件的匯總疾渴,從該文件可以看出任何入侵企圖或成功的入侵。另外屯仗,如果胖友的系統(tǒng)里有 ELK 日志集中收集搞坝,它也會被收集進去。

11. Linux系統(tǒng)安裝多個桌面環(huán)境有幫助嗎魁袜?

通常桩撮,一個桌面環(huán)境敦第,如KDE或Gnome,足以在沒有問題的情況下運行店量。盡管系統(tǒng)允許從一個環(huán)境切換到另一個環(huán)境芜果,但這對用戶來說都是優(yōu)先考慮的問題。有些程序在一個環(huán)境中工作而在另一個環(huán)境中無法工作融师,因此它也可以被視為選擇使用哪個環(huán)境的一個因素右钾。

12. 什么是交換空間?

交換空間是Linux使用的一定空間旱爆,用于臨時保存一些并發(fā)運行的程序舀射。當RAM沒有足夠的內(nèi)存來容納正在執(zhí)行的所有程序時,就會發(fā)生這種情況怀伦。

13. 什么是root帳戶

root帳戶就像一個系統(tǒng)管理員帳戶脆烟,允許你完全控制系統(tǒng)。你可以在此處創(chuàng)建和維護用戶帳戶房待,為每個帳戶分配不同的權(quán)限邢羔。每次安裝Linux時都是默認帳戶。

14. 什么是LILO桑孩?

LILO是Linux的引導加載程序拜鹤。它主要用于將Linux操作系統(tǒng)加載到主內(nèi)存中,以便它可以開始運行洼怔。

15. 什么是BASH署惯?

BASH是Bourne Again SHell的縮寫。它由Steve Bourne編寫镣隶,作為原始Bourne Shell(由/ bin / sh表示)的替代品极谊。它結(jié)合了原始版本的Bourne Shell的所有功能,以及其他功能安岂,使其更容易使用轻猖。從那以后,它已被改編為運行Linux的大多數(shù)系統(tǒng)的默認shell域那。

16. 什么是CLI咙边?

命令行界面(英語**:command-line interface**,縮寫]:CLI)是在圖形用戶界面得到普及之前使用最為廣泛的用戶界面次员,它通常不支持鼠標败许,用戶通過鍵盤輸入指令,計算機接收到指令后淑蔚,予以執(zhí)行市殷。也有人稱之為字符用戶界面(CUI)音羞。

通常認為,命令行界面(CLI)沒有圖形用戶界面(GUI)那么方便用戶操作鲸鹦。因為卿泽,命令行界面的軟件通常需要用戶記憶操作的命令宣羊,但是,由于其本身的特點色难,命令行界面要較圖形用戶界面節(jié)約計算機系統(tǒng)的資源泼舱。在熟記命令的前提下,使用命令行界面往往要較使用圖形用戶界面的操作速度要快枷莉。所以娇昙,圖形用戶界面的操作系統(tǒng)中,都保留著可選的命令行界面笤妙。

17. 什么是GUI冒掌?

圖形用戶界面(Graphical User Interface,簡稱 GUI蹲盘,又稱圖形用戶接口)是指采用圖形方式顯示的計算機操作用戶界面股毫。

圖形用戶界面是一種人與計算機通信的界面顯示格式,允許用戶使用鼠標等輸入設備操縱屏幕上的圖標或菜單選項召衔,以選擇命令铃诬、調(diào)用文件、啟動程序或執(zhí)行其它一些日常任務苍凛。與通過鍵盤輸入文本或字符命令來完成例行任務的字符界面相比趣席,圖形用戶界面有許多優(yōu)點。

18. 開源的優(yōu)勢是什么毫深?

開源允許你將軟件(包括源代碼)免費分發(fā)給任何感興趣的人吩坝。然后,人們可以添加功能哑蔫,甚至可以調(diào)試和更正源代碼中的錯誤钉寝。它們甚至可以讓它運行得更好,然后再次自由地重新分配這些增強的源代碼闸迷。這最終使社區(qū)中的每個人受益嵌纲。

19. GNU項目的重要性是什么?

這種所謂的自由軟件運動具有多種優(yōu)勢腥沽,例如可以自由地運行程序以及根據(jù)你的需要自由學習和修改程序逮走。它還允許你將軟件副本重新分發(fā)給其他人,以及自由改進軟件并將其發(fā)布給公眾今阳。

二师溅、磁盤茅信、目錄、文件

1. 簡單 Linux 文件系統(tǒng)墓臭?

在 Linux 操作系統(tǒng)中蘸鲸,所有被操作系統(tǒng)管理的資源,例如網(wǎng)絡接口卡窿锉、磁盤驅(qū)動器酌摇、打印機、輸入輸出設備嗡载、普通文件或是目錄都被看作是一個文件窑多。

也就是說在 Linux 系統(tǒng)中有一個重要的概念**:一切都是文件**。其實這是 Unix 哲學的一個體現(xiàn)洼滚,而 Linux 是重寫 Unix 而來埂息,所以這個概念也就傳承了下來。在 Unix 系統(tǒng)中判沟,把一切資源都看作是文件耿芹,包括硬件設備崭篡。UNIX系統(tǒng)把每個硬件都看成是一個文件挪哄,通常稱為設備文件,這樣用戶就可以用讀寫文件的方式實現(xiàn)對硬件的訪問琉闪。

Linux 支持 5 種文件類型迹炼,如下圖所示:文件類型

2. Linux 的目錄結(jié)構(gòu)是怎樣的?

這個問題颠毙,一般不會問斯入。更多是實際使用時,需要知道蛀蜜。

Linux 文件系統(tǒng)的結(jié)構(gòu)層次鮮明刻两,就像一棵倒立的樹,最頂層是其根目錄:

Linux的目錄結(jié)構(gòu)

常見目錄說明:

/bin:存放二進制可執(zhí)行文件(ls,cat,mkdir等)滴某,常用命令一般都在這里磅摹;

/etc:存放系統(tǒng)管理和配置文件;

/home:存放所有用戶文件的根目錄霎奢,是用戶主目錄的基點户誓,比如用戶user的主目錄就是/home/user,可以用~user表示幕侠;

**/usr **:用于存放系統(tǒng)應用程序/opt:額外安裝的可選應用程序包所放置的位置帝美。一般情況下,我們可以把tomcat等都安裝到這里晤硕;

/proc:虛擬文件系統(tǒng)目錄悼潭,是系統(tǒng)內(nèi)存的映射庇忌。可直接訪問這個目錄來獲取系統(tǒng)信息舰褪;

/root:超級用戶(系統(tǒng)管理員)的主目錄(特權(quán)階級o)漆枚;

/sbin: 存放二進制可執(zhí)行文件,只有root才能訪問抵知。這里存放的是系統(tǒng)管理員使用的系統(tǒng)級別的管理命令和程序墙基。如ifconfig等;

/dev:用于存放設備文件刷喜;

/mnt:系統(tǒng)管理員安裝臨時文件系統(tǒng)的安裝點残制,系統(tǒng)提供這個目錄是讓用戶臨時掛載其他的文件系統(tǒng);

/boot:存放用于系統(tǒng)引導時使用的各種文件掖疮;

**/lib **:存放著和系統(tǒng)運行相關(guān)的庫文件 初茶;

/tmp:用于存放各種臨時文件,是公用的臨時文件存儲點浊闪;

/var:用于存放運行時需要改變數(shù)據(jù)的文件恼布,也是某些大文件的溢出區(qū),比方說各種服務的日志文件(系統(tǒng)啟動日志等搁宾。)等折汞;

/lost+found:這個目錄平時是空的,系統(tǒng)非正常關(guān)機而留下“無家可歸”的文件(windows下叫什么.chk)就在這里盖腿。

3. 什么是 inode 爽待?

一般來說,面試不會問 inode 翩腐。但是 inode 是一個重要概念鸟款,是理解 Unix/Linux 文件系統(tǒng)和硬盤儲存的基礎。

理解inode茂卦,要從文件儲存說起何什。

文件儲存在硬盤上,硬盤的最小存儲單位叫做"扇區(qū)"(Sector)等龙。每個扇區(qū)儲存512字節(jié)(相當于0.5KB)处渣。

操作系統(tǒng)讀取硬盤的時候,不會一個個扇區(qū)地讀取而咆,這樣效率太低霍比,而是一次性連續(xù)讀取多個扇區(qū),即一次性讀取一個"塊"(block)暴备。這種由多個扇區(qū)組成的"塊"悠瞬,是文件存取的最小單位。"塊"的大小,最常見的是4KB浅妆,即連續(xù)八個 sector組成一個 block望迎。

文件數(shù)據(jù)都儲存在"塊"中,那么很顯然凌外,我們還必須找到一個地方儲存文件的元信息辩尊,比如文件的創(chuàng)建者、文件的創(chuàng)建日期康辑、文件的大小等等摄欲。這種儲存文件元信息的區(qū)域就叫做inode,中文譯名為"索引節(jié)點"疮薇。

每一個文件都有對應的inode胸墙,里面包含了與該文件有關(guān)的一些信息。

簡述 Linux 文件系統(tǒng)通過 i 節(jié)點把文件的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)轉(zhuǎn)換的工作過程按咒?

一般來說迟隅,面試官不太會問這個題目。

Linux 通過 inode 節(jié)點表將文件的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)進行轉(zhuǎn)換励七。

·?inode 節(jié)點是一個 64 字節(jié)長的表智袭,表中包含了文件的相關(guān)信息,其中有文件的大小掠抬、文件所有者吼野、文件的存取許可方式以及文件的類型等重要信息。在 inode 節(jié)點表中最重要的內(nèi)容是磁盤地址表剿另。在磁盤地址表中有 13 個塊號箫锤,文件將以塊號在磁盤地址表中出現(xiàn)的順序依次讀取相應的塊。

·Linux 文件系統(tǒng)通過把 inode 節(jié)點和文件名進行連接雨女,當需要讀取該文件時,文件系統(tǒng)在當前目錄表中查找該文件名對應的項阳准,由此得到該文件相對應的 inode 節(jié)點號氛堕,通過該 inode 節(jié)點的磁盤地址表把分散存放的文件物理塊連接成文件的邏輯結(jié)構(gòu)。

4. 什么是硬鏈接和軟鏈接野蝇?

1)硬鏈接

由于 Linux 下的文件是通過索引節(jié)點(inode)來識別文件讼稚,硬鏈接可以認為是一個指針,指向文件索引節(jié)點的指針绕沈,系統(tǒng)并不為它重新分配 inode 锐想。每添加一個一個硬鏈接,文件的鏈接數(shù)就加 1 乍狐。

不足:1)不可以在不同文件系統(tǒng)的文件間建立鏈接赠摇;2)只有超級用戶才可以為目錄創(chuàng)建硬鏈接。

2)軟鏈接

軟鏈接克服了硬鏈接的不足,沒有任何文件系統(tǒng)的限制藕帜,任何用戶可以創(chuàng)建指向目錄的符號鏈接烫罩。因而現(xiàn)在更為廣泛使用,它具有更大的靈活性洽故,甚至可以跨越不同機器贝攒、不同網(wǎng)絡對文件進行鏈接。

不足:因為鏈接文件包含有原文件的路徑信息时甚,所以當原文件從一個目錄下移到其他目錄中隘弊,再訪問鏈接文件,系統(tǒng)就找不到了荒适,而硬鏈接就沒有這個缺陷长捧,你想怎么移就怎么移;還有它要系統(tǒng)分配額外的空間用于建立新的索引節(jié)點和保存原文件的路徑吻贿。

實際場景下串结,基本是使用軟鏈接【肆校總結(jié)區(qū)別如下:

·?硬鏈接不可以跨分區(qū)肌割,軟件鏈可以跨分區(qū)。

·?硬鏈接指向一個 inode 節(jié)點帐要,而軟鏈接則是創(chuàng)建一個新的 inode 節(jié)點把敞。

·?刪除硬鏈接文件,不會刪除原文件榨惠,刪除軟鏈接文件奋早,會把原文件刪除。

5. RAID 是什么?

RAID 全稱為獨立磁盤冗余陣列(Redundant Array of Independent Disks)赠橙,基本思想就是把多個相對便宜的硬盤組合起來耽装,成為一個硬盤陣列組,使性能達到甚至超過一個價格昂貴期揪、 容量巨大的硬盤掉奄。RAID 通常被用在服務器電腦上,使用完全相同的硬盤組成一個邏輯扇區(qū)凤薛,因此操作系統(tǒng)只會把它當做一個硬盤姓建。

RAID 分為不同的等級抖甘,各個不同的等級均在數(shù)據(jù)可靠性及讀寫性能上做了不同的權(quán)衡骂际。在實際應用中,可以依據(jù)自己的實際需求選擇不同的 RAID 方案淤齐。

當然活玲,因為很多公司都使用云服務涣狗,大家很難接觸到 RAID 這個概念谍婉,更多的可能是普通云盤、SSD 云盤醬紫的概念屑柔。

三屡萤、安全

1. 一臺 Linux 系統(tǒng)初始化環(huán)境后需要做一些什么安全工作?

1掸宛、添加普通用戶登陸死陆,禁止 root 用戶登陸,更改 SSH 端口號唧瘾。

修改 SSH 端口不一定絕對哈措译。當然,如果要暴露在外網(wǎng)饰序,建議改下领虹。l

2、服務器使用密鑰登陸求豫,禁止密碼登陸塌衰。

3、開啟防火墻蝠嘉,關(guān)閉 SElinux 最疆,根據(jù)業(yè)務需求設置相應的防火墻規(guī)則。

4蚤告、裝 fail2ban 這種防止 SSH 暴力破擊的軟件努酸。

5、設置只允許公司辦公網(wǎng)出口 IP 能登陸服務器(看公司實際需要)

也可以安裝 VPN 等軟件杜恰,只允許連接 VPN 到服務器上获诈。

6、修改歷史命令記錄的條數(shù)為 10 條心褐。

7舔涎、只允許有需要的服務器可以訪問外網(wǎng),其它全部禁止檬寂。

8终抽、做好軟件層面的防護。

8.1 設置 nginx_waf 模塊防止 SQL 注入桶至。

8.2 把 Web 服務使用 www 用戶啟動,更改網(wǎng)站目錄的所有者和所屬組為 www 匾旭。

2. 什么叫 CC 攻擊镣屹?什么叫 DDOS 攻擊?

CC 攻擊价涝,主要是用來攻擊頁面的女蜈,模擬多個用戶不停的對你的頁面進行訪問,從而使你的系統(tǒng)資源消耗殆盡。

DDOS 攻擊伪窖,中文名叫分布式拒絕服務攻擊逸寓,指借助服務器技術(shù)將多個計算機聯(lián)合起來作為攻擊平臺,來對一個或多個目標發(fā)動 DDOS 攻擊覆山。

攻擊竹伸,即是通過大量合法的請求占用大量網(wǎng)絡資源,以達到癱瘓網(wǎng)絡的目的簇宽。

怎么預防 CC 攻擊和 DDOS 攻擊勋篓?

防 CC、DDOS 攻擊魏割,這些只能是用硬件防火墻做流量清洗譬嚣,將攻擊流量引入黑洞。

流量清洗這一塊钞它,主要是買 ISP 服務商的防攻擊的服務就可以拜银,機房一般有空余流量,我們一般是買服務遭垛,畢竟攻擊不會是持續(xù)長時間尼桶。

3. 什么是網(wǎng)站數(shù)據(jù)庫注入?

由于程序員的水平及經(jīng)驗參差不齊耻卡,大部分程序員在編寫代碼的時候疯汁,沒有對用戶輸入數(shù)據(jù)的合法性進行判斷。

應用程序存在安全隱患卵酪。用戶可以提交一段數(shù)據(jù)庫查詢代碼幌蚊,根據(jù)程序返回的結(jié)果,獲得某些他想得知的數(shù)據(jù)溃卡,這就是所謂的 SQL 注入溢豆。

SQL注入,是從正常的 WWW 端口訪問瘸羡,而且表面看起來跟一般的 Web 頁面訪問沒什么區(qū)別漩仙,如果管理員沒查看日志的習慣,可能被入侵很長時間都不會發(fā)覺犹赖。

如何過濾與預防队他?

數(shù)據(jù)庫網(wǎng)頁端注入這種,可以考慮使用 nginx_waf 做過濾與預防峻村。

Shell

1. Shell 腳本是什么麸折?

一個 Shell 腳本是一個文本文件,包含一個或多個命令粘昨。作為系統(tǒng)管理員垢啼,我們經(jīng)常需要使用多個命令來完成一項任務窜锯,我們可以添加這些所有命令在一個文本文件(Shell 腳本)來完成這些日常工作任務。

- 什么是默認登錄 Shell 芭析?

在 Linux 操作系統(tǒng)锚扎,"/bin/bash" 是默認登錄 Shell,是在創(chuàng)建用戶時分配的馁启。

使用 chsh 命令可以改變默認的 Shell 驾孔。示例如下所示:

## chsh <用戶名> -s <新shell>## chsh ThinkWon -s /bin/sh

-在 Shell 腳本中,如何寫入注釋进统?

注釋可以用來描述一個腳本可以做什么和它是如何工作的助币。每一行注釋以 # 開頭。例子如下:

#!/bin/bash## This is a commandecho“I am loggedinas$USER”

2. 語法級

- 可以在 Shell 腳本中使用哪些類型的變量螟碎?

在 Shell 腳本眉菱,我們可以使用兩種類型的變量:

系統(tǒng)定義變量:系統(tǒng)變量是由系統(tǒng)系統(tǒng)自己創(chuàng)建的。這些變量通常由大寫字母組成掉分,可以通過 set 命令查看俭缓。

用戶定義變量:用戶變量由系統(tǒng)用戶來生成和定義,變量的值可以通過命令 "echo $<變量名>" 查看酥郭。

- Shell腳本中 $? 標記的用途是什么华坦?

在寫一個 Shell 腳本時,如果你想要檢查前一命令是否執(zhí)行成功不从,在 if 條件中使用 $? 可以來檢查前一命令的結(jié)束狀態(tài)惜姐。

·?如果結(jié)束狀態(tài)是 0 ,說明前一個命令執(zhí)行成功椿息。例如:

root@localhost:~## ls /usr/bin/shar? ? /usr/bin/sharroot@localhost:~## echo $?0

·如果結(jié)束狀態(tài)不是0歹袁,說明命令執(zhí)行失敗。例如:

root@localhost:~## ls /usr/bin/sharels:cannot access /usr/bin/share:No such fileordirectoryroot@localhost:~## echo $?2

- Bourne Shell(bash) 中有哪些特殊的變量寝优?

下面的表列出了 Bourne Shell 為命令行設置的特殊變量条舔。

內(nèi)建變量? ? 解釋$0? ? 命令行中的腳本名字$1? ? 第一個命令行參數(shù)$2? ? 第二個命令行參數(shù)…..? ? …….$9? ? 第九個命令行參數(shù)$##? ? 命令行參數(shù)的數(shù)量$*? ? 所有命令行參數(shù),以空格隔開

- 如何取消變量或取消變量賦值乏矾?

unset 命令用于取消變量或取消變量賦值孟抗。語法如下所示:

## unset <變量名>

- Shell 腳本中 if 語法如何嵌套?

if[ 條件 ]then命令1命令2…..elseif[ 條件 ]then命令1命令2….else命令1命令2…..fifi

- 在 Shell 腳本中如何比較兩個數(shù)字?

在 if-then 中使用測試命令( -gt 等)來比較兩個數(shù)字钻心。例如:

#!/bin/bashx=10y=20if[$x-gt$y]thenecho“x is greater than y”elseecho“y is greater than x”fi

- Shell 腳本中 case 語句的語法?

基礎語法如下:

case變量in值1)命令1命令2…..最后命令!!值2)命令1命令2……最后命令;;esac

Shell 腳本中 for 循環(huán)語法凄硼?

基礎語法如下:-

for變量in循環(huán)列表do命令1命令2….最后命令done

Shell 腳本中 while 循環(huán)語法?

·如同 for 循環(huán)捷沸,while 循環(huán)只要條件成立就重復它的命令塊帆喇。

·不同于 for循環(huán),while 循環(huán)會不斷迭代亿胸,直到它的條件不為真坯钦。

基礎語法:

while[ 條件 ]do命令…done

- do-while 語句的基本格式?

do-while 語句類似于 while 語句侈玄,但檢查條件語句之前先執(zhí)行命令(LCTT 譯注:意即至少執(zhí)行一次婉刀。)。下面是用 do-while 語句的語法:

do{命令}while(條件)1234

- Shell 腳本中 break 命令的作用序仙?

break 命令一個簡單的用途是退出執(zhí)行中的循環(huán)突颊。我們可以在 while 和 until 循環(huán)中使用 break 命令跳出循環(huán)。

- Shell 腳本中 continue 命令的作用潘悼?

continue 命令不同于 break 命令律秃,它只跳出當前循環(huán)的迭代,而不是整個循環(huán)治唤。continue 命令很多時候是很有用的棒动,例如錯誤發(fā)生,但我們依然希望繼續(xù)執(zhí)行大循環(huán)的時候宾添。

- 如何使腳本可執(zhí)行?

使用 chmod 命令來使腳本可執(zhí)行船惨。例子如下:chmod a+x myscript.sh 。

#!/bin/bash 的作用缕陕?#!/bin/bash 是 Shell 腳本的第一行粱锐,稱為釋伴(shebang)行。這里# 符號叫做 hash 扛邑,而 ! 叫做 bang怜浅。? ? 它的意思是命令通過 /bin/bash 來執(zhí)行。

- 如何調(diào)試 Shell腳本蔬崩?

使用 -x' 數(shù)(sh -x myscript.sh)可以調(diào)試 Shell腳本恶座。

另一個種方法是使用 -nv 參數(shù)(sh -nv myscript.sh)。

- 如何將標準輸出和錯誤輸出同時重定向到同一位置?

方法一:2>&1 (如## ls /usr/share/doc > out.txt 2>&1 ) 舱殿。

方法二:&> (如## ls /usr/share/doc &> out.txt ) 奥裸。

- 在 Shell 腳本中,如何測試文件沪袭?

test 命令可以用來測試文件「园恚基礎用法如下表格:

Test用法-d 文件名? ? 如果文件存在并且是目錄巴碗,返回true-e 文件名? ? 如果文件存在,返回true-f 文件名? ? 如果文件存在并且是普通文件即寒,返回true-r 文件名? ? 如果文件存在并可讀橡淆,返回true-s 文件名? ? 如果文件存在并且不為空,返回true-w 文件名? ? 如果文件存在并可寫母赵,返回true-x 文件名? ? 如果文件存在并可執(zhí)行逸爵,返回true

- 在 Shell 腳本如何定義函數(shù)呢?

函數(shù)是擁有名字的代碼塊凹嘲。當我們定義代碼塊师倔,我們就可以在我們的腳本調(diào)用函數(shù)名字,該塊就會被執(zhí)行施绎。示例如下所示:

$ diskusage () { df -h ; }譯注:下面是我給的shell函數(shù)語法溯革,原文沒有[function] 函數(shù)名 [()]{命令;[returnint;]}

如何讓 Shell 就腳本得到來自終端的輸入?

read 命令可以讀取來自終端(使用鍵盤)的數(shù)據(jù)。read 命令得到用戶的輸入并置于你給出的變量中谷醉。例子如下:

## vi /tmp/test.sh#!/bin/bashecho‘Please enter your name’readnameecho“My Name is$name”## ./test.shPlease enter your nameThinkWonMy Name is ThinkWon

- 如何執(zhí)行算術(shù)運算致稀?

有兩種方法來執(zhí)行算術(shù)運算:

1、使用 expr 命令:## expr 5 + 2 俱尼。

2抖单、用一個美元符號和方括號($[ 表達式 ]):test=$[16 + 4] ; test=$[16 + 4] 。

四遇八、編程題

1. 判斷一文件是不是字符設備文件矛绘,如果是將其拷貝到 /dev 目錄下?

#!/bin/bashread-p"Input file name: "FILENAMEif[ -c"$FILENAME"];thencp$FILENAME/devfi

2. 添加一個新組為 class1 刃永,然后添加屬于這個組的 30 個用戶货矮,用戶名的形式為 stdxx ,其中 xx 從 01 到 30 斯够?

#!/bin/bashgroupadd class1for((i=1;i<31;i++))doif[$i-le 10 ];thenuseradd -g class1 std0$ielseuseradd -g class1 std$ifidone

3. 編寫 Shell 程序囚玫,實現(xiàn)自動刪除 50 個賬號的功能,賬號名為stud1 至 stud50 读规?

#!/bin/bashfor((i=1;i<51;i++))douserdel -r stud$idone

4. 寫一個 sed 命令抓督,修改 /tmp/input.txt 文件的內(nèi)容?

要求:

·刪除所有空行束亏。

·一行中铃在,如果包含 “11111”,則在 “11111” 前面插入 “AAA”,在 “11111” 后面插入 “BBB” 定铜。比如:將內(nèi)容為 0000111112222 的一行改為 0000AAA11111BBB2222 阳液。

[root@~]##cat -n /tmp/input.txt10000111112222300001111122222241111100000022256711111111111112222222222282211111111911222222210112211? ? ## 刪除所有空行命令[root@~]##sed '/^$/d' /tmp/input.txt0000111112220000111112222221111100000022211111111111112222222222222111111111122222221122## 插入指定的字符[root@~]##sed 's#\(11111\)#AAA\1BBB#g' /tmp/input.txt0000AAA11111BBB2220000AAA11111BBB222222AAA11111BBB000000222AAA11111BBBAAA11111BBB1112222222222222AAA11111BBB1111122222221122

五、實戰(zhàn)

1. 如何選擇 Linux 操作系統(tǒng)版本?

一般來講宿稀,桌面用戶首選 Ubuntu 趁舀;服務器首選 RHEL 或 CentOS ,兩者中首選 CentOS 祝沸。

根據(jù)具體要求:

·安全性要求較高,則選擇 Debian 或者 FreeBSD 越庇。

·?需要使用數(shù)據(jù)庫高級服務和電子郵件網(wǎng)絡應用的用戶可以選擇 SUSE 罩锐。

·想要新技術(shù)新功能可以選擇 Feddora ,F(xiàn)eddora 是 RHEL 和 CentOS 的一個測試版和預發(fā)布版本卤唉。

·【重點】根據(jù)現(xiàn)有狀況涩惑,絕大多數(shù)互聯(lián)網(wǎng)公司選擇 CentOS 。現(xiàn)在比較常用的是 6 系列桑驱,現(xiàn)在市場占有大概一半左右竭恬。另外的原因是 CentOS 更側(cè)重服務器領(lǐng)域,并且無版權(quán)約束熬的。

CentOS 7 系列痊硕,也慢慢使用的會比較多了。

2. 如何規(guī)劃一臺 Linux 主機押框,步驟是怎樣岔绸?

1、確定機器是做什么用的橡伞,比如是做 WEB 盒揉、DB、還是游戲服務器兑徘。

不同的用途刚盈,機器的配置會有所不同。

2挂脑、確定好之后藕漱,就要定系統(tǒng)需要怎么安裝,默認安裝哪些系統(tǒng)最域、分區(qū)怎么做谴分。

3、需要優(yōu)化系統(tǒng)的哪些參數(shù)镀脂,需要創(chuàng)建哪些用戶等等的牺蹄。

3. 請問當用戶反饋網(wǎng)站訪問慢,如何處理薄翅?

- 有哪些方面的因素會導致網(wǎng)站網(wǎng)站訪問慢沙兰?

1氓奈、服務器出口帶寬不夠用

本身服務器購買的出口帶寬比較小。一旦并發(fā)量大的話鼎天,就會造成分給每個用戶的出口帶寬就小舀奶,訪問速度自然就會慢。

跨運營商網(wǎng)絡導致帶寬縮減斋射。例如育勺,公司網(wǎng)站放在電信的網(wǎng)絡上,那么客戶這邊對接是長城寬帶或聯(lián)通罗岖,這也可能導致帶寬的縮減涧至。

2、服務器負載過大桑包,導致響應不過來

可以從兩個方面入手分析:

分析系統(tǒng)負載南蓬,使用 w 命令或者 uptime 命令查看系統(tǒng)負載。如果負載很高哑了,則使用 top 命令查看 CPU 赘方,MEM 等占用情況,要么是 CPU 繁忙弱左,要么是內(nèi)存不夠窄陡。

如果這二者都正常,再去使用 sar 命令分析網(wǎng)卡流量科贬,分析是不是遭到了攻擊泳梆。一旦分析出問題的原因,采取對應的措施解決榜掌,如決定要不要殺死一些進程优妙,或者禁止一些訪問等。

3憎账、數(shù)據(jù)庫瓶頸

如果慢查詢比較多套硼。那么就要開發(fā)人員或 DBA 協(xié)助進行 SQL 語句的優(yōu)化。

如果數(shù)據(jù)庫響應慢胞皱,考慮可以加一個數(shù)據(jù)庫緩存邪意,如 Redis 等。然后反砌,也可以搭建 MySQL 主從雾鬼,一臺 MySQL 服務器負責寫,其他幾臺從數(shù)據(jù)庫負責讀宴树。

4策菜、網(wǎng)站開發(fā)代碼沒有優(yōu)化好

例如 SQL 語句沒有優(yōu)化,導致數(shù)據(jù)庫讀寫相當耗時。

- 針對網(wǎng)站訪問慢又憨,怎么去排查翠霍?

1、首先要確定是用戶端還是服務端的問題蠢莺。當接到用戶反饋訪問慢寒匙,那邊自己立即訪問網(wǎng)站看看,如果自己這邊訪問快躏将,基本斷定是用戶端問題锄弱,就需要耐心跟客戶解釋,協(xié)助客戶解決問題耸携。

不要上來就看服務端的問題棵癣。一定要從源頭開始,逐步逐步往下夺衍。

2、如果訪問也慢喜命,那么可以利用瀏覽器的調(diào)試功能沟沙,看看加載那一項數(shù)據(jù)消耗時間過多,是圖片加載慢壁榕,還是某些數(shù)據(jù)加載慢矛紫。

3、針對服務器負載情況牌里。查看服務器硬件(網(wǎng)絡颊咬、CPU、內(nèi)存)的消耗情況牡辽。如果是購買的云主機喳篇,比如阿里云,可以登錄阿里云平臺提供各方面的監(jiān)控态辛,比如 CPU麸澜、內(nèi)存、帶寬的使用情況奏黑。

4炊邦、如果發(fā)現(xiàn)硬件資源消耗都不高,那么就需要通過查日志熟史,比如看看 MySQL慢查詢的日志芳室,看看是不是某條 SQL 語句查詢慢蔓罚,導致網(wǎng)站訪問慢。

- 怎么去解決?

1关贵、如果是出口帶寬問題窗宇,那么久申請加大出口帶寬。

2、如果慢查詢比較多踪区,那么就要開發(fā)人員或 DBA 協(xié)助進行 SQL 語句的優(yōu)化。

3吊骤、如果數(shù)據(jù)庫響應慢缎岗,考慮可以加一個數(shù)據(jù)庫緩存,如 Redis 等等白粉。然后也可以搭建MySQL 主從传泊,一臺 MySQL 服務器負責寫,其他幾臺從數(shù)據(jù)庫負責讀鸭巴。

4眷细、申請購買 CDN 服務,加載用戶的訪問鹃祖。

5溪椎、如果訪問還比較慢,那就需要從整體架構(gòu)上進行優(yōu)化咯恬口。做到專角色專用校读,多臺服務器提供同一個服務。

4. Linux 性能調(diào)優(yōu)都有哪幾種方法祖能?

1歉秫、Disabling daemons (關(guān)閉 daemons)。

2养铸、Shutting down the GUI (關(guān)閉 GUI)雁芙。

3、Changing kernel parameters (改變內(nèi)核參數(shù))钞螟。

4兔甘、Kernel parameters (內(nèi)核參數(shù))。

5筛圆、Tuning the processor subsystem (處理器子系統(tǒng)調(diào)優(yōu))裂明。

6、Tuning the memory subsystem (內(nèi)存子系統(tǒng)調(diào)優(yōu))太援。

7闽晦、Tuning the file system (文件系統(tǒng)子系統(tǒng)調(diào)優(yōu))。

8提岔、Tuning the network subsystem(網(wǎng)絡子系統(tǒng)調(diào)優(yōu))仙蛉。

六、文件管理命令

1. cat 命令

cat 命令用于連接文件并打印到標準輸出設備上碱蒙。

cat 主要有三大功能:

1.一次顯示整個文件:

catfilename

2.從鍵盤創(chuàng)建一個文件:

cat> filename

只能創(chuàng)建新文件荠瘪,不能編輯已有文件夯巷。

3.將幾個文件合并為一個文件:

catfile1 file2 > file

-b 對非空輸出行號

-n 輸出所有行號

- 實例:

(1)把 log2012.log 的文件內(nèi)容加上行號后輸入 log2013.log 這個文件里

cat -n log2012.loglog2013.log

(2)把 log2012.log 和 log2013.log 的文件內(nèi)容加上行號(空白行不加)之后將內(nèi)容附加到 log.log 里

cat -b log2012.loglog2013.loglog.log

(3)使用 here doc 生成新文件

cat >log.txt <<EOF>Hello>World>PWD=$(pwd)>EOFls -l log.txtcat log.txtHelloWorldPWD=/opt/soft/test

(4)反向列示

tac log.txtPWD=/opt/soft/testWorldHello

2. chmod 命令

Linux/Unix 的文件調(diào)用權(quán)限分為三級 : 文件擁有者、群組哀墓、其他趁餐。利用 chmod 可以控制文件如何被他人所調(diào)用。

用于改變 linux 系統(tǒng)文件或目錄的訪問權(quán)限篮绰。用它控制文件或目錄的訪問權(quán)限后雷。該命令有兩種用法。一種是包含字母和操作符表達式的文字設定法吠各;另一種是包含數(shù)字的數(shù)字設定法臀突。

每一文件或目錄的訪問權(quán)限都有三組,每組用三位表示贾漏,分別為文件屬主的讀候学、寫和執(zhí)行權(quán)限;與屬主同組的用戶的讀纵散、寫和執(zhí)行權(quán)限梳码;系統(tǒng)中其他用戶的讀、寫和執(zhí)行權(quán)限伍掀”呶蹋可使用 ls -l test.txt 查找。

以文件 log2012.log 為例:

-rw-r--r--1rootroot296K11-1306:03log2012.log

第一列共有 10 個位置硕盹,第一個字符指定了文件類型。在通常意義上叨咖,一個目錄也是一個文件瘩例。如果第一個字符是橫線,表示是一個非目錄的文件甸各。如果是 d垛贤,表示是一個目錄。從第二個字符開始到第十個 9 個字符趣倾,3 個字符一組聘惦,分別表示了 3 組用戶對文件或者目錄的權(quán)限。權(quán)限字符用橫線代表空許可儒恋,r 代表只讀善绎,w 代表寫,x 代表可執(zhí)行诫尽。

常用參數(shù):

-c 當發(fā)生改變時禀酱,報告處理信息-R 處理指定目錄以及其子目錄下所有文件

權(quán)限范圍:

u:目錄或者文件的當前的用戶g:目錄或者文件的當前的群組o:除了目錄或者文件的當前用戶或群組之外的用戶或者群組a:所有的用戶及群組

權(quán)限代號:

r:讀權(quán)限,用數(shù)字4表示w:寫權(quán)限牧嫉,用數(shù)字2表示x:執(zhí)行權(quán)限剂跟,用數(shù)字1表示-:刪除權(quán)限减途,用數(shù)字0表示s:特殊權(quán)限

- 實例:

(1)增加文件 t.log 所有用戶可執(zhí)行權(quán)限

chmod a+x t.log

(2)撤銷原來所有的權(quán)限,然后使擁有者具有可讀權(quán)限,并輸出處理信息

chmod u=r t.log-c

(3)給 file 的屬主分配讀曹洽、寫鳍置、執(zhí)行(7)的權(quán)限,給file的所在組分配讀送淆、執(zhí)行(5)的權(quán)限税产,給其他用戶分配執(zhí)行(1)的權(quán)限

chmod751t.log-c(或者:chmod u=rwx,g=rx,o=x t.log-c)

(4)將 test 目錄及其子目錄所有文件添加可讀權(quán)限

chmodu+r,g+r,o+r -R text/ -c

3. chown 命令

chown 將指定文件的擁有者改為指定的用戶或組,用戶可以是用戶名或者用戶 ID坊夫;組可以是組名或者組 ID砖第;文件是以空格分開的要改變權(quán)限的文件列表,支持通配符环凿。

-c 顯示更改的部分的信息-R?處理指定目錄及子目錄

- 實例:

(1)改變擁有者和群組 并顯示改變信息

chown-cmail:maillog2012.log

(2)改變文件群組

chown-c:mailt.log

(3)改變文件夾及子文件目錄屬主及屬組為 mail

chown -cR mail:test/

4. cp 命令

將源文件復制至目標文件梧兼,或?qū)⒍鄠€源文件復制至目標目錄。

注意:命令行復制智听,如果目標文件已經(jīng)存在會提示是否覆蓋羽杰,而在 shell 腳本中,如果不加 -i 參數(shù)到推,則不會提示考赛,而是直接覆蓋!

-i 提示-r 復制目錄及目錄內(nèi)所有項目-a 復制的文件與原文件時間一樣

- 實例:

(1)復制 a.txt 到 test 目錄下莉测,保持原文件時間颜骤,如果原文件存在提示是否覆蓋。

cp -ai a.txttest

(2)為 a.txt 建議一個鏈接(快捷方式)

cp-sa.txtlink_a.txt

5. find 命令

用于在文件樹中查找文件捣卤,并作出相應的處理忍抽。

命令格式:

find pathname -options [-print-exec-ok ...]

命令參數(shù):

pathname: find命令所查找的目錄路徑。例如用.來表示當前目錄董朝,用/來表示系統(tǒng)根目錄鸠项。-print:find命令將匹配的文件輸出到標準輸出。-exec:find命令對匹配的文件執(zhí)行該參數(shù)所給出的shell命令子姜。相應命令的形式為'command'{? } \;祟绊,注意{? }和\;之間的空格哥捕。-ok:和-exec的作用相同牧抽,只不過以一種更為安全的模式來執(zhí)行該參數(shù)所給出的shell命令,在執(zhí)行每一個命令之前扭弧,都會給出提示阎姥,讓用戶來確定是否執(zhí)行。

命令選項:

-name按照文件名查找文件-perm按文件權(quán)限查找文件-user按文件屬主查找文件-group按照文件所屬的組來查找文件鸽捻。-type查找某一類型的文件呼巴,諸如:b- 塊設備文件d- 目錄c- 字符設備文件l- 符號鏈接文件p- 管道文件f- 普通文件

- 實例:

(1)查找 48 小時內(nèi)修改過的文件

find-atime -2

(2)在當前目錄查找 以 .log 結(jié)尾的文件泽腮。. 代表當前目錄

find./ -name'*.log'

(3)查找 /opt 目錄下 權(quán)限為 777 的文件

find/opt -perm777

(4)查找大于 1K 的文件

find-size +1000c

(5)查找等于 1000 字符的文件

find-size 1000c

-exec 參數(shù)后面跟的是 command 命令,它的終止是以 ; 為結(jié)束標志的衣赶,所以這句命令后面的分號是不可缺少的诊赊,考慮到各個系統(tǒng)中分號會有不同的意義,所以前面加反斜杠府瞄。{} 花括號代表前面find查找出來的文件名碧磅。

6. head 命令

head 用來顯示檔案的開頭至標準輸出中,默認 head 命令打印其相應文件的開頭 10 行遵馆。

常用參數(shù):

-n<行數(shù)> 顯示的行數(shù)(行數(shù)為復數(shù)表示從最后向前數(shù))

實例:

(1)顯示 1.log 文件中前 20 行

head1.log-n20

(2)顯示 1.log 文件前 20 字節(jié)

head -c20log2014.log

(3)顯示 t.log最后 10 行

head -n-10t.log

7. less 命令

less 與 more 類似鲸郊,但使用 less 可以隨意瀏覽文件,而 more 僅能向前移動货邓,卻不能向后移動秆撮,而且 less 在查看之前不會加載整個文件。

常用命令參數(shù):

-i忽略搜索時的大小寫-N顯示每行的行號-o<文件名> 將less 輸出的內(nèi)容在指定文件中保存起來-s顯示連續(xù)空行為一行/字符串:向下搜索“字符串”的功能?字符串:向上搜索“字符串”的功能n:重復前一個搜索(與/ 或 ? 有關(guān))N:反向重復前一個搜索(與/ 或 ? 有關(guān))-x<數(shù)字> 將“tab”鍵顯示為規(guī)定的數(shù)字空格b向后翻一頁d向后翻半頁h顯示幫助界面Q退出less 命令u向前滾動半頁y向前滾動一行空格鍵滾動一行回車鍵滾動一頁[pagedown]:向下翻動一頁[pageup]:向上翻動一頁

實例:

(1)ps 查看進程信息并通過 less 分頁顯示

ps-aux | less -N

(2)查看多個文件

less1.log2.log

可以使用 n 查看下一個换况,使用 p 查看前一個职辨。

8. ln 命令

功能是為文件在另外一個位置建立一個同步的鏈接,當在不同目錄需要該問題時戈二,就不需要為每一個目錄創(chuàng)建同樣的文件舒裤,通過 ln 創(chuàng)建的鏈接(link)減少磁盤占用量。

鏈接分類:軟件鏈接及硬鏈接

軟鏈接:

1.軟鏈接觉吭,以路徑的形式存在腾供。類似于Windows操作系統(tǒng)中的快捷方式

2.軟鏈接可以 跨文件系統(tǒng) ,硬鏈接不可以

3.軟鏈接可以對一個不存在的文件名進行鏈接

4.軟鏈接可以對目錄進行鏈接

硬鏈接:

1.硬鏈接鲜滩,以文件副本的形式存在台腥。但不占用實際空間。

2.不允許給目錄創(chuàng)建硬鏈接

3.硬鏈接只有在同一個文件系統(tǒng)中才能創(chuàng)建

需要注意:

第一:ln命令會保持每一處鏈接文件的同步性绒北,也就是說,不論你改動了哪一處察署,其它的文件都會發(fā)生相同的變化闷游;

第二:ln的鏈接又分軟鏈接和硬鏈接兩種,軟鏈接就是ln –s 源文件 目標文件贴汪,它只會在你選定的位置上生成一個文件的鏡像脐往,不會占用磁盤空間,硬鏈接 ln 源文件 目標文件扳埂,沒有參數(shù)-s业簿, 它會在你選定的位置上生成一個和源文件大小相同的文件,無論是軟鏈接還是硬鏈接阳懂,文件都保持同步變化梅尤。

第三:ln指令用在鏈接文件或目錄柜思,如同時指定兩個以上的文件或目錄,且最后的目的地是一個已經(jīng)存在的目錄巷燥,則會把前面指定的所有文件或目錄復制到該目錄中赡盘。若同時指定多個文件或目錄,且最后的目的地并非是一個已存在的目錄缰揪,則會出現(xiàn)錯誤信息陨享。

常用參數(shù):

-b 刪除,覆蓋以前建立的鏈接-s 軟鏈接(符號鏈接)-v?顯示詳細處理過程

實例:

(1)給文件創(chuàng)建軟鏈接钝腺,并顯示操作信息

ln -sv source.loglink.log

(2)給文件創(chuàng)建硬鏈接抛姑,并顯示操作信息

ln -v source.loglink1.log

(3)給目錄創(chuàng)建軟鏈接

ln -sv /opt/soft/test/test3 /opt/soft/test/test5

9. locate 命令

locate 通過搜尋系統(tǒng)內(nèi)建文檔數(shù)據(jù)庫達到快速找到檔案,數(shù)據(jù)庫由 updatedb 程序來更新艳狐,updatedb 是由 cron daemon 周期性調(diào)用的定硝。默認情況下 locate 命令在搜尋數(shù)據(jù)庫時比由整個由硬盤資料來搜尋資料來得快,但較差勁的是 locate 所找到的檔案若是最近才建立或 剛更名的僵驰,可能會找不到喷斋,在內(nèi)定值中,updatedb 每天會跑一次蒜茴,可以由修改 crontab 來更新設定值 (etc/crontab)星爪。

locate 與 find 命令相似,可以使用如 *粉私、? 等進行正則匹配查找

常用參數(shù):

-l num(要顯示的行數(shù))-f? 將特定的檔案系統(tǒng)排除在外顽腾,如將proc排除在外-r? 使用正則運算式做為尋找條件

實例:

(1)查找和 pwd 相關(guān)的所有文件(文件名中包含 pwd)

locatepwd

(2)搜索 etc 目錄下所有以 sh 開頭的文件

locate/etc/sh

(3)查找 /var 目錄下,以 reason 結(jié)尾的文件

locate-r'^/var.*reason$'(其中.表示一個字符诺核,*表示任務多個抄肖;.*表示任意多個字符)

10. more 命令

功能類似于 cat, more 會以一頁一頁的顯示方便使用者逐頁閱讀,而最基本的指令就是按空白鍵(space)就往下一頁顯示窖杀,按 b 鍵就會往回(back)一頁顯示漓摩。

命令參數(shù):

+n? ? ? 從笫 n 行開始顯示-n? ? ? 定義屏幕大小為n行+/pattern 在每個檔案顯示前搜尋該字串(pattern),然后從該字串前兩行之后開始顯示-c? ? ? 從頂部清屏入客,然后顯示-d? ? ? 提示“Press space to continue管毙,’q’ to quit(按空格鍵繼續(xù),按q鍵退出)”桌硫,禁用響鈴功能-l? ? ? ? 忽略Ctrl+l(換頁)字符-p? ? ? 通過清除窗口而不是滾屏來對文件進行換頁夭咬,與-c選項相似-s? ? ? 把連續(xù)的多個空行顯示為一行-u? ? ? 把文件內(nèi)容中的下畫線去掉

常用操作命令:

Enter? ? 向下 n 行,需要定義铆隘。默認為 1 行Ctrl+F? 向下滾動一屏空格鍵? 向下滾動一屏Ctrl+B? 返回上一屏=? ? ? 輸出當前行的行號:f? ? 輸出文件名和當前行的行號V? ? ? 調(diào)用vi編輯器!命令? 調(diào)用Shell卓舵,并執(zhí)行命令q? ? ? 退出more

實例:

(1)顯示文件中從第3行起的內(nèi)容

more+3text.txt

(2)在所列出文件目錄詳細信息,借助管道使每次顯示 5 行

ls-l | more -5

按空格顯示下 5 行膀钠。

11. mv 命令

移動文件或修改文件名掏湾,根據(jù)第二參數(shù)類型(如目錄裹虫,則移動文件;如為文件則重命令該文件)忘巧。

當?shù)诙€參數(shù)為目錄時恒界,第一個參數(shù)可以是多個以空格分隔的文件或目錄,然后移動第一個參數(shù)指定的多個文件到第二個參數(shù)指定的目錄中砚嘴。

實例:

(1)將文件 test.log 重命名為 test1.txt

mvtest.logtest1.txt

(2)將文件 log1.txt,log2.txt,log3.txt 移動到根的 test3 目錄中

mvllog1.txt log2.txt log3.txt /test3

(3)將文件 file1 改名為 file2十酣,如果 file2 已經(jīng)存在,則詢問是否覆蓋

mv-ilog1.txtlog2.txt

(4)移動當前文件夾下的所有文件到上一級目錄

mv* ../

12. rm 命令

刪除一個目錄中的一個或多個文件或目錄际长,如果沒有使用 -r 選項耸采,則 rm 不會刪除目錄。如果使用 rm 來刪除文件工育,通常仍可以將該文件恢復原狀虾宇。

rm[選項]文件…

實例:

(1)刪除任何 .log 文件,刪除前逐一詢問確認:

rm-i*.log

(2)刪除 test 子目錄及子目錄中所有檔案刪除如绸,并且不用一一確認:

rm?-rftest

(3)刪除以 -f 開頭的文件

rm--?-f*

13. tail 命令

用于顯示指定文件末尾內(nèi)容嘱朽,不指定文件時,作為輸入信息進行處理怔接。常用查看日志文件搪泳。

常用參數(shù):

-f 循環(huán)讀取(常用于查看遞增的日志文件)-n<行數(shù)> 顯示行數(shù)(從后向前)

(1)循環(huán)讀取逐漸增加的文件內(nèi)容

ping127.0.0.1>ping.log&

后臺運行:可使用 jobs -l 查看扼脐,也可使用 fg 將其移到前臺運行岸军。

tail?-f?ping.log

(查看日志)

14. touch 命令

Linux touch命令用于修改文件或者目錄的時間屬性,包括存取時間和更改時間瓦侮。若文件不存在艰赞,系統(tǒng)會建立一個新的文件。

ls -l 可以顯示檔案的時間記錄肚吏。

語法

touch [-acfm][-d<日期時間>][-r<參考文件或目錄>] [-t<日期時間>][--help][--version][文件或目錄…]

參數(shù)說明:

a 改變檔案的讀取時間記錄方妖。

m 改變檔案的修改時間記錄。

c 假如目的檔案不存在罚攀,不會建立新的檔案吁断。與 --no-create 的效果一樣。

f 不使用坞生,是為了與其他 unix 系統(tǒng)的相容性而保留。

r 使用參考檔的時間記錄掷伙,與 --file 的效果一樣是己。

d 設定時間與日期,可以使用各種不同的格式任柜。

t 設定檔案的時間記錄卒废,格式與 date 指令相同沛厨。

–no-create 不會建立新檔案。

–help 列出指令格式摔认。

–version 列出版本訊息逆皮。

實例

使用指令"touch"修改文件"testfile"的時間屬性為當前系統(tǒng)時間,輸入如下命令:

$touch testfile#修改文件的時間屬性

首先参袱,使用ls命令查看testfile文件的屬性电谣,如下所示:

$ls -l testfile#查看文件的時間屬性? #原來文件的修改時間為16:09-rw-r--r-- 1 hdd hdd 55 2011-08-22 16:09 testfile

執(zhí)行指令"touch"修改文件屬性以后,并再次查看該文件的時間屬性抹蚀,如下所示:

$touch testfile#修改文件時間屬性為當前系統(tǒng)時間? $ls -l testfile#查看文件的時間屬性? #修改后文件的時間屬性為當前系統(tǒng)時間-rw-r--r-- 1 hdd hdd 55 2011-08-22 19:53 testfile

使用指令"touch"時剿牺,如果指定的文件不存在,則將創(chuàng)建一個新的空白文件环壤。例如晒来,在當前目錄下,使用該指令創(chuàng)建一個空白文件"file"郑现,輸入如下命令:

$touch file#創(chuàng)建一個名為“file”的新的空白文件

15. vim 命令

Vim是從 vi 發(fā)展出來的一個文本編輯器湃崩。代碼補完、編譯及錯誤跳轉(zhuǎn)等方便編程的功能特別豐富接箫,在程序員中被廣泛使用攒读。

打開文件并跳到第 10 行:vim +10 filename.txt 。

打開文件跳到第一個匹配的行:vim +/search-term filename.txt 列牺。

以只讀模式打開文件:vim -R /etc/passwd 整陌。

基本上 vi/vim 共分為三種模式,分別是命令模式(Command mode)瞎领,輸入模式(Insert mode)和底線命令模式(Last line mode)泌辫。

簡單的說,我們可以將這三個模式想成底下的圖標來表示:

16. whereis 命令

whereis 命令只能用于程序名的搜索九默,而且只搜索二進制文件(參數(shù)-b)震放、man說明文件(參數(shù)-m)和源代碼文件(參數(shù)-s)。如果省略參數(shù)驼修,則返回所有信息殿遂。whereis 及 locate 都是基于系統(tǒng)內(nèi)建的數(shù)據(jù)庫進行搜索,因此效率很高乙各,而find則是遍歷硬盤查找文件墨礁。

常用參數(shù):

-b? 定位可執(zhí)行文件。-m? 定位幫助文件耳峦。-s? 定位源代碼文件恩静。-u? 搜索默認路徑下除可執(zhí)行文件、源代碼文件、幫助文件以外的其它文件驶乾。

實例:

(1)查找 locate 程序相關(guān)文件

whereislocate

(2)查找 locate 的源碼文件

whereis-s locate

(3)查找 lcoate 的幫助文件

whereis-m locate

17. which 命令

在 linux 要查找某個文件邑飒,但不知道放在哪里了,可以使用下面的一些命令來搜索:

which查看可執(zhí)行文件的位置级乐。whereis查看文件的位置疙咸。locate配合數(shù)據(jù)庫查看文件位置。find實際搜尋硬盤查詢文件名稱风科。

which 是在 PATH 就是指定的路徑中撒轮,搜索某個系統(tǒng)命令的位置,并返回第一個搜索結(jié)果丐重。使用 which 命令腔召,就可以看到某個系統(tǒng)命令是否存在,以及執(zhí)行的到底是哪一個位置的命令扮惦。

常用參數(shù):

-n  指定文件名長度臀蛛,指定的長度必須大于或等于所有文件中最長的文件名。

實例:

(1)查看 ls 命令是否存在崖蜜,執(zhí)行哪個

whichls

(2)查看 which

whichwhich

3)查看 cd

whichcd(顯示不存在浊仆,因為cd是內(nèi)建命令,而which查找顯示是 PATH 中的命令)

查看當前 PATH 配置:

echo$PATH

或使用 env 查看所有環(huán)境變量及對應值

七豫领、文檔編輯命令

1. grep 命令

強大的文本搜索命令抡柿,grep(Global Regular Expression Print) 全局正則表達式搜索。

grep 的工作方式是這樣的等恐,它在一個或多個文件中搜索字符串模板洲劣。如果模板包括空格,則必須被引用课蔬,模板后的所有字符串被看作文件名囱稽。搜索的結(jié)果被送到標準輸出,不影響原文件內(nèi)容二跋。

命令格式:

grep[option] pattern file|dir

常用參數(shù):

-A n --after-context顯示匹配字符后n行-B n --before-context顯示匹配字符前n行-C n --context 顯示匹配字符前后n行-c --count 計算符合樣式的列數(shù)-i 忽略大小寫-l 只列出文件內(nèi)容符合指定的樣式的文件名稱-f 從文件中讀取關(guān)鍵詞-n 顯示匹配內(nèi)容的所在文件中行數(shù)-R 遞歸查找文件夾

grep 的規(guī)則表達式:

^#錨定行的開始 如:'^grep'匹配所有以grep開頭的行战惊。$#錨定行的結(jié)束 如:'grep$'匹配所有以grep結(jié)尾的行。.#匹配一個非換行符的字符 如:'gr.p'匹配gr后接一個任意字符扎即,然后是p吞获。*#匹配零個或多個先前字符 如:'*grep'匹配所有一個或多個空格后緊跟grep的行。.*#一起用代表任意字符谚鄙。[]#匹配一個指定范圍內(nèi)的字符各拷,如'[Gg]rep'匹配Grep和grep。[^]#匹配一個不在指定范圍內(nèi)的字符闷营,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一個字母開頭烤黍,緊跟rep的行。\(..\)#標記匹配字符,如'\(love\)'蚊荣,love被標記為1。\<#錨定單詞的開始莫杈,如:'\<grep'匹配包含以grep開頭的單詞的行互例。\>#錨定單詞的結(jié)束,如'grep\>'匹配包含以grep結(jié)尾的單詞的行筝闹。x\{m\}#重復字符x媳叨,m次,如:'0\{5\}'匹配包含5個o的行叭披。x\{m,\}#重復字符x,至少m次勋颖,如:'o\{5,\}'匹配至少有5個o的行脚粟。x\{m,n\}#重復字符x,至少m次痘番,不多于n次,如:'o\{5,10\}'匹配5--10個o的行平痰。\w#匹配文字和數(shù)字字符汞舱,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零個或多個文字或數(shù)字字符宗雇,然后是p昂芜。\W#\w的反置形式,匹配一個或多個非單詞字符赔蒲,如點號句號等泌神。\b#單詞鎖定符,如: '\bgrep\b'只匹配grep舞虱。

實例:

(1)查找指定進程

ps-ef | grep svn

(2)查找指定進程個數(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

2. wc 命令

wc(word count)功能為統(tǒng)計指定的文件中字節(jié)數(shù)、字數(shù)焕刮、行數(shù)配并,并將統(tǒng)計結(jié)果輸出

命令格式:

wc[option]file..

命令參數(shù):

-c 統(tǒng)計字節(jié)數(shù)-l 統(tǒng)計行數(shù)-m 統(tǒng)計字符數(shù)-w?統(tǒng)計詞數(shù)括荡,一個字被定義為由空白溉旋、跳格或換行字符分隔的字符串

實例:

(1)查找文件的 行數(shù) 單詞數(shù) 字節(jié)數(shù) 文件名

wctext.txt

結(jié)果:

7? ? 8? ? 70test.txt

(2)統(tǒng)計輸出結(jié)果的行數(shù)

cattest.txt | wc -l

八、磁盤管理命令

1. cd 命令

cd(changeDirectory) 命令語法:

cd [目錄名]

說明:切換當前目錄至 dirName算行。

實例:

(1)進入要目錄

cd/

(2)進入 “home” 目錄

cd~

(3)進入上一次工作路徑

cd-

(4)把上個命令的參數(shù)作為cd參數(shù)使用州邢。

cd!$

2. df 命令

顯示磁盤空間使用情況量淌。獲取硬盤被占用了多少空間呀枢,目前還剩下多少空間等信息裙秋,如果沒有文件名被指定残吩,則所有當前被掛載的文件系統(tǒng)的可用空間將被顯示倘核。默認情況下紧唱,磁盤空間將以 1KB 為單位進行顯示漏益,除非環(huán)境變量 POSIXLY_CORRECT 被指定绰疤,那樣將以512字節(jié)為單位進行顯示:

-a 全部文件系統(tǒng)列表-h 以方便閱讀的方式顯示信息-i 顯示inode信息-k 區(qū)塊為1024字節(jié)-l 只顯示本地磁盤-T 列出文件系統(tǒng)類型

實例:

(1)顯示磁盤使用情況

df-l

(2)以易讀方式列出所有文件系統(tǒng)及其類型

df-haT

3. du 命令

du 命令也是查看使用空間的癣猾,但是與 df 命令不同的是 Linux du 命令是對文件和目錄磁盤使用的空間的查看:

命令格式:

du[選項][文件]

常用參數(shù):

-a 顯示目錄中所有文件大小-k 以KB為單位顯示文件大小-m 以MB為單位顯示文件大小-g 以GB為單位顯示文件大小-h 以易讀方式顯示文件大小-s 僅顯示總計-c或--total? 除了顯示個別目錄或文件的大小外纷宇,同時也顯示所有目錄或文件的總和

實例:

(1)以易讀方式顯示文件夾內(nèi)及子文件夾大小

du-h scf/

(2)以易讀方式顯示文件夾內(nèi)所有文件大小

du-ah scf/

(3)顯示幾個文件或目錄各自占用磁盤空間的大小上陕,還統(tǒng)計它們的總和

du -hctest/ scf/

(4)輸出當前目錄下各個子目錄所使用的空間

du-hc --max-depth=1scf/

4. ls命令

就是 list 的縮寫释簿,通過 ls 命令不僅可以查看 linux 文件夾包含的文件辕万,而且可以查看文件權(quán)限(包括目錄醉途、文件夾隘擎、文件權(quán)限)查看目錄信息等等货葬。

常用參數(shù)搭配:

ls-a 列出目錄所有文件震桶,包含以.開始的隱藏文件ls-A 列出除.及..的其它文件ls-r 反序排列l(wèi)s-t 以文件修改時間排序ls-S 以文件大小排序ls-h 以易讀大小顯示ls-l 除了文件名之外磨取,還將文件的權(quán)限忙厌、所有者逢净、文件大小等信息詳細列出來

實例:

(1) 按易讀方式按時間反序排序,并顯示文件詳細信息

ls-lhrt

(2) 按大小反序顯示文件詳細信息

ls-lrS

(3)列出當前目錄中所有以"t"開頭的目錄的詳細內(nèi)容

ls-l t*

(4) 列出文件絕對路徑(不包含隱藏文件)

ls| sed"s:^:`pwd`/:"

(5) 列出文件絕對路徑(包含隱藏文件)

find$pwd-maxdepth1| xargs ls -ld

5. mkdir 命令

mkdir 命令用于創(chuàng)建文件夾着饥。

可用選項:

-m: 對新建目錄設置存取權(quán)限呵哨,也可以用 chmod 命令設置;

-p: 可以是一個路徑名稱孟害。此時若路徑中的某些目錄尚不存在,加上此選項后挨务,系統(tǒng)將自動建立好那些尚不在的目錄,即一次可以建立多個目錄朝巫。

實例:

(1)當前工作目錄下創(chuàng)建名為 t的文件夾

mkdirt

(2)在 tmp 目錄下創(chuàng)建路徑為 test/t1/t 的目錄劈猿,若不存在揪荣,則創(chuàng)建:

mkdir -p /tmp/test/t1/t

6. pwd 命令

pwd 命令用于查看當前工作目錄路徑。

實例:

(1)查看當前路徑

pwd

(2)查看軟鏈接的實際路徑

pwd-P

7. rmdir 命令

從一個目錄中刪除一個或多個子目錄項揽乱,刪除某目錄時也必須具有對其父目錄的寫權(quán)限。

注意:不能刪除非空目錄

實例:

(1)當 parent 子目錄被刪除后使它也成為空目錄的話撒犀,則順便一并刪除:

rmdir-p parent/child/child11

九或舞、網(wǎng)絡通訊命令

1. ifconfig 命令

ifconfig 用于查看和配置 Linux 系統(tǒng)的網(wǎng)絡接口。

查看所有網(wǎng)絡接口及其狀態(tài):ifconfig -a 诈豌。

使用 up 和 down 命令啟動或停止某個接口:ifconfig eth0 up 和 ifconfig eth0 down 彤蔽。

2. iptables 命令

iptables 顿痪,是一個配置 Linux 內(nèi)核防火墻的命令行工具蚁袭。功能非常強大,對于我們開發(fā)來說,主要掌握如何開放端口即可厦章。例如:

把來源 IP 為 192.168.1.101 訪問本機 80 端口的包直接拒絕:iptables -I INPUT -s 192.168.1.101 -p tcp --dport 80 -j REJECT 。

開啟 80 端口群发,因為web對外都是這個端口

iptables-A INPUT -p tcp --dport80-j ACCEP

另外,要注意使用 iptables save 命令起愈,進行保存抬虽。否則,服務器重啟后笛辟,配置的規(guī)則將丟失疑故。

3. netstat 命令

Linux netstat命令用于顯示網(wǎng)絡狀態(tài)纵势。

利用netstat指令可讓你得知整個Linux系統(tǒng)的網(wǎng)絡情況。

語法

netstat [-acCeFghilMnNoprstuvVwx][-A<網(wǎng)絡類型>][--ip]

參數(shù)說明:

-a或–all 顯示所有連線中的Socket牛曹。

-A<網(wǎng)絡類型>或–<網(wǎng)絡類型> 列出該網(wǎng)絡類型連線中的相關(guān)地址。

-c或–continuous 持續(xù)列出網(wǎng)絡狀態(tài)阅虫。

-C或–cache 顯示路由器配置的快取信息颓帝。

-e或–extend 顯示網(wǎng)絡其他相關(guān)信息。

-F或–fib 顯示FIB瘪板。

-g或–groups 顯示多重廣播功能群組組員名單。

-h或–help 在線幫助魏身。

-i或–interfaces 顯示網(wǎng)絡界面信息表單。

-l或–listening 顯示監(jiān)控中的服務器的Socket家制。

-M或–masquerade 顯示偽裝的網(wǎng)絡連線觅廓。

-n或–numeric 直接使用IP地址杈绸,而不通過域名服務器。

-N或–netlink或–symbolic 顯示網(wǎng)絡硬件外圍設備的符號連接名稱劫侧。

-o或–timers 顯示計時器。

-p或–programs 顯示正在使用Socket的程序識別碼和程序名稱审姓。

-r或–route 顯示Routing Table次坡。

-s或–statistice 顯示網(wǎng)絡工作信息統(tǒng)計表砸琅。

-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ù)相同础锐。

實例

如何查看系統(tǒng)都開啟了哪些端口皆警?

[root@centos6~ 13:20 #55]# netstat -lnpActiveInternet connections (only servers)ProtoRecv-Q Send-Q Local Address? ? ? ? ? ? ? Foreign Address? ? ? ? ? ? State? ? ? PID/Program nametcp0? ? ? 0 0.0.0.0:22? ? ? ? ? ? ? ? ? 0.0.0.0:*? ? ? ? ? ? ? ? ? LISTEN? ? ? 1035/sshdtcp0? ? ? 0 :::22? ? ? ? ? ? ? ? ? ? ? :::*? ? ? ? ? ? ? ? ? ? ? ? LISTEN? ? ? 1035/sshdudp0? ? ? 0 0.0.0.0:68? ? ? ? ? ? ? ? ? 0.0.0.0:*? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 931/dhclientActiveUNIX domain sockets (only servers)ProtoRefCnt Flags? ? ? Type? ? ? State? ? ? ? I-Node PID/Program name? ? Pathunix2? ? ? [ ACC ]? ? STREAM? ? LISTENING? ? 6825? 1/init? ? ? ? ? ? ? @/com/ubuntu/upstartunix2? ? ? [ ACC ]? ? STREAM? ? LISTENING? ? 8429? 1003/dbus-daemon? ? /var/run/dbus/system_bus_socket

如何查看網(wǎng)絡連接狀況?

[root@centos6 ~ 13:22 #58]#netstat-anActiveInternetconnections(serversandestablished)ProtoRecv-QSend-QLocalAddressForeignAddressStatetcp0? ? ? 0 0.0.0.0:220.0.0.0:*LISTENtcp0? ? ? 0 192.168.147.130:22192.168.147.1:23893ESTABLISHEDtcp0? ? ? 0 :::22:::*LISTENudp0? ? ? 0 0.0.0.0:680.0.0.0:*

如何統(tǒng)計系統(tǒng)當前進程連接數(shù)?

輸入命令 netstat -an | grep ESTABLISHED | wc -l 菊值。

輸出結(jié)果 177 。一共有 177 連接數(shù)儿子。

用 netstat 命令配合其他命令,按照源 IP 統(tǒng)計所有到 80 端口的 ESTABLISHED 狀態(tài)鏈接的個數(shù)愉适?

嚴格來說,這個題目考驗的是對 awk 的使用腰湾。

首先倒槐,使用 netstat -an|grep ESTABLISHED 命令。結(jié)果如下:

tcp0? ? ? 0 120.27.146.122:80113.65.18.33:62721ESTABLISHEDtcp0? ? ? 0 120.27.146.122:8027.43.83.115:47148ESTABLISHEDtcp0? ? ? 0 120.27.146.122:58838106.39.162.96:443ESTABLISHEDtcp0? ? ? 0 120.27.146.122:52304203.208.40.121:443ESTABLISHEDtcp0? ? ? 0 120.27.146.122:33194203.208.40.122:443ESTABLISHEDtcp0? ? ? 0 120.27.146.122:53758101.37.183.144:443ESTABLISHEDtcp0? ? ? 0 120.27.146.122:2701723.105.193.30:50556ESTABLISHED

4. ping 命令

Linux ping命令用于檢測主機。

執(zhí)行ping指令會使用ICMP傳輸協(xié)議着逐,發(fā)出要求回應的信息,若遠端主機的網(wǎng)絡功能沒有問題,就會回應該信息省有,因而得知該主機運作正常。

指定接收包的次數(shù)

ping-c2www.baidu.com

5. telnet 命令

Linux telnet命令用于遠端登入搏予。

執(zhí)行telnet指令開啟終端機階段作業(yè)碗殷,并登入遠端主機代乃。

語法

telnet?[-8acdEfFKLrx][-b<主機別名>][-e<脫離字符>][-k<域名>][-l<用戶名稱>][-n<記錄文件>][-S<服務類型>][-X<認證形態(tài)>][主機名稱或IP地址<通信端口>]

參數(shù)說明:

-8 允許使用8位字符資料原茅,包括輸入與輸出。

-a 嘗試自動登入遠端系統(tǒng)通贞。

-b<主機別名> 使用別名指定遠端主機名稱。

-c 不讀取用戶專屬目錄里的.telnetrc文件。

-d 啟動排錯模式绘搞。

-e<脫離字符> 設置脫離字符。

-E 濾除脫離字符蒿褂。

-f 此參數(shù)的效果和指定"-F"參數(shù)相同也祠。

-F 使用Kerberos V5認證時诈嘿,加上此參數(shù)可把本地主機的認證數(shù)據(jù)上傳到遠端主機奖亚。

-k<域名> 使用Kerberos認證時淳梦,加上此參數(shù)讓遠端主機采用指定的領(lǐng)域名,而非該主機的域名昔字。

-K 不自動登入遠端主機爆袍。

-l<用戶名稱> 指定要登入遠端主機的用戶名稱。

-L 允許輸出8位字符資料陨囊。

-n<記錄文件> 指定文件記錄相關(guān)信息弦疮。

-r 使用類似rlogin指令的用戶界面。

-S<服務類型> 設置telnet連線所需的IP TOS信息蜘醋。

-x 假設主機有支持數(shù)據(jù)加密的功能挂捅,就使用它。

-X<認證形態(tài)> 關(guān)閉指定的認證形態(tài)堂湖。

實例

登錄遠程主機

# 登錄IP為 192.168.0.5的遠程主機telnet192.168.0.5

十闲先、系統(tǒng)管理命令

1. date命令

顯示或設定系統(tǒng)的日期與時間。

命令參數(shù):

-d<字符串>  顯示字符串所指的日期與時間无蜂。字符串前后必須加上雙引號伺糠。-s<字符串>  根據(jù)字符串來設置日期與時間。字符串前后必須加上雙引號斥季。-u  顯示GMT训桶。%H 小時(00-23)%I 小時(00-12)%M 分鐘(以00-59來表示)%s 總秒數(shù)。起算時間為1970-01-01 00:00:00 UTC酣倾。%S 秒(以本地的慣用法來表示)%a 星期的縮寫舵揭。%A 星期的完整名稱。%d 日期(以01-31來表示)躁锡。%D 日期(含年月日)午绳。%m 月份(以01-12來表示)。%y 年份(以00-99來表示)映之。%Y 年份(以四位數(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 -dnext-day +%Y%m%d(明天的日期)或者:date -d tomorrow +%Y%m%ddate -dlast-day +%Y%m%d(昨天的日期) 或者:date -d yesterday +%Y%m%ddate -dlast-month +%Y%m(上個月是幾月)date -dnext-month +%Y%m(下個月是幾月)

2. 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)存使用總合

實例:

(1)顯示內(nèi)存使用情況

freefree-kfree-m

(2)以總和的形式顯示內(nèi)存的使用信息

free-t

(3)周期性查詢內(nèi)存使用情況

free-s10

3. kill 命令

發(fā)送指定的信號到相應進程。不指定型號將發(fā)送SIGTERM(15)終止指定進程蠢甲。如果任無法終止該程序可用"-KILL" 參數(shù)僵刮,其發(fā)送的信號為SIGKILL(9) ,將強制結(jié)束進程鹦牛,使用ps命令或者jobs 命令可以查看進程號搞糕。root用戶將影響用戶的進程,非root用戶只能影響自己的進程能岩。

常用參數(shù):

-l? 信號寞宫,若果不加信號的編號參數(shù)萧福,則使用“-l”參數(shù)會列出全部的信號名稱-a? 當處理當前進程時拉鹃,不限制命令名和進程號的對應關(guān)系-p? 指定kill 命令只打印相關(guān)進程的進程號,而不發(fā)送任何信號-s? 指定發(fā)送信號-u? 指定用戶

實例:

(1)先使用ps查找進程pro1,然后用kill殺掉

kill-9$(ps?-ef?|greppro1)

4. ps 命令

ps(process status)膏燕,用來查看當前運行的進程狀態(tài)钥屈,一次性查看,如果需要動態(tài)連續(xù)結(jié)果使用 top

linux上進程有5種狀態(tài):

1. 運行(正在運行或在運行隊列中等待)

2. 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到信號)

3. 不可中斷(收到信號不喚醒和不可運行, 進程必須等待直到有中斷發(fā)生)

4. 僵死(進程已終止, 但進程描述符存在, 直到父進程調(diào)用wait4()系統(tǒng)調(diào)用后釋放)

5. 停止(進程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號后停止運行運行)

ps 工具標識進程的5種狀態(tài)碼:

D不可中斷 uninterruptible sleep (usually IO)R運行 runnable (on run queue)S中斷 sleepingT停止 traced or stoppedZ僵死 a defunct (”zombie”) process

命令參數(shù):

-A顯示所有進程a顯示所有進程-a顯示同一終端下所有進程c顯示進程真實名稱e顯示環(huán)境變量f顯示進程間的關(guān)系r顯示當前終端運行的進程-aux顯示所有包含其它使用的進程

實例:

(1)顯示當前所有進程環(huán)境變量及進程間關(guān)系

ps-ef

(2)顯示當前所有進程

ps-A

(3)與grep聯(lián)用查找某進程

ps-aux | grep apache

(4)找出與 cron 與 syslog 這兩個服務有關(guān)的 PID 號碼

psaux | grep'(cron|syslog)'

5. rpm 命令

Linux rpm 命令用于管理套件坝辫。

rpm(redhat package manager) 原本是 Red Hat Linux 發(fā)行版專門用來管理 Linux 各項套件的程序篷就,由于它遵循 GPL 規(guī)則且功能強大方便,因而廣受歡迎近忙。逐漸受到其他發(fā)行版的采用竭业。RPM 套件管理方式的出現(xiàn),讓 Linux 易于安裝及舍,升級未辆,間接提升了 Linux 的適用度。

# 查看系統(tǒng)自帶jdkrpm-qa | grep jdk# 刪除系統(tǒng)自帶jdkrpm-e --nodeps 查看jdk顯示的數(shù)據(jù)# 安裝jdkrpm-ivh jdk-7u80-linux-x64.rpm

6. top 命令

顯示當前系統(tǒng)正在執(zhí)行的進程的相關(guān)信息锯玛,包括進程 ID咐柜、內(nèi)存占用率、CPU 占用率等

常用參數(shù):

-c 顯示完整的進程命令-s 保密模式-p <進程號> 指定進程顯示-n <次數(shù)>循環(huán)顯示次數(shù)

實例:

top-14:06:23up70days, 16:44,? 2users,loadaverage: 1.25, 1.32, 1.35Tasks: 206total,? 1running, 205sleeping,? 0stopped,? 0zombieCpu(s):? 5.9%us,? 3.4%sy,? 0.0%ni, 90.4%id,? 0.0%wa,? 0.0%hi,? 0.2%si,? 0.0%stMem:? 32949016ktotal, 14411180kused, 18537836kfree,? 169884kbuffersSwap: 32764556ktotal,? ? ? ? 0kused, 32764556kfree,? 3612636kcachedPIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND28894root22???0?1501m405m10mS52.21.32534:16java

前五行是當前系統(tǒng)情況整體的統(tǒng)計信息區(qū)攘残。

第一行拙友,任務隊列信息,同 uptime 命令的執(zhí)行結(jié)果歼郭,具體參數(shù)說明情況如下:

14:06:23 — 當前系統(tǒng)時間

up 70 days, 16:44 — 系統(tǒng)已經(jīng)運行了70天16小時44分鐘(在這期間系統(tǒng)沒有重啟過的吆R牌酢)

2 users — 當前有2個用戶登錄系統(tǒng)

load average: 1.15, 1.42, 1.44 — load average后面的三個數(shù)分別是1分鐘、5分鐘病曾、15分鐘的負載情況姊途。

load average數(shù)據(jù)是每隔5秒鐘檢查一次活躍的進程數(shù),然后按特定算法計算出的數(shù)值知态。如果這個數(shù)除以邏輯CPU的數(shù)量捷兰,結(jié)果高于5的時候就表明系統(tǒng)在超負荷運轉(zhuǎn)了。

第二行负敏,Tasks — 任務(進程)贡茅,具體信息說明如下:

系統(tǒng)現(xiàn)在共有206個進程,其中處于運行中的有1個其做,205個在休眠(sleep)顶考,stoped狀態(tài)的有0個,zombie狀態(tài)(僵尸)的有0個妖泄。

第三行驹沿,cpu狀態(tài)信息,具體屬性說明如下:

5.9%us— 用戶空間占用CPU的百分比蹈胡。3.4%sy— 內(nèi)核空間占用CPU的百分比渊季。0.0%ni— 改變過優(yōu)先級的進程占用CPU的百分比90.4%id— 空閑CPU百分比0.0%wa—IO等待占用CPU的百分比0.0%hi— 硬中斷(HardwareIRQ)占用CPU的百分比0.2%si— 軟中斷(SoftwareInterrupts)占用CPU的百分比

備注:在這里CPU的使用比率和windows概念不同朋蔫,需要理解linux系統(tǒng)用戶空間和內(nèi)核空間的相關(guān)知識!

第四行却汉,內(nèi)存狀態(tài)驯妄,具體信息如下:

32949016ktotal — 物理內(nèi)存總量(32GB)14411180kused — 使用中的內(nèi)存總量(14GB)18537836kfree — 空閑內(nèi)存總量(18GB)169884kbuffers — 緩存的內(nèi)存量 (169M)

第五行,swap交換分區(qū)信息合砂,具體信息說明如下:

32764556ktotal — 交換區(qū)總量(32GB)0kused — 使用的交換區(qū)總量(0K)32764556kfree — 空閑交換區(qū)總量(32GB)3612636kcached — 緩沖的交換區(qū)總量(3.6GB)

第六行青扔,空行。

第七行以下:各進程(任務)的狀態(tài)監(jiān)控翩伪,項目列信息說明如下:

PID— 進程idUSER— 進程所有者PR— 進程優(yōu)先級NI— nice值微猖。負值表示高優(yōu)先級,正值表示低優(yōu)先級VIRT— 進程使用的虛擬內(nèi)存總量缘屹,單位kb励两。VIRT=SWAP+RESRES— 進程使用的、未被換出的物理內(nèi)存大小囊颅,單位kb当悔。RES=CODE+DATASHR— 共享內(nèi)存大小,單位kbS— 進程狀態(tài)踢代。D=不可中斷的睡眠狀態(tài) R=運行 S=睡眠 T=跟蹤/停止 Z=僵尸進程%CPU— 上次更新到現(xiàn)在的CPU時間占用百分比%MEM— 進程使用的物理內(nèi)存百分比TIME+— 進程使用的CPU時間總計盲憎,單位1/100秒COMMAND— 進程名稱(命令名/命令行)

top 交互命令

h顯示top交互命令幫助信息c切換顯示命令名稱和完整命令行m以內(nèi)存使用率排序P根據(jù)CPU使用百分比大小進行排序T根據(jù)時間/累計時間進行排序W將當前設置寫入~/.toprc文件中o或者O改變顯示項目的順序

7. yum 命令

yum( Yellow dog Updater, Modified)是一個在Fedora和RedHat以及SUSE中的Shell前端軟件包管理器。

基於RPM包管理胳挎,能夠從指定的服務器自動下載RPM包并且安裝饼疙,可以自動處理依賴性關(guān)系,并且一次安裝所有依賴的軟體包慕爬,無須繁瑣地一次次下載窑眯、安裝。

yum提供了查找医窿、安裝磅甩、刪除某一個、一組甚至全部軟件包的命令姥卢,而且命令簡潔而又好記卷要。

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

實例

安裝 pam-devel

[root@www ~]# yum install pam-devel

十一、備份壓縮命令

1. bzip2 命令

創(chuàng)建 *.bz2 壓縮文件:bzip2 test.txt 独榴。

解壓 *.bz2 文件:bzip2 -d test.txt.bz2 僧叉。

2. gzip 命令

創(chuàng)建一個 *.gz 的壓縮文件:gzip test.txt 。

解壓 *.gz 文件:gzip -d test.txt.gz 棺榔。

顯示壓縮的比率:gzip -l *.gz 瓶堕。

3. tar 命令

用來壓縮和解壓文件。tar 本身不具有壓縮功能症歇,只具有打包功能郎笆,有關(guān)壓縮及解壓是調(diào)用其它的功能來完成谭梗。

弄清兩個概念:打包和壓縮。打包是指將一大堆文件或目錄變成一個總的文件题画;壓縮則是將一個大的文件通過一些壓縮算法變成一個小文件

常用參數(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實例:壓縮gzipfileName.tar.gz和.tgz解壓:gunzipfilename.gz或gzip-dfilename.gz對應:tarzcvffilename.tar.gztarzxvffilename.tar.gzbz2實例:壓縮bzip2-zfilename.tar.bz2解壓:bunzipfilename.bz2或bzip-dfilename.bz2對應:tarjcvffilename.tar.gz解壓:tarjxvffilename.tar.bz2

實例:

(1)將文件全部打包成 tar 包

tar-cvflog.tar1.log,2.log或tar-cvflog.*

(2)將 /etc 下的所有文件及目錄打包到指定目錄,并使用 gz 壓縮

tar-zcvf /tmp/etc.tar.gz /etc

(3)查看剛打包的文件內(nèi)容(一定加z德频,因為是使用 gzip 壓縮的)

tar-ztvf /tmp/etc.tar.gz

(4)要壓縮打包 /home, /etc 苍息,但不要 /home/dmtsai

tar--exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

4. unzip 命令

??? ·解壓 *.zip 文件:unzip test.zip 。

·查看 *.zip 文件的內(nèi)容:unzip -l jasper.zip 壹置。

--END--

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末竞思,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子钞护,更是在濱河造成了極大的恐慌盖喷,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件难咕,死亡現(xiàn)場離奇詭異课梳,居然都是意外死亡,警方通過查閱死者的電腦和手機余佃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門暮刃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人爆土,你說我怎么就攤上這事椭懊。” “怎么了步势?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵氧猬,是天一觀的道長。 經(jīng)常有香客問我坏瘩,道長盅抚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任倔矾,我火速辦了婚禮泉哈,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘破讨。我一直安慰自己丛晦,他們只是感情好,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布提陶。 她就那樣靜靜地躺著烫沙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪隙笆。 梳的紋絲不亂的頭發(fā)上锌蓄,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天升筏,我揣著相機與錄音,去河邊找鬼瘸爽。 笑死您访,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的剪决。 我是一名探鬼主播灵汪,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼柑潦!你這毒婦竟也來了享言?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤渗鬼,失蹤者是張志新(化名)和其女友劉穎览露,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體譬胎,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡差牛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了堰乔。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片多糠。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖浩考,靈堂內(nèi)的尸體忽然破棺而出夹孔,到底是詐尸還是另有隱情,我是刑警寧澤析孽,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布搭伤,位于F島的核電站,受9級特大地震影響袜瞬,放射性物質(zhì)發(fā)生泄漏怜俐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一邓尤、第九天 我趴在偏房一處隱蔽的房頂上張望拍鲤。 院中可真熱鬧,春花似錦汞扎、人聲如沸季稳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽景鼠。三九已至,卻和暖如春痹扇,著一層夾襖步出監(jiān)牢的瞬間铛漓,已是汗流浹背溯香。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留浓恶,地道東北人玫坛。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像包晰,于是被迫代替她去往敵國和親湿镀。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

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