0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

100個(gè)Linux知識(shí)點(diǎn)匯總

Q4MP_gh_c472c21 ? 來(lái)源:嵌入式ARM ? 作者:嵌入式ARM ? 2020-12-24 16:40 ? 次閱讀

一、Linux 概述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)。

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

Linux和Unix都是功能強(qiáng)大的操作系統(tǒng),都是應(yīng)用廣泛的服務(wù)器操作系統(tǒng),有很多相似之處,甚至有一部分人錯(cuò)誤地認(rèn)為Unix和Linux操作系統(tǒng)是一樣的,然而,事實(shí)并非如此,以下是兩者的區(qū)別。

1. 開(kāi)源性
Linux是一款開(kāi)源操作系統(tǒng),不需要付費(fèi),即可使用;Unix是一款對(duì)源碼實(shí)行知識(shí)產(chǎn)權(quán)保護(hù)的傳統(tǒng)商業(yè)軟件,使用需要付費(fèi)授權(quán)使用。

2. 跨平臺(tái)性
Linux操作系統(tǒng)具有良好的跨平臺(tái)性能,可運(yùn)行在多種硬件平臺(tái)上;Unix操作系統(tǒng)跨平臺(tái)性能較弱,大多需與硬件配套使用。

3. 可視化界面
Linux除了進(jìn)行命令行操作,還有窗體管理系統(tǒng);Unix只是命令行下的系統(tǒng)。

4. 硬件環(huán)境
Linux操作系統(tǒng)對(duì)硬件的要求較低,安裝方法更易掌握;Unix對(duì)硬件要求比較苛刻,安裝難度較大。

5. 用戶群體
Linux的用戶群體很廣泛,個(gè)人和企業(yè)均可使用;Unix的用戶群體比較窄,多是安全性要求高的大型企業(yè)使用,如銀行、電信部門(mén)等,或者Unix硬件廠商使用,如Sun等。

相比于Unix操作系統(tǒng),Linux操作系統(tǒng)更受廣大計(jì)算機(jī)愛(ài)好者的喜愛(ài),主要原因是Linux操作系統(tǒng)具有Unix操作系統(tǒng)的全部功能,并且能夠在普通PC計(jì)算機(jī)上實(shí)現(xiàn)全部的Unix特性,開(kāi)源免費(fèi)的特性,更容易普及使用!

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)管理

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

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

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

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


用戶空間(User Space) :用戶空間又包括用戶的應(yīng)用程序(User Applications)、C 庫(kù)(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í)行的指令和訪問(wèn)的寄存器不同。
2. Linux 從 CPU 的角度出發(fā),為了保護(hù)內(nèi)核的安全,把系統(tǒng)分成了兩部分。

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

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

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

1. BASH命令區(qū)分大小寫(xiě),而DOS命令則不區(qū)分;
2. 在BASH下,/ character是目錄分隔符,作為轉(zhuǎn)義字符。在DOS下,/用作命令參數(shù)分隔符,是目錄分隔符
3. OS遵循命名文件中的約定,即8個(gè)字符的文件名后跟一個(gè)點(diǎn),擴(kuò)展名為3個(gè)字符。BASH沒(méi)有遵循這樣的慣例。

7. Linux 開(kāi)機(jī)啟動(dòng)過(guò)程?

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)行終端,輸入用戶名和密碼。

8. Linux系統(tǒng)缺省的運(yùn)行級(jí)別?

關(guān)機(jī)。
單機(jī)用戶模式。
字符界面的多用戶模式(不支持網(wǎng)絡(luò))。
字符界面的多用戶模式。
未分配使用。
圖形界面的多用戶模式。
重啟。

9. Linux 使用的進(jìn)程間通信方式?

  • 管道(pipe)、流管道(s_pipe)、有名管道(FIFO)。

  • 信號(hào)(signal) 。

  • 消息隊(duì)列。

  • 共享內(nèi)存。

  • 信號(hào)量。

  • 套接字(socket) 。

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

比較重要的是/var/log/messages日志文件。

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

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

通常,一個(gè)桌面環(huán)境,如KDE或Gnome,足以在沒(méi)有問(wèn)題的情況下運(yùn)行。盡管系統(tǒng)允許從一個(gè)環(huán)境切換到另一個(gè)環(huán)境,但這對(duì)用戶來(lái)說(shuō)都是優(yōu)先考慮的問(wèn)題。有些程序在一個(gè)環(huán)境中工作而在另一個(gè)環(huán)境中無(wú)法工作,因此它也可以被視為選擇使用哪個(gè)環(huán)境的一個(gè)因素。

12. 什么是交換空間?

交換空間是Linux使用的一定空間,用于臨時(shí)保存一些并發(fā)運(yùn)行的程序。當(dāng)RAM沒(méi)有足夠的內(nèi)存來(lái)容納正在執(zhí)行的所有程序時(shí),就會(huì)發(fā)生這種情況。

13. 什么是root帳戶

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

14. 什么是LILO?

LILO是Linux的引導(dǎo)加載程序。它主要用于將Linux操作系統(tǒng)加載到主內(nèi)存中,以便它可以開(kāi)始運(yùn)行。

15. 什么是BASH?

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

16. 什么是CLI?

命令行界面(英語(yǔ)**:command-line interface**,縮寫(xiě)]:CLI)是在圖形用戶界面得到普及之前使用最為廣泛的用戶界面,它通常不支持鼠標(biāo),用戶通過(guò)鍵盤(pán)輸入指令,計(jì)算機(jī)接收到指令后,予以執(zhí)行。也有人稱之為字符用戶界面(CUI)。

通常認(rèn)為,命令行界面(CLI)沒(méi)有圖形用戶界面(GUI)那么方便用戶操作。因?yàn)椋钚薪缑娴能浖ǔP枰脩粲洃洸僮鞯拿?,但是,由于其本身的特點(diǎn),命令行界面要較圖形用戶界面節(jié)約計(jì)算機(jī)系統(tǒng)的資源。在熟記命令的前提下,使用命令行界面往往要較使用圖形用戶界面的操作速度要快。所以,圖形用戶界面的操作系統(tǒng)中,都保留著可選的命令行界面。

17. 什么是GUI?

圖形用戶界面(Graphical User Interface,簡(jiǎn)稱 GUI,又稱圖形用戶接口)是指采用圖形方式顯示的計(jì)算機(jī)操作用戶界面。

圖形用戶界面是一種人與計(jì)算機(jī)通信的界面顯示格式,允許用戶使用鼠標(biāo)等輸入設(shè)備操縱屏幕上的圖標(biāo)或菜單選項(xiàng),以選擇命令、調(diào)用文件、啟動(dòng)程序或執(zhí)行其它一些日常任務(wù)。與通過(guò)鍵盤(pán)輸入文本或字符命令來(lái)完成例行任務(wù)的字符界面相比,圖形用戶界面有許多優(yōu)點(diǎn)。

18. 開(kāi)源的優(yōu)勢(shì)是什么?

開(kāi)源允許你將軟件(包括源代碼)免費(fèi)分發(fā)給任何感興趣的人。然后,人們可以添加功能,甚至可以調(diào)試和更正源代碼中的錯(cuò)誤。它們甚至可以讓它運(yùn)行得更好,然后再次自由地重新分配這些增強(qiáng)的源代碼。這最終使社區(qū)中的每個(gè)人受益。

19. GNU項(xiàng)目的重要性是什么?

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

二、磁盤(pán)、目錄、文件

1. 簡(jiǎn)單 Linux 文件系統(tǒng)?

在 Linux 操作系統(tǒng)中,所有被操作系統(tǒng)管理的資源,例如網(wǎng)絡(luò)接口卡、磁盤(pán)驅(qū)動(dòng)器、打印機(jī)、輸入輸出設(shè)備、普通文件或是目錄都被看作是一個(gè)文件。

也就是說(shuō)在 Linux 系統(tǒng)中有一個(gè)重要的概念**:一切都是文件**。其實(shí)這是 Unix 哲學(xué)的一個(gè)體現(xiàn),而 Linux 是重寫(xiě) Unix 而來(lái),所以這個(gè)概念也就傳承了下來(lái)。在 Unix 系統(tǒng)中,把一切資源都看作是文件,包括硬件設(shè)備。UNIX系統(tǒng)把每個(gè)硬件都看成是一個(gè)文件,通常稱為設(shè)備文件,這樣用戶就可以用讀寫(xiě)文件的方式實(shí)現(xiàn)對(duì)硬件的訪問(wèn)。

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

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

這個(gè)問(wèn)題,一般不會(huì)問(wèn)。更多是實(shí)際使用時(shí),需要知道。

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

常見(jiàn)目錄說(shuō)明:

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

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

  • /home:存放所有用戶文件的根目錄,是用戶主目錄的基點(diǎn),比如用戶user的主目錄就是/home/user,可以用~user表示;

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

  • /proc:虛擬文件系統(tǒng)目錄,是系統(tǒng)內(nèi)存的映射。可直接訪問(wèn)這個(gè)目錄來(lái)獲取系統(tǒng)信息;

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

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

  • /dev:用于存放設(shè)備文件;

  • /mnt:系統(tǒng)管理員安裝臨時(shí)文件系統(tǒng)的安裝點(diǎn),系統(tǒng)提供這個(gè)目錄是讓用戶臨時(shí)掛載其他的文件系統(tǒng);

  • /boot:存放用于系統(tǒng)引導(dǎo)時(shí)使用的各種文件;

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

  • /tmp:用于存放各種臨時(shí)文件,是公用的臨時(shí)文件存儲(chǔ)點(diǎn);

  • /var:用于存放運(yùn)行時(shí)需要改變數(shù)據(jù)的文件,也是某些大文件的溢出區(qū),比方說(shuō)各種服務(wù)的日志文件(系統(tǒng)啟動(dòng)日志等。)等;

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


3. 什么是 inode ?

一般來(lái)說(shuō),面試不會(huì)問(wèn) inode 。但是 inode 是一個(gè)重要概念,是理解 Unix/Linux 文件系統(tǒng)和硬盤(pán)儲(chǔ)存的基礎(chǔ)。

理解inode,要從文件儲(chǔ)存說(shuō)起。

文件儲(chǔ)存在硬盤(pán)上,硬盤(pán)的最小存儲(chǔ)單位叫做"扇區(qū)"(Sector)。每個(gè)扇區(qū)儲(chǔ)存512字節(jié)(相當(dāng)于0.5KB)。

操作系統(tǒng)讀取硬盤(pán)的時(shí)候,不會(huì)一個(gè)個(gè)扇區(qū)地讀取,這樣效率太低,而是一次性連續(xù)讀取多個(gè)扇區(qū),即一次性讀取一個(gè)"塊"(block)。這種由多個(gè)扇區(qū)組成的"塊",是文件存取的最小單位。"塊"的大小,最常見(jiàn)的是4KB,即連續(xù)八個(gè) sector組成一個(gè) block。

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

每一個(gè)文件都有對(duì)應(yīng)的inode,里面包含了與該文件有關(guān)的一些信息。

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

一般來(lái)說(shuō),面試官不太會(huì)問(wèn)這個(gè)題目。

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

·inode 節(jié)點(diǎn)是一個(gè) 64 字節(jié)長(zhǎng)的表,表中包含了文件的相關(guān)信息,其中有文件的大小、文件所有者、文件的存取許可方式以及文件的類型等重要信息。在 inode 節(jié)點(diǎn)表中最重要的內(nèi)容是磁盤(pán)地址表。在磁盤(pán)地址表中有 13 個(gè)塊號(hào),文件將以塊號(hào)在磁盤(pán)地址表中出現(xiàn)的順序依次讀取相應(yīng)的塊。
·Linux 文件系統(tǒng)通過(guò)把 inode 節(jié)點(diǎn)和文件名進(jìn)行連接,當(dāng)需要讀取該文件時(shí),文件系統(tǒng)在當(dāng)前目錄表中查找該文件名對(duì)應(yīng)的項(xiàng),由此得到該文件相對(duì)應(yīng)的 inode 節(jié)點(diǎn)號(hào),通過(guò)該 inode 節(jié)點(diǎn)的磁盤(pán)地址表把分散存放的文件物理塊連接成文件的邏輯結(jié)構(gòu)。

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

1)硬鏈接

由于 Linux 下的文件是通過(guò)索引節(jié)點(diǎn)(inode)來(lái)識(shí)別文件,硬鏈接可以認(rèn)為是一個(gè)指針,指向文件索引節(jié)點(diǎn)的指針,系統(tǒng)并不為它重新分配 inode 。每添加一個(gè)一個(gè)硬鏈接,文件的鏈接數(shù)就加 1 。

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

2)軟鏈接

軟鏈接克服了硬鏈接的不足,沒(méi)有任何文件系統(tǒng)的限制,任何用戶可以創(chuàng)建指向目錄的符號(hào)鏈接。因而現(xiàn)在更為廣泛使用,它具有更大的靈活性,甚至可以跨越不同機(jī)器、不同網(wǎng)絡(luò)對(duì)文件進(jìn)行鏈接。

不足:因?yàn)殒溄游募性募穆窂叫畔?,所以?dāng)原文件從一個(gè)目錄下移到其他目錄中,再訪問(wèn)鏈接文件,系統(tǒng)就找不到了,而硬鏈接就沒(méi)有這個(gè)缺陷,你想怎么移就怎么移;還有它要系統(tǒng)分配額外的空間用于建立新的索引節(jié)點(diǎn)和保存原文件的路徑。

實(shí)際場(chǎng)景下,基本是使用軟鏈接??偨Y(jié)區(qū)別如下:

·硬鏈接不可以跨分區(qū),軟件鏈可以跨分區(qū)。
·硬鏈接指向一個(gè) inode 節(jié)點(diǎn),而軟鏈接則是創(chuàng)建一個(gè)新的 inode 節(jié)點(diǎn)。
·刪除硬鏈接文件,不會(huì)刪除原文件,刪除軟鏈接文件,會(huì)把原文件刪除。

5. RAID 是什么?

RAID 全稱為獨(dú)立磁盤(pán)冗余陣列(Redundant Array of Independent Disks),基本思想就是把多個(gè)相對(duì)便宜的硬盤(pán)組合起來(lái),成為一個(gè)硬盤(pán)陣列組,使性能達(dá)到甚至超過(guò)一個(gè)價(jià)格昂貴、 容量巨大的硬盤(pán)。RAID 通常被用在服務(wù)器電腦上,使用完全相同的硬盤(pán)組成一個(gè)邏輯扇區(qū),因此操作系統(tǒng)只會(huì)把它當(dāng)做一個(gè)硬盤(pán)。

RAID 分為不同的等級(jí),各個(gè)不同的等級(jí)均在數(shù)據(jù)可靠性及讀寫(xiě)性能上做了不同的權(quán)衡。在實(shí)際應(yīng)用中,可以依據(jù)自己的實(shí)際需求選擇不同的 RAID 方案。

當(dāng)然,因?yàn)楹芏?a target="_blank">公司都使用云服務(wù),大家很難接觸到 RAID 這個(gè)概念,更多的可能是普通云盤(pán)、SSD 云盤(pán)醬紫的概念。

三、安全

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

1、添加普通用戶登陸,禁止 root 用戶登陸,更改 SSH 端口號(hào)。

修改 SSH 端口不一定絕對(duì)哈。當(dāng)然,如果要暴露在外網(wǎng),建議改下。l

2、服務(wù)器使用密鑰登陸,禁止密碼登陸。

3、開(kāi)啟防火墻,關(guān)閉 SElinux ,根據(jù)業(yè)務(wù)需求設(shè)置相應(yīng)的防火墻規(guī)則。

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

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

也可以安裝 VPN 等軟件,只允許連接 VPN 到服務(wù)器上。

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

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

8、做好軟件層面的防護(hù)。
8.1 設(shè)置 nginx_waf 模塊防止 SQL 注入。
8.2 把 Web 服務(wù)使用 www 用戶啟動(dòng),更改網(wǎng)站目錄的所有者和所屬組為 www 。

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

CC 攻擊,主要是用來(lái)攻擊頁(yè)面的,模擬多個(gè)用戶不停的對(duì)你的頁(yè)面進(jìn)行訪問(wèn),從而使你的系統(tǒng)資源消耗殆盡。

DDOS 攻擊,中文名叫分布式拒絕服務(wù)攻擊,指借助服務(wù)器技術(shù)將多個(gè)計(jì)算機(jī)聯(lián)合起來(lái)作為攻擊平臺(tái),來(lái)對(duì)一個(gè)或多個(gè)目標(biāo)發(fā)動(dòng) DDOS 攻擊。

攻擊,即是通過(guò)大量合法的請(qǐng)求占用大量網(wǎng)絡(luò)資源,以達(dá)到癱瘓網(wǎng)絡(luò)的目的。

怎么預(yù)防 CC 攻擊和 DDOS 攻擊?

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

流量清洗這一塊,主要是買(mǎi) ISP 服務(wù)商的防攻擊的服務(wù)就可以,機(jī)房一般有空余流量,我們一般是買(mǎi)服務(wù),畢竟攻擊不會(huì)是持續(xù)長(zhǎng)時(shí)間。

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

由于程序員的水平及經(jīng)驗(yàn)參差不齊,大部分程序員在編寫(xiě)代碼的時(shí)候,沒(méi)有對(duì)用戶輸入數(shù)據(jù)的合法性進(jìn)行判斷。

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

SQL注入,是從正常的 WWW 端口訪問(wèn),而且表面看起來(lái)跟一般的 Web 頁(yè)面訪問(wèn)沒(méi)什么區(qū)別,如果管理員沒(méi)查看日志的習(xí)慣,可能被入侵很長(zhǎng)時(shí)間都不會(huì)發(fā)覺(jué)。

如何過(guò)濾與預(yù)防?
數(shù)據(jù)庫(kù)網(wǎng)頁(yè)端注入這種,可以考慮使用 nginx_waf 做過(guò)濾與預(yù)防。

Shell


1. Shell 腳本是什么?

一個(gè) Shell 腳本是一個(gè)文本文件,包含一個(gè)或多個(gè)命令。作為系統(tǒng)管理員,我們經(jīng)常需要使用多個(gè)命令來(lái)完成一項(xiàng)任務(wù),我們可以添加這些所有命令在一個(gè)文本文件(Shell 腳本)來(lái)完成這些日常工作任務(wù)。

- 什么是默認(rèn)登錄 Shell ?

在 Linux 操作系統(tǒng),"/bin/bash" 是默認(rèn)登錄 Shell,是在創(chuàng)建用戶時(shí)分配的。

使用 chsh 命令可以改變默認(rèn)的 Shell 。示例如下所示:

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

-在 Shell 腳本中,如何寫(xiě)入注釋?

注釋可以用來(lái)描述一個(gè)腳本可以做什么和它是如何工作的。每一行注釋以 # 開(kāi)頭。例子如下:

#!/bin/bash## This is a commandecho “I am logged in as $USER

2. 語(yǔ)法級(jí)

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

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

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

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

- Shell腳本中 $? 標(biāo)記的用途是什么?

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

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

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

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

 root@localhost:~## ls /usr/bin/share    ls: cannot access /usr/bin/share: No such file or directory    root@localhost:~## echo $?    2

- Bourne Shell(bash) 中有哪些特殊的變量?
下面的表列出了 Bourne Shell 為命令行設(shè)置的特殊變量。

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

- 如何取消變量或取消變量賦值?
unset 命令用于取消變量或取消變量賦值。語(yǔ)法如下所示:

## unset <變量名>

- Shell 腳本中 if 語(yǔ)法如何嵌套?

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

- 在 Shell 腳本中如何比較兩個(gè)數(shù)字?
在 if-then 中使用測(cè)試命令( -gt 等)來(lái)比較兩個(gè)數(shù)字。例如:

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

- Shell 腳本中 case 語(yǔ)句的語(yǔ)法?
基礎(chǔ)語(yǔ)法如下:

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

Shell 腳本中 for 循環(huán)語(yǔ)法?
基礎(chǔ)語(yǔ)法如下:-

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

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

·如同 for 循環(huán),while 循環(huán)只要條件成立就重復(fù)它的命令塊。
·不同于 for循環(huán),while 循環(huán)會(huì)不斷迭代,直到它的條件不為真。

基礎(chǔ)語(yǔ)法:

while [ 條件 ]do命令…done

- do-while 語(yǔ)句的基本格式?

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

do{命令} while (條件)
    1    2    3    4

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

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

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

continue 命令不同于 break 命令,它只跳出當(dāng)前循環(huán)的迭代,而不是整個(gè)循環(huán)。continue 命令很多時(shí)候是很有用的,例如錯(cuò)誤發(fā)生,但我們依然希望繼續(xù)執(zhí)行大循環(huán)的時(shí)候。

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

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

#!/bin/bash 的作用?
#!/bin/bash 是 Shell 腳本的第一行,稱為釋伴(shebang)行。
    這里 # 符號(hào)叫做 hash ,而 ! 叫做 bang。    它的意思是命令通過(guò) /bin/bash 來(lái)執(zhí)行。

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

使用 -x' 數(shù)(sh -x myscript.sh)可以調(diào)試 Shell腳本。
另一個(gè)種方法是使用 -nv 參數(shù)(sh -nv myscript.sh)。

- 如何將標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出同時(shí)重定向到同一位置?

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

- 在 Shell 腳本中,如何測(cè)試文件?

test 命令可以用來(lái)測(cè)試文件?;A(chǔ)用法如下表格:

Test         用法-d 文件名    如果文件存在并且是目錄,返回true-e 文件名    如果文件存在,返回true-f 文件名    如果文件存在并且是普通文件,返回true-r 文件名    如果文件存在并可讀,返回true-s 文件名    如果文件存在并且不為空,返回true-w 文件名    如果文件存在并可寫(xiě),返回true-x 文件名    如果文件存在并可執(zhí)行,返回true

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

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

$ diskusage () { df -h ; }譯注:下面是我給的shell函數(shù)語(yǔ)法,原文沒(méi)有[ function ] 函數(shù)名 [()]{命令;[return int;]}

如何讓 Shell 就腳本得到來(lái)自終端的輸入?

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

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

- 如何執(zhí)行算術(shù)運(yùn)算?

有兩種方法來(lái)執(zhí)行算術(shù)運(yùn)算:

1、使用 expr 命令:## expr 5 + 2 。
2、用一個(gè)美元符號(hào)和方括號(hào)($[ 表達(dá)式 ]):test=$[16 + 4] ; test=$[16 + 4] 。


四、編程


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

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

2. 添加一個(gè)新組為 class1 ,然后添加屬于這個(gè)組的 30 個(gè)用戶,用戶名的形式為 stdxx ,其中 xx 從 01 到 30 ?

#!/bin/bashgroupadd class1for((i=1;i<31;i++))do        if [ $i -le 10 ];then                useradd -g class1 std0$i        else                useradd -g class1 std$i        fidone

3. 編寫(xiě) Shell 程序,實(shí)現(xiàn)自動(dòng)刪除 50 個(gè)賬號(hào)的功能,賬號(hào)名為stud1 至 stud50 ?

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

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

要求:
·刪除所有空行。
·一行中,如果包含 “11111”,則在 “11111” 前面插入 “AAA”,在 “11111” 后面插入 “BBB” 。比如:將內(nèi)容為 0000111112222 的一行改為 0000AAA11111BBB2222 。

[root@~]## cat -n /tmp/input.txt     1  000011111222     2     3  000011111222222     4  11111000000222     5     6     7  111111111111122222222222     8  2211111111     9  112222222    10  1122    11    ## 刪除所有空行命令[root@~]## sed '/^$/d' /tmp/input.txt0000111112220000111112222221111100000022211111111111112222222222222111111111122222221122
## 插入指定的字符[root@~]## sed 's#(11111)#AAA1BBB#g' /tmp/input.txt0000AAA11111BBB2220000AAA11111BBB222222AAA11111BBB000000222AAA11111BBBAAA11111BBB1112222222222222AAA11111BBB1111122222221122

五、實(shí)戰(zhàn)

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

一般來(lái)講,桌面用戶首選 Ubuntu ;服務(wù)器首選 RHEL 或 CentOS ,兩者中首選 CentOS 。

根據(jù)具體要求:

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

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

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

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

CentOS 7 系列,也慢慢使用的會(huì)比較多了。

2. 如何規(guī)劃一臺(tái) Linux 主機(jī),步驟是怎樣?

1、確定機(jī)器是做什么用的,比如是做 WEB 、DB、還是游戲服務(wù)器。

不同的用途,機(jī)器的配置會(huì)有所不同。

2、確定好之后,就要定系統(tǒng)需要怎么安裝,默認(rèn)安裝哪些系統(tǒng)、分區(qū)怎么做。

3、需要優(yōu)化系統(tǒng)的哪些參數(shù),需要?jiǎng)?chuàng)建哪些用戶等等的。

3. 請(qǐng)問(wèn)當(dāng)用戶反饋網(wǎng)站訪問(wèn)慢,如何處理?

- 有哪些方面的因素會(huì)導(dǎo)致網(wǎng)站網(wǎng)站訪問(wèn)慢?

1、服務(wù)器出口帶寬不夠用

本身服務(wù)器購(gòu)買(mǎi)的出口帶寬比較小。一旦并發(fā)量大的話,就會(huì)造成分給每個(gè)用戶的出口帶寬就小,訪問(wèn)速度自然就會(huì)慢。
跨運(yùn)營(yíng)商網(wǎng)絡(luò)導(dǎo)致帶寬縮減。例如,公司網(wǎng)站放在電信的網(wǎng)絡(luò)上,那么客戶這邊對(duì)接是長(zhǎng)城寬帶或聯(lián)通,這也可能導(dǎo)致帶寬的縮減。

2、服務(wù)器負(fù)載過(guò)大,導(dǎo)致響應(yīng)不過(guò)來(lái)

可以從兩個(gè)方面入手分析:
分析系統(tǒng)負(fù)載,使用 w 命令或者 uptime 命令查看系統(tǒng)負(fù)載。如果負(fù)載很高,則使用 top 命令查看 CPU ,MEM 等占用情況,要么是 CPU 繁忙,要么是內(nèi)存不夠。
如果這二者都正常,再去使用 sar 命令分析網(wǎng)卡流量,分析是不是遭到了攻擊。一旦分析出問(wèn)題的原因,采取對(duì)應(yīng)的措施解決,如決定要不要?dú)⑺酪恍┻M(jìn)程,或者禁止一些訪問(wèn)等。

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

如果慢查詢比較多。那么就要開(kāi)發(fā)人員或 DBA 協(xié)助進(jìn)行 SQL 語(yǔ)句的優(yōu)化。
如果數(shù)據(jù)庫(kù)響應(yīng)慢,考慮可以加一個(gè)數(shù)據(jù)庫(kù)緩存,如 Redis 等。然后,也可以搭建 MySQL 主從,一臺(tái) MySQL 服務(wù)器負(fù)責(zé)寫(xiě),其他幾臺(tái)從數(shù)據(jù)庫(kù)負(fù)責(zé)讀。

4、網(wǎng)站開(kāi)發(fā)代碼沒(méi)有優(yōu)化好

例如 SQL 語(yǔ)句沒(méi)有優(yōu)化,導(dǎo)致數(shù)據(jù)庫(kù)讀寫(xiě)相當(dāng)耗時(shí)。

- 針對(duì)網(wǎng)站訪問(wèn)慢,怎么去排查?

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

不要上來(lái)就看服務(wù)端的問(wèn)題。一定要從源頭開(kāi)始,逐步逐步往下。

2、如果訪問(wèn)也慢,那么可以利用瀏覽器的調(diào)試功能,看看加載那一項(xiàng)數(shù)據(jù)消耗時(shí)間過(guò)多,是圖片加載慢,還是某些數(shù)據(jù)加載慢。

3、針對(duì)服務(wù)器負(fù)載情況。查看服務(wù)器硬件(網(wǎng)絡(luò)、CPU、內(nèi)存)的消耗情況。如果是購(gòu)買(mǎi)的云主機(jī),比如阿里云,可以登錄阿里云平臺(tái)提供各方面的監(jiān)控,比如 CPU、內(nèi)存、帶寬的使用情況。

4、如果發(fā)現(xiàn)硬件資源消耗都不高,那么就需要通過(guò)查日志,比如看看 MySQL慢查詢的日志,看看是不是某條 SQL 語(yǔ)句查詢慢,導(dǎo)致網(wǎng)站訪問(wèn)慢。

- 怎么去解決?

1、如果是出口帶寬問(wèn)題,那么久申請(qǐng)加大出口帶寬。
2、如果慢查詢比較多,那么就要開(kāi)發(fā)人員或 DBA 協(xié)助進(jìn)行 SQL 語(yǔ)句的優(yōu)化。
3、如果數(shù)據(jù)庫(kù)響應(yīng)慢,考慮可以加一個(gè)數(shù)據(jù)庫(kù)緩存,如 Redis 等等。然后也可以搭建MySQL 主從,一臺(tái) MySQL 服務(wù)器負(fù)責(zé)寫(xiě),其他幾臺(tái)從數(shù)據(jù)庫(kù)負(fù)責(zé)讀。
4、申請(qǐng)購(gòu)買(mǎi) CDN 服務(wù),加載用戶的訪問(wèn)。
5、如果訪問(wèn)還比較慢,那就需要從整體架構(gòu)上進(jìn)行優(yōu)化咯。做到專角色專用,多臺(tái)服務(wù)器提供同一個(gè)服務(wù)。

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)絡(luò)子系統(tǒng)調(diào)優(yōu))。


六、文件管理命令


1. cat 命令

cat 命令用于連接文件并打印到標(biāo)準(zhǔn)輸出設(shè)備上。

cat 主要有三大功能:

1.一次顯示整個(gè)文件:

cat filename

2.從鍵盤(pán)創(chuàng)建一個(gè)文件:

cat > filename

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

3.將幾個(gè)文件合并為一個(gè)文件:

cat file1 file2 > file

-b 對(duì)非空輸出行號(hào)
-n 輸出所有行號(hào)

- 實(shí)例:

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

cat -n log2012.log log2013.log


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

cat -b log2012.log log2013.log log.log

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

cat >log.txt <>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)限分為三級(jí) : 文件擁有者、群組、其他。利用 chmod 可以控制文件如何被他人所調(diào)用。

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

每一文件或目錄的訪問(wèn)權(quán)限都有三組,每組用三位表示,分別為文件屬主的讀、寫(xiě)和執(zhí)行權(quán)限;與屬主同組的用戶的讀、寫(xiě)和執(zhí)行權(quán)限;系統(tǒng)中其他用戶的讀、寫(xiě)和執(zhí)行權(quán)限??墒褂?ls -l test.txt 查找。

以文件 log2012.log 為例:

-rw-r--r-- 1 root root 296K 11-13 06:03 log2012.log

第一列共有 10 個(gè)位置,第一個(gè)字符指定了文件類型。在通常意義上,一個(gè)目錄也是一個(gè)文件。如果第一個(gè)字符是橫線,表示是一個(gè)非目錄的文件。如果是 d,表示是一個(gè)目錄。從第二個(gè)字符開(kāi)始到第十個(gè) 9 個(gè)字符,3 個(gè)字符一組,分別表示了 3 組用戶對(duì)文件或者目錄的權(quán)限。權(quán)限字符用橫線代表空許可,r 代表只讀,w 代表寫(xiě),x 代表可執(zhí)行。

常用參數(shù):

-c 當(dāng)發(fā)生改變時(shí),報(bào)告處理信息-R 處理指定目錄以及其子目錄下所有文件

權(quán)限范圍:

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

權(quán)限代號(hào):

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

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

chmod a+x t.log

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

chmod u=r t.log -c

(3)給 file 的屬主分配讀、寫(xiě)、執(zhí)行(7)的權(quán)限,給file的所在組分配讀、執(zhí)行(5)的權(quán)限,給其他用戶分配執(zhí)行(1)的權(quán)限

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

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

chmod u+r,g+r,o+r -R text/ -c

3. chown 命令

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

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

- 實(shí)例:

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

chown -c mail:mail log2012.log

(2)改變文件群組

chown -c :mail t.log

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

chown -cR mail: test/

4. 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.txt test

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

cp-sa.txtlink_a.txt

5. find 命令

用于在文件樹(shù)中查找文件,并作出相應(yīng)的處理。

命令格式:

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

命令參數(shù):

pathname: find命令所查找的目錄路徑。例如用.來(lái)表示當(dāng)前目錄,用/來(lái)表示系統(tǒng)根目錄。-print:find命令將匹配的文件輸出到標(biāo)準(zhǔn)輸出。-exec:find命令對(duì)匹配的文件執(zhí)行該參數(shù)所給出的shell命令。相應(yīng)命令的形式為'command' {  } ;,注意{   }和;之間的空格。-ok:和-exec的作用相同,只不過(guò)以一種更為安全的模式來(lái)執(zhí)行該參數(shù)所給出的shell命令,在執(zhí)行每一個(gè)命令之前,都會(huì)給出提示,讓用戶來(lái)確定是否執(zhí)行。

命令選項(xiàng):

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

- 實(shí)例:

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

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

-exec 參數(shù)后面跟的是 command 命令,它的終止是以 ; 為結(jié)束標(biāo)志的,所以這句命令后面的分號(hào)是不可缺少的,考慮到各個(gè)系統(tǒng)中分號(hào)會(huì)有不同的意義,所以前面加反斜杠。{} 花括號(hào)代表前面find查找出來(lái)的文件名。

6. head 命令

head 用來(lái)顯示檔案的開(kāi)頭至標(biāo)準(zhǔn)輸出中,默認(rèn) head 命令打印其相應(yīng)文件的開(kāi)頭 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

7. less 命令

less 與 more 類似,但使用 less 可以隨意瀏覽文件,而 more 僅能向前移動(dòng),卻不能向后移動(dòng),而且 less 在查看之前不會(huì)加載整個(gè)文件。

常用命令參數(shù):

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

實(shí)例:

(1)ps 查看進(jìn)程信息并通過(guò) less 分頁(yè)顯示

ps -aux | less -N

(2)查看多個(gè)文件

less 1.log 2.log

可以使用 n 查看下一個(gè),使用 p 查看前一個(gè)。

8. ln 命令

功能是為文件在另外一個(gè)位置建立一個(gè)同步的鏈接,當(dāng)在不同目錄需要該問(wèn)題時(shí),就不需要為每一個(gè)目錄創(chuàng)建同樣的文件,通過(guò) ln 創(chuàng)建的鏈接(link)減少磁盤(pán)占用量。

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

軟鏈接:

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)建

需要注意:

第一:ln命令會(huì)保持每一處鏈接文件的同步性,也就是說(shuō),不論你改動(dòng)了哪一處,其它的文件都會(huì)發(fā)生相同的變化;
第二:ln的鏈接又分軟鏈接和硬鏈接兩種,軟鏈接就是ln –s 源文件 目標(biāo)文件,它只會(huì)在你選定的位置上生成一個(gè)文件的鏡像,不會(huì)占用磁盤(pán)空間,硬鏈接 ln 源文件 目標(biāo)文件,沒(méi)有參數(shù)-s, 它會(huì)在你選定的位置上生成一個(gè)和源文件大小相同的文件,無(wú)論是軟鏈接還是硬鏈接,文件都保持同步變化。
第三:ln指令用在鏈接文件或目錄,如同時(shí)指定兩個(gè)以上的文件或目錄,且最后的目的地是一個(gè)已經(jīng)存在的目錄,則會(huì)把前面指定的所有文件或目錄復(fù)制到該目錄中。若同時(shí)指定多個(gè)文件或目錄,且最后的目的地并非是一個(gè)已存在的目錄,則會(huì)出現(xiàn)錯(cuò)誤信息。

常用參數(shù):

-b 刪除,覆蓋以前建立的鏈接-s 軟鏈接(符號(hào)鏈接)-v顯示詳細(xì)處理過(guò)程

實(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

9. locate 命令

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

locate 與 find 命令相似,可以使用如 *、? 等進(jìn)行正則匹配查找

常用參數(shù):

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

實(shí)例:

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

locate pwd

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

locate /etc/sh

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

locate -r '^/var.*reason$'(其中.表示一個(gè)字符,*表示任務(wù)多個(gè);.*表示任意多個(gè)字符)

10. more 命令

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

命令參數(shù):

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

常用操作命令:

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行起的內(nèi)容

more +3 text.txt

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

ls -l | more -5

按空格顯示下 5 行。

11. 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)存在,則詢問(wèn)是否覆蓋

mv -i log1.txt log2.txt

(4)移動(dòng)當(dāng)前文件夾下的所有文件到上一級(jí)目錄

mv * ../

12. rm 命令

刪除一個(gè)目錄中的一個(gè)或多個(gè)文件或目錄,如果沒(méi)有使用 -r 選項(xiàng),則 rm 不會(huì)刪除目錄。如果使用 rm 來(lái)刪除文件,通常仍可以將該文件恢復(fù)原狀。

rm [選項(xiàng)] 文件…

實(shí)例:
(1)刪除任何 .log 文件,刪除前逐一詢問(wèn)確認(rèn):

rm -i *.log

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

rm-rftest

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

rm---f*

13. tail 命令

用于顯示指定文件末尾內(nèi)容,不指定文件時(shí),作為輸入信息進(jìn)行處理。常用查看日志文件。

常用參數(shù):

-f 循環(huán)讀?。ǔS糜诓榭催f增的日志文件)-n<行數(shù)> 顯示行數(shù)(從后向前)


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

ping127.0.0.1>ping.log&

后臺(tái)運(yùn)行:可使用 jobs -l 查看,也可使用 fg 將其移到前臺(tái)運(yùn)行。

tail-fping.log

(查看日志)

14. touch 命令

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

ls -l 可以顯示檔案的時(shí)間記錄。

語(yǔ)法

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

參數(shù)說(shuō)明:
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í)間屬性  #原來(lái)文件的修改時(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”的新的空白文件

15. vim 命令

Vim是從 vi 發(fā)展出來(lái)的一個(gè)文本編輯器。代碼補(bǔ)完、編譯及錯(cuò)誤跳轉(zhuǎn)等方便編程的功能特別豐富,在程序員中被廣泛使用。

打開(kāi)文件并跳到第 10 行:vim +10 filename.txt 。
打開(kāi)文件跳到第一個(gè)匹配的行:vim +/search-term filename.txt 。
以只讀模式打開(kāi)文件:vim -R /etc/passwd 。

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

簡(jiǎn)單的說(shuō),我們可以將這三個(gè)模式想成底下的圖標(biāo)來(lái)表示:

16. whereis 命令

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

常用參數(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

17. which 命令

在 linux 要查找某個(gè)文件,但不知道放在哪里了,可以使用下面的一些命令來(lái)搜索:

which     查看可執(zhí)行文件的位置。whereis 查看文件的位置。locate  配合數(shù)據(jù)庫(kù)查看文件位置。find        實(shí)際搜尋硬盤(pán)查詢文件名稱。

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

常用參數(shù):

-n 指定文件名長(zhǎng)度,指定的長(zhǎng)度必須大于或等于所有文件中最長(zhǎng)的文件名。

實(shí)例:
(1)查看 ls 命令是否存在,執(zhí)行哪個(gè)

which ls

(2)查看 which

which which

3)查看 cd

which cd(顯示不存在,因?yàn)?cd 是內(nèi)建命令,而 which 查找顯示是 PATH 中的命令)

查看當(dāng)前 PATH 配置:

echo $PATH

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

七、文檔編輯命令

1. grep 命令

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

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

命令格式:

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 忽略大小寫(xiě)-l 只列出文件內(nèi)容符合指定的樣式的文件名稱-f 從文件中讀取關(guān)鍵詞-n 顯示匹配內(nèi)容的所在文件中行數(shù)-R 遞歸查找文件夾

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

^  #錨定行的開(kāi)始 如:'^grep'匹配所有以grep開(kāi)頭的行。$  #錨定行的結(jié)束 如:'grep$'匹配所有以grep結(jié)尾的行。.  #匹配一個(gè)非換行符的字符 如:'gr.p'匹配gr后接一個(gè)任意字符,然后是p。*  #匹配零個(gè)或多個(gè)先前字符 如:'*grep'匹配所有一個(gè)或多個(gè)空格后緊跟grep的行。.*   #一起用代表任意字符。[]   #匹配一個(gè)指定范圍內(nèi)的字符,如'[Gg]rep'匹配Grep和grep。[^]  #匹配一個(gè)不在指定范圍內(nèi)的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一個(gè)字母開(kāi)頭,緊跟rep的行。(..)  #標(biāo)記匹配字符,如'(love)',love被標(biāo)記為1。<      #錨定單詞的開(kāi)始,如:'>      #錨定單詞的結(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ù)字字符,也就是[A-Za-z0-9],如:'Gw*p'匹配以G后跟零個(gè)或多個(gè)文字或數(shù)字字符,然后是p。W    #w的反置形式,匹配一個(gè)或多個(gè)非單詞字符,如點(diǎn)號(hào)句號(hào)等。    #單詞鎖定符,如: 'grep'只匹配grep。

實(shí)例:

(1)查找指定進(jìn)程

ps -ef | grep svn


(2)查找指定進(jìn)程個(gè)數(shù)

ps -ef | grep svn -c

(3)從文件中讀取關(guān)鍵詞

cattest1.txt|grep-fkey.log

(4)從文件夾中遞歸查找以grep開(kāi)頭的行,并只列出文件

grep -lR '^grep' /tmp

(5)查找非x開(kāi)關(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)計(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

八、磁盤(pán)管理命令

1. cd 命令

cd(changeDirectory) 命令語(yǔ)法:

cd [目錄名]

說(shuō)明:切換當(dāng)前目錄至 dirName。

實(shí)例:
(1)進(jìn)入要目錄

cd /

(2)進(jìn)入 “home” 目錄

cd ~

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

cd -

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

cd !$

2. df 命令

顯示磁盤(pán)空間使用情況。獲取硬盤(pán)被占用了多少空間,目前還剩下多少空間等信息,如果沒(méi)有文件名被指定,則所有當(dāng)前被掛載的文件系統(tǒng)的可用空間將被顯示。默認(rèn)情況下,磁盤(pán)空間將以 1KB 為單位進(jìn)行顯示,除非環(huán)境變量 POSIXLY_CORRECT 被指定,那樣將以512字節(jié)為單位進(jìn)行顯示:

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

實(shí)例:
(1)顯示磁盤(pán)使用情況

df -l

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

df -haT

3. du 命令

du 命令也是查看使用空間的,但是與 df 命令不同的是 Linux du 命令是對(duì)文件和目錄磁盤(pán)使用的空間的查看:

命令格式:

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è)文件或目錄各自占用磁盤(pán)空間的大小,還統(tǒng)計(jì)它們的總和

du -hc test/ scf/

(4)輸出當(dāng)前目錄下各個(gè)子目錄所使用的空間

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

4. ls命令

就是 list 的縮寫(xiě),通過(guò) ls 命令不僅可以查看 linux 文件夾包含的文件,而且可以查看文件權(quán)限(包括目錄、文件夾、文件權(quán)限)查看目錄信息等等。

常用參數(shù)搭配:

ls -a 列出目錄所有文件,包含以.開(kāi)始的隱藏文件ls -A 列出除.及..的其它文件ls -r 反序排列ls -t 以文件修改時(shí)間排序ls -S 以文件大小排序ls -h 以易讀大小顯示ls -l 除了文件名之外,還將文件的權(quán)限、所有者、文件大小等信息詳細(xì)列出來(lái)

實(shí)例:
(1) 按易讀方式按時(shí)間反序排序,并顯示文件詳細(xì)信息

ls-lhrt

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

ls -lrS

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

ls -l t*

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

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

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

find $pwd -maxdepth 1 | xargs ls -ld

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

6. pwd 命令

pwd 命令用于查看當(dāng)前工作目錄路徑。

實(shí)例:
(1)查看當(dāng)前路徑

pwd

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

pwd -P

7. rmdir 命令

從一個(gè)目錄中刪除一個(gè)或多個(gè)子目錄項(xiàng),刪除某目錄時(shí)也必須具有對(duì)其父目錄的寫(xiě)權(quán)限。
注意:不能刪除非空目錄

實(shí)例:
(1)當(dāng) parent 子目錄被刪除后使它也成為空目錄的話,則順便一并刪除:

rmdir -p parent/child/child11

九、網(wǎng)絡(luò)通訊命令

1. 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 。

2. iptables 命令

iptables ,是一個(gè)配置 Linux 內(nèi)核防火墻的命令行工具。功能非常強(qiáng)大,對(duì)于我們開(kāi)發(fā)來(lái)說(shuō),主要掌握如何開(kāi)放端口即可。例如:

把來(lái)源 IP 為 192.168.1.101 訪問(wèn)本機(jī) 80 端口的包直接拒絕:iptables -I INPUT -s 192.168.1.101 -p tcp --dport 80 -j REJECT 。

開(kāi)啟 80 端口,因?yàn)閣eb對(duì)外都是這個(gè)端口

    iptables -A INPUT -p tcp --dport 80 -j ACCEP

另外,要注意使用 iptables save 命令,進(jìn)行保存。否則,服務(wù)器重啟后,配置的規(guī)則將丟失。

3. netstat 命令

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

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

語(yǔ)法

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

參數(shù)說(shuō)明:
-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地址,而不通過(guò)域名服務(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í)行過(guò)程。
-V或–version 顯示版本信息。
-w或–raw 顯示RAW傳輸協(xié)議的連線狀況。
-x或–unix 此參數(shù)的效果和指定"-A unix"參數(shù)相同。
–ip或–inet 此參數(shù)的效果和指定"-A inet"參數(shù)相同。

實(shí)例

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

[root@centos6 ~ 13:20 #55]# netstat -lnpActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program nametcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1035/sshdtcp        0      0 :::22                       :::*                        LISTEN      1035/sshdudp        0      0 0.0.0.0:68                  0.0.0.0:*                               931/dhclientActive UNIX domain sockets (only servers)Proto RefCnt Flags       Type       State         I-Node PID/Program name    Pathunix  2      [ ACC ]     STREAM     LISTENING     6825   1/init              @/com/ubuntu/upstartunix  2      [ ACC ]     STREAM     LISTENING     8429   1003/dbus-daemon    /var/run/dbus/system_bus_socket

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

[root@centos6 ~ 13:22 #58]# netstat -anActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address               Foreign Address             Statetcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTENtcp        0      0 192.168.147.130:22          192.168.147.1:23893         ESTABLISHEDtcp        0      0 :::22                       :::*                        LISTENudp        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ù)。

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

嚴(yán)格來(lái)說(shuō),這個(gè)題目考驗(yàn)的是對(duì) awk 的使用。

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

tcp        0      0 120.27.146.122:80       113.65.18.33:62721      ESTABLISHEDtcp        0      0 120.27.146.122:80       27.43.83.115:47148      ESTABLISHEDtcp        0      0 120.27.146.122:58838    106.39.162.96:443       ESTABLISHEDtcp        0      0 120.27.146.122:52304    203.208.40.121:443      ESTABLISHEDtcp        0      0 120.27.146.122:33194    203.208.40.122:443      ESTABLISHEDtcp        0      0 120.27.146.122:53758    101.37.183.144:443      ESTABLISHEDtcp        0      0 120.27.146.122:27017    23.105.193.30:50556     ESTABLISHED

4. ping 命令

Linux ping命令用于檢測(cè)主機(jī)。

執(zhí)行ping指令會(huì)使用ICMP傳輸協(xié)議,發(fā)出要求回應(yīng)的信息,若遠(yuǎn)端主機(jī)的網(wǎng)絡(luò)功能沒(méi)有問(wèn)題,就會(huì)回應(yīng)該信息,因而得知該主機(jī)運(yùn)作正常。

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

ping-c2www.baidu.com

5. telnet 命令

Linux telnet命令用于遠(yuǎn)端登入。

執(zhí)行telnet指令開(kāi)啟終端機(jī)階段作業(yè),并登入遠(yuǎn)端主機(jī)。

語(yǔ)法

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

參數(shù)說(shuō)明:
-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

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

1. date命令


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

命令參數(shù):

-d<字符串> 顯示字符串所指的日期與時(shí)間。字符串前后必須加上雙引號(hào)。-s<字符串> 根據(jù)字符串來(lái)設(shè)置日期與時(shí)間。字符串前后必須加上雙引號(hào)。-u 顯示GMT。%H 小時(shí)(00-23)%I 小時(shí)(00-12)%M 分鐘(以00-59來(lái)表示)%s 總秒數(shù)。起算時(shí)間為1970-01-01 0000 UTC。%S 秒(以本地的慣用法來(lái)表示)%a 星期的縮寫(xiě)。%A 星期的完整名稱。%d 日期(以01-31來(lái)表示)。%D 日期(含年月日)。%m 月份(以01-12來(lái)表示)。%y 年份(以00-99來(lái)表示)。%Y 年份(以四位數(shù)來(lái)表示)。

實(shí)例:
(1)顯示下一天

date +%Y%m%d --date="+1 day"  //顯示下一天的日期

(2)-d參數(shù)使用

date -d "nov 22"  今年的 1122 日是星期三date -d '2 weeks' 2周后的日期date -d 'next monday' (下周一的日期)date -d next-day +%Y%m%d(明天的日期)或者:date -d tomorrow +%Y%m%ddate -d last-day +%Y%m%d(昨天的日期) 或者:date -d yesterday +%Y%m%ddate -d last-month +%Y%m(上個(gè)月是幾月)date -d next-month +%Y%m(下個(gè)月是幾月)

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

實(shí)例:
(1)顯示內(nèi)存使用情況

freefree -kfree -m

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

free -t

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

free -s 10

3. kill 命令

發(fā)送指定的信號(hào)到相應(yīng)進(jìn)程。不指定型號(hào)將發(fā)送SIGTERM(15)終止指定進(jìn)程。如果任無(wú)法終止該程序可用"-KILL" 參數(shù),其發(fā)送的信號(hào)為SIGKILL(9) ,將強(qiáng)制結(jié)束進(jìn)程,使用ps命令或者jobs 命令可以查看進(jìn)程號(hào)。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|greppro1)

4. ps 命令

ps(process status),用來(lái)查看當(dāng)前運(yùn)行的進(jìn)程狀態(tài),一次性查看,如果需要?jiǎng)討B(tài)連續(xù)結(jié)果使用 top

linux上進(jìn)程有5種狀態(tài):
1. 運(yùn)行(正在運(yùn)行或在運(yùn)行隊(duì)列中等待)
2. 中斷(休眠中, 受阻, 在等待某個(gè)條件的形成或接受到信號(hào))
3. 不可中斷(收到信號(hào)不喚醒和不可運(yùn)行, 進(jìn)程必須等待直到有中斷發(fā)生)
4. 僵死(進(jìn)程已終止, 但進(jìn)程描述符存在, 直到父進(jìn)程調(diào)用wait4()系統(tǒng)調(diào)用后釋放)
5. 停止(進(jìn)程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號(hào)后停止運(yùn)行運(yùn)行)

ps 工具標(biāo)識(shí)進(jìn)程的5種狀態(tài)碼:

D 不可中斷 uninterruptible sleep (usually IO)R 運(yùn)行 runnable (on run queue)S 中斷 sleepingT 停止 traced or stoppedZ 僵死 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)'

5. rpm 命令

Linux rpm 命令用于管理套件。

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

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

6. 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 - 1423 up 70 days, 16:44,  2 users,  load average: 1.25, 1.32, 1.35Tasks: 206 total,   1 running, 205 sleeping,   0 stopped,   0 zombieCpu(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:  32949016k total, 14411180k used, 18537836k free,   169884k buffersSwap: 32764556k total,        0k used, 32764556k free,  3612636k cachedPID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND  28894root2201501m405m10mS52.21.32534:16java

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

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

1423 — 當(dāng)前系統(tǒng)時(shí)間

up 70 days, 16:44 — 系統(tǒng)已經(jīng)運(yùn)行了70天16小時(shí)44分鐘(在這期間系統(tǒng)沒(méi)有重啟過(guò)的吆!)

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)程),具體信息說(shuō)明如下:

系統(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)信息,具體屬性說(shuō)明如下:

5.9%us — 用戶空間占用CPU的百分比。3.4% sy — 內(nèi)核空間占用CPU的百分比。0.0% ni — 改變過(guò)優(yōu)先級(jí)的進(jìn)程占用CPU的百分比90.4% id — 空閑CPU百分比0.0% waIO等待占用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ū)信息,具體信息說(shuō)明如下:

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)目列信息說(shuō)明如下:

PID — 進(jìn)程idUSER — 進(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+RESRES — 進(jìn)程使用的、未被換出的物理內(nèi)存大小,單位kb。RES=CODE+DATASHR — 共享內(nèi)存大小,單位kbS — 進(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è)置寫(xiě)入~/.toprc文件中o或者O 改變顯示項(xiàng)目的順序

7. yum 命令

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

基於RPM包管理,能夠從指定的服務(wù)器自動(dòng)下載RPM包并且安裝,可以自動(dòng)處理依賴性關(guān)系,并且一次安裝所有依賴的軟體包,無(wú)須繁瑣地一次次下載、安裝。

yum提供了查找、安裝、刪除某一個(gè)、一組甚至全部軟件包的命令,而且命令簡(jiǎn)潔而又好記。

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

十一、備份壓縮命令

1. bzip2 命令

創(chuàng)建 *.bz2 壓縮文件:bzip2 test.txt 。
解壓 *.bz2 文件:bzip2 -d test.txt.bz2 。

2. gzip 命令

創(chuàng)建一個(gè) *.gz 的壓縮文件:gzip test.txt 。
解壓 *.gz 文件:gzip -d test.txt.gz 。
顯示壓縮的比率:gzip -l *.gz 。

3. tar 命令

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

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

常用參數(shù):

-c 建立新的壓縮文件-f 指定壓縮文件-r 添加文件到已經(jīng)壓縮文件包中-u 添加改了和現(xiàn)有的文件到壓縮包中-x 從壓縮包中抽取文件-t 顯示壓縮文件中的內(nèi)容-z 支持gzip壓縮-j 支持bzip2壓縮-Z 支持compress解壓文件-v 顯示操作過(guò)程

有關(guān) gzip 及 bzip2 壓縮:

gzip 實(shí)例:壓縮 gzip fileName .tar.gz.tgz  解壓:gunzip filename.gzgzip -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.bz2bzip -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.logtar -cvf log.*

(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

4. unzip 命令

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

責(zé)任編輯:xj

原文標(biāo)題:三萬(wàn)字,100題!Linux知識(shí)匯總!

文章出處:【微信公眾號(hào):嵌入式ARM】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207918
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6545

    瀏覽量

    122744

原文標(biāo)題:三萬(wàn)字,100題!Linux知識(shí)匯總!

文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    MySQL知識(shí)點(diǎn)匯總

    大家好,這部分被稱為DQL部分,是每個(gè)學(xué)習(xí)MySQL必須要學(xué)會(huì)的部分,下面就讓我來(lái)介紹MySQL中的其他部分。
    的頭像 發(fā)表于 08-05 15:27 ?264次閱讀
    MySQL<b class='flag-5'>知識(shí)點(diǎn)</b><b class='flag-5'>匯總</b>

    模擬電子技術(shù)知識(shí)點(diǎn)問(wèn)題總結(jié)概覽

    給大家分享模擬電子技術(shù)知識(shí)點(diǎn)問(wèn)題總結(jié)。
    的頭像 發(fā)表于 05-08 15:16 ?956次閱讀
    模擬電子技術(shù)<b class='flag-5'>知識(shí)點(diǎn)</b>問(wèn)題總結(jié)概覽

    電路隔離的基礎(chǔ)知識(shí)點(diǎn)匯總

    隔離 什么是隔離?為什么需要隔離? 隔離是一種防止電流在兩個(gè)通信點(diǎn)之間流動(dòng)的手段。一般在兩種情況下需使用隔離:第一種是可能會(huì)出現(xiàn)導(dǎo)致設(shè)備受損或人員傷害的浪涌電流;第二種是互連涉及到不同的地電
    發(fā)表于 01-03 08:19

    淺談初級(jí)電工必備知識(shí)點(diǎn)

    對(duì)于初學(xué)電工的朋友來(lái)說(shuō),掌握一些基礎(chǔ)且實(shí)用的知識(shí)點(diǎn)是非常重要的。本文旨在分享初級(jí)電工應(yīng)該掌握的核心知識(shí),幫助新手電工更好地入門(mén)和提升技能。
    的頭像 發(fā)表于 12-26 10:44 ?865次閱讀

    TCP協(xié)議面試常問(wèn)知識(shí)點(diǎn)總結(jié)

    TCP 作為傳輸層的協(xié)議,是一個(gè)IT工程師素養(yǎng)的體現(xiàn),也是面試中經(jīng)常被問(wèn)到的知識(shí)點(diǎn)。在此,我將 TCP 核心的一些問(wèn)題梳理了一下,希望能幫到各位。
    的頭像 發(fā)表于 12-15 10:38 ?660次閱讀
    TCP協(xié)議面試常問(wèn)<b class='flag-5'>知識(shí)點(diǎn)</b>總結(jié)

    開(kāi)關(guān)模式下的電源電流如何檢測(cè)?這12個(gè)電路&amp;10個(gè)知識(shí)點(diǎn)講明白了

    開(kāi)關(guān)模式下的電源電流如何檢測(cè)?這12個(gè)電路&10個(gè)知識(shí)點(diǎn)講明白了
    的頭像 發(fā)表于 12-06 16:04 ?660次閱讀
    開(kāi)關(guān)模式下的電源電流如何檢測(cè)?這12<b class='flag-5'>個(gè)</b>電路&amp;10<b class='flag-5'>個(gè)</b><b class='flag-5'>知識(shí)點(diǎn)</b>講明白了

    c語(yǔ)言程序設(shè)計(jì)基礎(chǔ)知識(shí)點(diǎn)

    程序設(shè)計(jì)的基礎(chǔ)知識(shí)點(diǎn)。 首先,我們將從C語(yǔ)言的數(shù)據(jù)類型和變量開(kāi)始。C語(yǔ)言提供了多種數(shù)據(jù)類型,包括整數(shù)、浮點(diǎn)數(shù)、字符和指針等。整數(shù)類型包括int、long和short等,浮點(diǎn)數(shù)類型包括float和double等,字符類型用于存儲(chǔ)ASCII字符,指針類型用
    的頭像 發(fā)表于 11-27 15:25 ?1336次閱讀

    數(shù)字電位計(jì)知識(shí)點(diǎn)

    電子發(fā)燒友網(wǎng)站提供《數(shù)字電位計(jì)知識(shí)點(diǎn).pdf》資料免費(fèi)下載
    發(fā)表于 11-24 16:08 ?7次下載
    數(shù)字電位計(jì)<b class='flag-5'>知識(shí)點(diǎn)</b>

    三菱和西門(mén)子PLC輸入接線知識(shí)點(diǎn)

    三菱和西門(mén)子PLC輸入接線知識(shí)點(diǎn)
    的頭像 發(fā)表于 11-21 10:01 ?592次閱讀
    三菱和西門(mén)子PLC輸入接線<b class='flag-5'>知識(shí)點(diǎn)</b>

    OFDM技術(shù)知識(shí)點(diǎn)

    電子發(fā)燒友網(wǎng)站提供《OFDM技術(shù)知識(shí)點(diǎn).rar》資料免費(fèi)下載
    發(fā)表于 11-18 14:25 ?0次下載
    OFDM技術(shù)<b class='flag-5'>知識(shí)點(diǎn)</b>

    Linux文件系統(tǒng)知識(shí)點(diǎn)詳解

    今天浩道跟大家分享關(guān)于Linux文件及目錄屬性知識(shí)點(diǎn)的硬核干貨,可以說(shuō)只要你認(rèn)真看完這篇文章內(nèi)容,其相關(guān)知識(shí)點(diǎn)都不在話下,感興趣又想快速掌握的小伙伴們,可以收藏起來(lái)隨時(shí)查看!
    的頭像 發(fā)表于 11-02 09:29 ?556次閱讀
    <b class='flag-5'>Linux</b>文件系統(tǒng)<b class='flag-5'>知識(shí)點(diǎn)</b>詳解

    51單片機(jī)的知識(shí)點(diǎn)

    電子發(fā)燒友網(wǎng)站提供《51單片機(jī)的知識(shí)點(diǎn).pdf》資料免費(fèi)下載
    發(fā)表于 11-01 17:32 ?2次下載

    開(kāi)關(guān)模式下的電源電流如何檢測(cè)?這12個(gè)電路&amp;10個(gè)知識(shí)點(diǎn)講明白了

    開(kāi)關(guān)模式下的電源電流如何檢測(cè)?這12個(gè)電路&10個(gè)知識(shí)點(diǎn)講明白了
    的頭像 發(fā)表于 10-17 16:09 ?689次閱讀
    開(kāi)關(guān)模式下的電源電流如何檢測(cè)?這12<b class='flag-5'>個(gè)</b>電路&amp;10<b class='flag-5'>個(gè)</b><b class='flag-5'>知識(shí)點(diǎn)</b>講明白了

    機(jī)器視覺(jué)與視覺(jué)檢測(cè)知識(shí)點(diǎn)的歸納

    電子發(fā)燒友網(wǎng)站提供《機(jī)器視覺(jué)與視覺(jué)檢測(cè)知識(shí)點(diǎn)的歸納.pdf》資料免費(fèi)下載
    發(fā)表于 10-07 16:39 ?3次下載
    機(jī)器視覺(jué)與視覺(jué)檢測(cè)<b class='flag-5'>知識(shí)點(diǎn)</b>的歸納

    STM32入門(mén)知識(shí)點(diǎn)匯總

    STM32入門(mén)知識(shí)要點(diǎn)總結(jié),適合初學(xué)者查看!
    發(fā)表于 10-07 06:04