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

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

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

最新的Linux面試題!

Linux愛好者 ? 來源:Linux愛好者 ? 2020-06-18 17:34 ? 次閱讀

導(dǎo)讀:本文整理了最新Linux面試題,近3萬字,約100道題,分享至此,希望對大家有幫助。

一、Linux 概述

1、什么是Linux?

Linux是一套免費(fèi)使用和自由傳播的類Unix操作系統(tǒng),是一個基于POSIX和Unix的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng)。它能運(yùn)行主要的Unix工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。它支持32位和64位硬件。Linux繼承了Unix以網(wǎng)絡(luò)為核心的設(shè)計(jì)思想,是一個性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。

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

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

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

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

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

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

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

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

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)勢的是每個方面都附帶其他功能,所有代碼都可以免費(fèi)下載

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

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

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

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

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

1、現(xiàn)代 CPU 實(shí)現(xiàn)了不同的工作模式,不同模式下 CPU 可以執(zhí)行的指令和訪問的寄存器不同。
2、Linux 從 CPU 的角度出發(fā),為了保護(hù)內(nèi)核的安全,把系統(tǒng)分成了兩部分。

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

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

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

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

在BASH下,/ character是目錄分隔符,作為轉(zhuǎn)義字符。在DOS下,/用作命令參數(shù)分隔符,是目錄分隔符

OS遵循命名文件中的約定,即8個字符的文件名后跟一個點(diǎn),擴(kuò)展名為3個字符。BASH沒有遵循這樣的慣例。

7、Linux 開機(jī)啟動過程?

主機(jī)加電自檢,加載 BIOS 硬件信息。

讀取 MBR 的引導(dǎo)文件(GRUB、LILO)。

引導(dǎo) Linux 內(nèi)核。

運(yùn)行第一個進(jìn)程 init (進(jìn)程號永遠(yuǎn)為 1 )。

進(jìn)入相應(yīng)的運(yùn)行級別。

運(yùn)行終端,輸入用戶名和密碼。

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

關(guān)機(jī)

單機(jī)用戶模式

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

字符界面的多用戶模式

未分配使用

圖形界面的多用戶模式

重啟

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

管道(pipe)、流管道(s_pipe)、有名管道(FIFO)。
信號(signal) 。
消息隊(duì)列。
共享內(nèi)存。
信號量。
套接字(socket) 。

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

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

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

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

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

12、什么是交換空間?

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

13、什么是root帳戶?

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

14、什么是LILO?

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

15、什么是BASH?

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

16、什么是CLI?

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

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

17、什么是GUI?

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

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

18、開源的優(yōu)勢是什么?

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

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

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

二、磁盤、目錄、文件

1、簡單 Linux 文件系統(tǒng)?

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

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

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

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

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

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

常見目錄說明:

/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)存的映射??芍苯釉L問這個目錄來獲取系統(tǒng)信息;

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

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

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

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

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

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

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

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

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

3、什么是 inode ?

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

理解inode,要從文件儲存說起。

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

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

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

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

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

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

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

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

Linux 文件系統(tǒng)通過把 inode 節(jié)點(diǎn)和文件名進(jìn)行連接,當(dāng)需要讀取該文件時(shí),文件系統(tǒng)在當(dāng)前目錄表中查找該文件名對應(yīng)的項(xiàng),由此得到該文件相對應(yīng)的 inode 節(jié)點(diǎn)號,通過該 inode 節(jié)點(diǎn)的磁盤地址表把分散存放的文件物理塊連接成文件的邏輯結(jié)構(gòu)。

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

1)硬鏈接

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

不足:

不可以在不同文件系統(tǒng)的文件間建立鏈接;

只有超級用戶才可以為目錄創(chuàng)建硬鏈接。

2)軟鏈接

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

不足:

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

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

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

硬鏈接指向一個 inode 節(jié)點(diǎn),而軟鏈接則是創(chuàng)建一個新的 inode 節(jié)點(diǎn)。

刪除硬鏈接文件,不會刪除原文件,刪除軟鏈接文件,會把原文件刪除。

5. RAID 是什么?

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

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

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

三、安全

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

添加普通用戶登陸,禁止 root 用戶登陸,更改 SSH 端口號。

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

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

3、開啟防火墻,關(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ǎng),其它全部禁止。

8、做好軟件層面的防護(hù)。

設(shè)置 nginx_waf 模塊防止 SQL 注入。

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

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

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

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

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

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

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

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

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

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

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

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

如何過濾與預(yù)防?

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

四、Shell

1、Shell 腳本是什么?

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

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

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

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

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

3、在 Shell 腳本中,如何寫入注釋?

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

#!/bin/bash ##Thisisacommand echo“Iamloggedinas$USER”

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

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

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

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

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

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

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

#ls/usr/bin/shar /usr/bin/shar #echo$? 0

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

#ls/usr/bin/share ls:cannotaccess/usr/bin/share:Nosuchfileordirectory #echo$? 1

6、Bourne Shell(bash) 中有哪些特殊的變量?

下面的表列出了 Bourne Shell 為命令行設(shè)置的特殊變量。

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

7、如何取消變量或取消變量賦值?

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

#unset<變量名>

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

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

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

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

#!/bin/bash x=10 y=20 if[$x-gt$y] then echo“xisgreaterthany” else echo“yisgreaterthanx” fi

9、Shell 腳本中 case 語句的語法?

基礎(chǔ)語法如下:

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

10、Shell 腳本中 for 循環(huán)語法?

基礎(chǔ)語法如下:

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

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

如同 for 循環(huán),while 循環(huán)只要條件成立就重復(fù)它的命令塊。

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

基礎(chǔ)語法:

while[條件] do 命令… done

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

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

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

13、Shell 腳本中 break 命令的作用?

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

14、Shell 腳本中 continue 命令的作用?

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

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

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

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

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

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

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

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

18、在 Shell 腳本中,如何測試文件?

test 命令可以用來測試文件。基礎(chǔ)用法如下表格:

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

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

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

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

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

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

#vi/tmp/test.sh #!/bin/bash echo‘Pleaseenteryourname’ readname echo“MyNameis$name” ##./test.sh Pleaseenteryourname ThinkWon MyNameisThinkWon

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

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

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

五、編程

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

#!/bin/bash read-p"Inputfilename:"FILENAME if[-c"$FILENAME"];then cp$FILENAME/dev fi

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

#!/bin/bash groupaddclass1 for((i=1;i<31;i++)) do ????????if?[?$i?-le?10?];then ????????????????useradd?-g?class1?std0$i ????????else ????????????????useradd?-g?class1?std$i ????????fi done

3、編寫 Shell 程序,實(shí)現(xiàn)自動刪除 50 個賬號的功能,賬號名為stud1 至 stud50 ?

#!/bin/bash for((i=1;i<51;i++)) do ????????????????userdel?-r?stud$i done

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

要求:

刪除所有空行。

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

#cat-n/tmp/input.txt 1000011111222 2 3000011111222222 411111000000222 5 6 7111111111111122222222222 82211111111 9112222222 101122 11 ##刪除所有空行命令 #sed'/^$/d'/tmp/input.txt 000011111222 000011111222222 11111000000222 111111111111122222222222 2211111111 112222222 1122 ##插入指定的字符 #sed's#(11111)#AAA1BBB#g'/tmp/input.txt 0000AAA11111BBB222 0000AAA11111BBB222222 AAA11111BBB000000222 AAA11111BBBAAA11111BBB11122222222222 22AAA11111BBB111 112222222 1122

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

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

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

根據(jù)具體要求:

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

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

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

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

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

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

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

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

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

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

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

3.1、有哪些方面的因素會導(dǎo)致網(wǎng)站網(wǎng)站訪問慢?

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

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

跨運(yùn)營商網(wǎng)絡(luò)導(dǎo)致帶寬縮減。例如,公司網(wǎng)站放在電信的網(wǎng)絡(luò)上,那么客戶這邊對接是長城寬帶或聯(lián)通,這也可能導(dǎo)致帶寬的縮減。

服務(wù)器負(fù)載過大,導(dǎo)致響應(yīng)不過來

以從兩個方面入手分析:

分析系統(tǒng)負(fù)載,使用 w 命令或者 uptime 命令查看系統(tǒng)負(fù)載。如果負(fù)載很高,則使用 top 命令查看 CPU ,MEM 等占用情況,要么是 CPU 繁忙,要么是內(nèi)存不夠。

如果這二者都正常,再去使用 sar 命令分析網(wǎng)卡流量,分析是不是遭到了攻擊。一旦分析出問題的原因,采取對應(yīng)的措施解決,如決定要不要?dú)⑺酪恍┻M(jìn)程,或者禁止一些訪問等。

數(shù)據(jù)庫瓶頸

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

如果數(shù)據(jù)庫響應(yīng)慢,考慮可以加一個數(shù)據(jù)庫緩存,如 Redis 等。然后,也可以搭建 MySQL 主從,一臺 MySQL 服務(wù)器負(fù)責(zé)寫,其他幾臺從數(shù)據(jù)庫負(fù)責(zé)讀。

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

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

3.2、針對網(wǎng)站訪問慢,怎么去排查?

首先要確定是用戶端還是服務(wù)端的問題。當(dāng)接到用戶反饋訪問慢,那邊自己立即訪問網(wǎng)站看看,如果自己這邊訪問快,基本斷定是用戶端問題,就需要耐心跟客戶解釋,協(xié)助客戶解決問題。不要上來就看服務(wù)端的問題。一定要從源頭開始,逐步逐步往下。

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

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

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

3.3、怎么去解決?

如果是出口帶寬問題,那么久申請加大出口帶寬。

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

如果數(shù)據(jù)庫響應(yīng)慢,考慮可以加一個數(shù)據(jù)庫緩存,如 Redis 等等。然后也可以搭建MySQL 主從,一臺 MySQL 服務(wù)器負(fù)責(zé)寫,其他幾臺從數(shù)據(jù)庫負(fù)責(zé)讀。

申請購買 CDN 服務(wù),加載用戶的訪問。

如果訪問還比較慢,那就需要從整體架構(gòu)上進(jìn)行優(yōu)化咯。做到專角色專用,多臺服務(wù)器提供同一個服務(wù)。

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

Disabling daemons (關(guān)閉 daemons)。

Shutting down the GUI (關(guān)閉 GUI)。

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

Kernel parameters (內(nèi)核參數(shù))。

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

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

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

Tuning the network subsystem(網(wǎng)絡(luò)子系統(tǒng)調(diào)優(yōu))。

七、文件管理命令

1、cat 命令

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

cat 主要有三大功能:

一次顯示整個文件:

#catfilename

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

#cat>filename

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

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

#catfile1file2>file

-b 對非空輸出行號
-n 輸出所有行號

實(shí)例:

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

#cat-nlog2012.loglog2013.log

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

#cat-blog2012.loglog2013.loglog.log

3、使用 here doc 生成新文件

#cat>log.txt<Hello >World >PWD=$(pwd) >EOF #ls-llog.txt #catlog.txt Hello World PWD=/opt/soft/test

4、反向列示

taclog.txt PWD=/opt/soft/test World Hello

2、chmod 命令

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

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

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

以文件 log2012.log 為例:

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

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

常用參數(shù):

-c 當(dāng)發(fā)生改變時(shí),報(bào)告處理信息

-R 處理指定目錄以及其子目錄下所有文件

權(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)限

實(shí)例:

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

#chmoda+xt.log

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

#chmodu=rt.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-Rtext/-c

3、chown 命令

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

-c 顯示更改的部分的信息

-R 處理指定目錄及子目錄

實(shí)例:

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

#chown-cmail:maillog2012.log

2、改變文件群組

#chown-c:mailt.log

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

#chown-cRmail:test/

4、cp 命令

將源文件復(fù)制至目標(biāo)文件,或?qū)⒍鄠€源文件復(fù)制至目標(biāo)目錄。

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

-i 提示

-r 復(fù)制目錄及目錄內(nèi)所有項(xiàng)目

-a 復(fù)制的文件與原文件時(shí)間一樣

實(shí)例:

1、復(fù)制 a.txt 到 test 目錄下,保持原文件時(shí)間,如果原文件存在提示是否覆蓋。

#cp-aia.txttest

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

#cp-sa.txtlink_a.txt

5. find 命令

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

命令格式:

#findpathname-options[-print-exec-ok...]

命令參數(shù):

pathname: find命令所查找的目錄路徑。例如用.來表示當(dāng)前目錄,用/來表示系統(tǒng)根目錄。

-print:find命令將匹配的文件輸出到標(biāo)準(zhǔn)輸出。

-exec:find命令對匹配的文件執(zhí)行該參數(shù)所給出的shell命令。相應(yīng)命令的形式為'command' { } ;,注意{ }和;之間的空格。

-ok:和-exec的作用相同,只不過以一種更為安全的模式來執(zhí)行該參數(shù)所給出的shell命令,在執(zhí)行每一個命令之前,都會給出提示,讓用戶來確定是否執(zhí)行。

命令選項(xiàng):

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

實(shí)例:

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

#find-atime-2

2、在當(dāng)前目錄查找 以 .log 結(jié)尾的文件。. 代表當(dāng)前目錄

#find./-name'*.log'

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

#find/opt-perm777

4、查找大于 1K 的文件

#find-size+1000c

5、查找等于 1000 字符的文件

#find-size1000c

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

6. head 命令

head 用來顯示檔案的開頭至標(biāo)準(zhǔn)輸出中,默認(rèn) head 命令打印其相應(yīng)文件的開頭 10 行。

常用參數(shù):

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

實(shí)例:

1、顯示 1.log 文件中前 20 行

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

實(shí)例:

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

#ps-aux|less-N

2、查看多個文件

#less1.log2.log

可以使用 n 查看下一個,使用 p 查看前一個。

8. ln 命令

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

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

軟鏈接:

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

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

軟鏈接可以對一個不存在的文件名進(jìn)行鏈接

軟鏈接可以對目錄進(jìn)行鏈接

硬鏈接:

硬鏈接,以文件副本的形式存在。但不占用實(shí)際空間。

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

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

需要注意:

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

ln的鏈接又分軟鏈接和硬鏈接兩種,軟鏈接就是ln –s 源文件 目標(biāo)文件,它只會在你選定的位置上生成一個文件的鏡像,不會占用磁盤空間,硬鏈接 ln 源文件 目標(biāo)文件,沒有參數(shù)-s, 它會在你選定的位置上生成一個和源文件大小相同的文件,無論是軟鏈接還是硬鏈接,文件都保持同步變化。

ln指令用在鏈接文件或目錄,如同時(shí)指定兩個以上的文件或目錄,且最后的目的地是一個已經(jīng)存在的目錄,則會把前面指定的所有文件或目錄復(fù)制到該目錄中。若同時(shí)指定多個文件或目錄,且最后的目的地并非是一個已存在的目錄,則會出現(xiàn)錯誤信息。

常用參數(shù):

-b 刪除,覆蓋以前建立的鏈接

-s 軟鏈接(符號鏈接)

-v 顯示詳細(xì)處理過程

實(shí)例:

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

#ln-svsource.loglink.log

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

#ln-vsource.loglink1.log

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

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

9. locate 命令

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

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

常用參數(shù):

-l num(要顯示的行數(shù))

-f 將特定的檔案系統(tǒng)排除在外,如將proc排除在外

-r 使用正則運(yùn)算式做為尋找條件

實(shí)例:

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

#locatepwd

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

#locate/etc/sh

3、查找 /var 目錄下,以 reason 結(jié)尾的文件(其中.表示一個字符,表示任務(wù)多個;.表示任意多個字符)

#locate-r'^/var.*reason$'

10. more 命令

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

命令參數(shù):

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

常用操作命令:

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

實(shí)例:

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

#more+3text.txt

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

#ls-l|more-5

按空格顯示下 5 行。

11. mv 命令

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

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

實(shí)例:
1、將文件 test.log 重命名為 test1.txt

#mvtest.logtest1.txt

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

#mvllog1.txtlog2.txtlog3.txt/test3

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

#mv-ilog1.txtlog2.txt

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

#mv*../

12. rm 命令

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

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

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

#rm-i*.log

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

#rm-rftest

3、刪除以 -f 開頭的文件

#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&

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

#tail-fping.log

14. touch 命令

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

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

語法

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

參數(shù)說明:

a 改變檔案的讀取時(shí)間記錄。 m 改變檔案的修改時(shí)間記錄。 c 假如目的檔案不存在,不會建立新的檔案。與--no-create 的效果一樣。 f 不使用,是為了與其他 unix 系統(tǒng)的相容性而保留。 r 使用參考檔的時(shí)間記錄,與--file 的效果一樣。 d 設(shè)定時(shí)間與日期,可以使用各種不同的格式。 t 設(shè)定檔案的時(shí)間記錄,格式與 date 指令相同。 –no-create 不會建立新檔案。 –help 列出指令格式。 –version 列出版本訊息。

實(shí)例

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

$touchtestfile#修改文件的時(shí)間屬性

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

$ls-ltestfile#查看文件的時(shí)間屬性

原來文件的修改時(shí)間為16:09

-rw-r--r--1hddhdd552011-08-2216:09testfile

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

$touchtestfile#修改文件時(shí)間屬性為當(dāng)前系統(tǒng)時(shí)間 $ls-ltestfile#查看文件的時(shí)間屬性

修改后文件的時(shí)間屬性為當(dāng)前系統(tǒng)時(shí)間

-rw-r--r--1hddhdd552011-08-2219:53testfile

使用指令"touch"時(shí),如果指定的文件不存在,則將創(chuàng)建一個新的空白文件。例如,在當(dāng)前目錄下,使用該指令創(chuàng)建一個空白文件"file",輸入如下命令:

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

15. vim 命令

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

打開文件并跳到第 10 行:

#vim+10filename.txt

打開文件跳到第一個匹配的行:

#vim+/search-termfilename.txt

以只讀模式打開文件:

#vim-R/etc/passwd

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

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

16、whereis 命令

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

常用參數(shù):

-b 定位可執(zhí)行文件

-m 定位幫助文件

-s 定位源代碼文件

-u 搜索默認(rèn)路徑下除可執(zhí)行文件、源代碼文件、幫助文件以外的其它文件

實(shí)例:

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

#whereislocate

(2)查找 locate 的源碼文件

#whereis-slocate

(3)查找 lcoate 的幫助文件

#whereis-mlocate

17、which 命令

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

which:查看可執(zhí)行文件的位置。

whereis:查看文件的位置。

locate:配合數(shù)據(jù)庫查看文件位置。

find:實(shí)際搜尋硬盤查詢文件名稱。

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

常用參數(shù):

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

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

#whichls

2、查看 which

whichwhich

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

#whichcd

4、查看當(dāng)前 PATH 配置或使用 env 查看所有環(huán)境變量及對應(yīng)值

#echo$PATH

八、文檔編輯命令

1.grep 命令

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

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

命令格式:

grep[option]patternfile|dir

常用參數(shù):

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

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

^#錨定行的開始如:'^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的行。 (..)#標(biāo)記匹配字符,如'(love)',love被標(biāo)記為1。 #錨定單詞的結(jié)束,如'grep>'匹配包含以grep結(jié)尾的單詞的行。 x{m}#重復(fù)字符x,m次,如:'0{5}'匹配包含5個o的行。 x{m,}#重復(fù)字符x,至少m次,如:'o{5,}'匹配至少有5個o的行。 x{m,n}#重復(fù)字符x,至少m次,不多于n次,如:'o{5,10}'匹配5--10個o的行。 w#匹配文字和數(shù)字字符,也就是[A-Za-z0-9],如:'Gw*p'匹配以G后跟零個或多個文字或數(shù)字字符,然后是p。 W#w的反置形式,匹配一個或多個非單詞字符,如點(diǎn)號句號等。 #單詞鎖定符,如:'grep'只匹配grep。

實(shí)例:

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

#ps-ef|grepsvn

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

#ps-ef|grepsvn-c

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

#cattest1.txt|grep-fkey.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)計(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ù),一個字被定義為由空白、跳格或換行字符分隔的字符串

實(shí)例:
1、查找文件的 行數(shù) 單詞數(shù) 字節(jié)數(shù) 文件名

#wctext.txt

結(jié)果:

7870test.txt

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

#cattest.txt|wc-l

九、磁盤管理命令

1、cd 命令

cd(changeDirectory) 命令語法:

#cd[目錄名]

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

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

#cd/

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

#cd~

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

#cd-

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

#cd!$

2、df 命令

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

-a 全部文件系統(tǒng)列表

-h 以方便閱讀的方式顯示信息

-i 顯示inode信息

-k 區(qū)塊為1024字節(jié)

-l 只顯示本地磁盤

-T 列出文件系統(tǒng)類型

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

#df-l

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

#df-haT

3. du 命令

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

命令格式:

#du[選項(xiàng)][文件]

常用參數(shù):

-a 顯示目錄中所有文件大小

-k 以KB為單位顯示文件大小

-m 以MB為單位顯示文件大小

-g 以GB為單位顯示文件大小

-h 以易讀方式顯示文件大小

-s 僅顯示總計(jì)

-c或--total 除了顯示個別目錄或文件的大小外,同時(shí)也顯示所有目錄或文件的總和

實(shí)例:
1、以易讀方式顯示文件夾內(nèi)及子文件夾大小

#du-hscf/

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

#du-ahscf/

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

#du-hctest/scf/

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

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

4. ls命令

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

常用參數(shù)搭配:

ls -a 列出目錄所有文件,包含以.開始的隱藏文件

ls -A 列出除.及..的其它文件

ls -r 反序排列

ls -t 以文件修改時(shí)間排序

ls -S 以文件大小排序

ls -h 以易讀大小顯示

ls -l 除了文件名之外,還將文件的權(quán)限、所有者、文件大小等信息詳細(xì)列出來

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

#ls-lhrt

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

#ls-lrS

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

#ls-lt*

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

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

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

#find$pwd-maxdepth1|xargsls-ld

5. mkdir 命令

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

可用選項(xiàng):

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

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

實(shí)例:
1、當(dāng)前工作目錄下創(chuàng)建名為 t 的文件夾

#mkdirt

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 命令

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

注意:不能刪除非空目錄

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

#rmdir-pparent/child/child11

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

1、ifconfig 命令

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

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

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

2、iptables 命令

iptables:是一個配置 Linux 內(nèi)核防火墻的命令行工具。功能非常強(qiáng)大,對于我們開發(fā)來說,主要掌握如何開放端口即可。例如:把來源 IP 為 192.168.1.101 訪問本機(jī) 80 端口的包直接拒絕:

#iptables-IINPUT-s192.168.1.101-ptcp--dport80-jREJECT

開啟 80 端口,因?yàn)閣eb對外都是這個端口

#iptables-AINPUT-ptcp--dport80-jACCEP

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

3、netstat 命令

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

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

語法

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

參數(shù)說明:

-a或–all 顯示所有連線中的Socket。 -A<網(wǎng)絡(luò)類型>或–<網(wǎng)絡(luò)類型>列出該網(wǎng)絡(luò)類型連線中的相關(guān)地址。 -c或–continuous 持續(xù)列出網(wǎng)絡(luò)狀態(tài)。 -C或–cache 顯示路由器配置的快取信息。 -e或–extend 顯示網(wǎng)絡(luò)其他相關(guān)信息。 -F或–fib 顯示FIB。 -g或–groups 顯示多重廣播功能群組組員名單。 -h或–help 在線幫助。 -i或–interfaces 顯示網(wǎng)絡(luò)界面信息表單。 -l或–listening 顯示監(jiān)控中的服務(wù)器的Socket。 -M或–masquerade 顯示偽裝的網(wǎng)絡(luò)連線。 -n或–numeric 直接使用IP地址,而不通過域名服務(wù)器。 -N或–netlink或–symbolic 顯示網(wǎng)絡(luò)硬件外圍設(shè)備的符號連接名稱。 -o或–timers 顯示計(jì)時(shí)器。 -p或–programs 顯示正在使用Socket的程序識別碼和程序名稱。 -r或–route 顯示Routing Table。 -s或–statistice 顯示網(wǎng)絡(luò)工作信息統(tǒng)計(jì)表。 -t或–tcp 顯示TCP傳輸協(xié)議的連線狀況。 -u或–udp 顯示UDP傳輸協(xié)議的連線狀況。 -v或–verbose 顯示指令執(zhí)行過程。 -V或–version 顯示版本信息。 -w或–raw 顯示RAW傳輸協(xié)議的連線狀況。 -x或–unix 此參數(shù)的效果和指定"-A unix"參數(shù)相同。 –ip或–inet 此參數(shù)的效果和指定"-A inet"參數(shù)相同。

實(shí)例

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

#netstat-lnp ActiveInternetconnections(onlyservers) ProtoRecv-QSend-QLocalAddressForeignAddressStatePID/Programname tcp000.0.0.0:220.0.0.0:*LISTEN1035/sshd tcp00:::22:::*LISTEN1035/sshd udp000.0.0.0:680.0.0.0:*931/dhclient ActiveUNIXdomainsockets(onlyservers) ProtoRefCntFlagsTypeStateI-NodePID/ProgramnamePath unix2[ACC]STREAMLISTENING68251/init@/com/ubuntu/upstart unix2[ACC]STREAMLISTENING84291003/dbus-daemon/var/run/dbus/system_bus_socket

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

#netstat-an ActiveInternetconnections(serversandestablished) ProtoRecv-QSend-QLocalAddressForeignAddressState tcp000.0.0.0:220.0.0.0:*LISTEN tcp00192.168.147.130:22192.168.147.1:23893ESTABLISHED tcp00:::22:::*LISTEN udp000.0.0.0:680.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)鏈接的個數(shù)?

嚴(yán)格來說,這個題目考驗(yàn)的是對 awk 的使用。

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

tcp00120.27.146.122:80113.65.18.33:62721ESTABLISHED tcp00120.27.146.122:8027.43.83.115:47148ESTABLISHED tcp00120.27.146.122:58838106.39.162.96:443ESTABLISHED tcp00120.27.146.122:52304203.208.40.121:443ESTABLISHED tcp00120.27.146.122:33194203.208.40.122:443ESTABLISHED tcp00120.27.146.122:53758101.37.183.144:443ESTABLISHED tcp00120.27.146.122:2701723.105.193.30:50556ESTABLISHED

4、ping 命令

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

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

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

#ping-c2www.baidu.com

5、telnet 命令

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

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

語法

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

參數(shù)說明:

-8 允許使用8位字符資料,包括輸入與輸出。 -a 嘗試自動登入遠(yuǎn)端系統(tǒng)。 -b<主機(jī)別名>使用別名指定遠(yuǎn)端主機(jī)名稱。 -c 不讀取用戶專屬目錄里的.telnetrc文件。 -d 啟動排錯模式。 -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 不自動登入遠(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ī)

#telnet192.168.0.5

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

1、date命令

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

命令參數(shù):

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

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

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

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

#date-d"nov22"今年的11月22日是星期三 #date-d'2weeks'2周后的日期 #date-d'nextmonday'(下周一的日期) #date-dnext-day+%Y%m%d(明天的日期)或者:date-dtomorrow+%Y%m%d #date-dlast-day+%Y%m%d(昨天的日期)或者:date-dyesterday+%Y%m%d #date-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)存使用總合

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

#free #free-k #free-m

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

#free-t

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

#free-s10

3、kill 命令

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

常用參數(shù):

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

實(shí)例:
1、先使用ps查找進(jìn)程pro1,然后用kill殺掉

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

4. ps 命令

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

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

運(yùn)行(正在運(yùn)行或在運(yùn)行隊(duì)列中等待)

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

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

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

停止(進(jìn)程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號后停止運(yùn)行運(yùn)行)

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

D 不可中斷 uninterruptible sleep (usually IO)

R 運(yùn)行 runnable (on run queue)

S 中斷 sleeping

T 停止 traced or stopped

Z 僵死 a defunct (”zombie”) process

命令參數(shù):

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

實(shí)例:
(1)顯示當(dāng)前所有進(jìn)程環(huán)境變量及進(jìn)程間關(guān)系

ps-ef

2、顯示當(dāng)前所有進(jìn)程

#ps-A

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

#ps-aux|grepapache

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

#psaux|grep'(cron|syslog)'

5. rpm 命令

Linux rpm 命令用于管理套件。

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

查看系統(tǒng)自帶jdk

#rpm-qa|grepjdk

刪除系統(tǒng)自帶jdk

#rpm-e--nodeps查看jdk顯示的數(shù)據(jù)

安裝jdk

#rpm-ivhjdk-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)程號>指定進(jìn)程顯示 -n<次數(shù)>循環(huán)顯示次數(shù)

實(shí)例:

top-1423up70days,16:44,2users,loadaverage:1.25,1.32,1.35 Tasks:206total,1running,205sleeping,0stopped,0zombie Cpu(s):5.9%us,3.4%sy,0.0%ni,90.4%id,0.0%wa,0.0%hi,0.2%si,0.0%st Mem:32949016ktotal,14411180kused,18537836kfree,169884kbuffers Swap:32764556ktotal,0kused,32764556kfree,3612636kcached PIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND 28894root2201501m405m10mS52.21.32534:16java

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

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

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

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

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

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

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

第二行,Tasks — 任務(wù)(進(jìn)程),具體信息說明如下:

系統(tǒng)現(xiàn)在共有206個進(jìn)程,其中處于運(yùn)行中的有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)先級的進(jìn)程占用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)

第六行,空行。

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

PID—進(jìn)程id USER—進(jìn)程所有者 PR—進(jìn)程優(yōu)先級 NI — nice值。負(fù)值表示高優(yōu)先級,正值表示低優(yōu)先級 VIRT —進(jìn)程使用的虛擬內(nèi)存總量,單位kb。VIRT=SWAP+RES RES —進(jìn)程使用的、未被換出的物理內(nèi)存大小,單位kb。RES=CODE+DATA SHR—共享內(nèi)存大小,單位kb S —進(jìn)程狀態(tài)。D=不可中斷的睡眠狀態(tài) R=運(yùn)行 S=睡眠 T=跟蹤/停止 Z=僵尸進(jìn)程 %CPU—上次更新到現(xiàn)在的CPU時(shí)間占用百分比 %MEM—進(jìn)程使用的物理內(nèi)存百分比 TIME+—進(jìn)程使用的CPU時(shí)間總計(jì),單位1/100秒 COMMAND—進(jìn)程名稱(命令名/命令行) top交互命令 h顯示top交互命令幫助信息 c切換顯示命令名稱和完整命令行 m以內(nèi)存使用率排序 P根據(jù)CPU使用百分比大小進(jìn)行排序 T根據(jù)時(shí)間/累計(jì)時(shí)間進(jìn)行排序 W將當(dāng)前設(shè)置寫入~/.toprc文件中 o或者O改變顯示項(xiàng)目的順序

7、yum 命令

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

基於RPM包管理,能夠從指定的服務(wù)器自動下載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.清除緩存命令: yumcleanpackages:清除緩存目錄下的軟件包 yumcleanheaders:清除緩存目錄下的headers yumcleanoldheaders:清除緩存目錄下舊的headers yumclean,yumcleanall(=yumcleanpackages;yumcleanoldheaders):清除緩存目錄下的軟件包及舊的headers

實(shí)例

安裝 pam-devel

#yuminstallpam-devel

十二、備份壓縮命令

1、bzip2 命令

創(chuàng)建 *.bz2 壓縮文件

#bzip2test.txt

解壓 *.bz2 文件

#bzip2-dtest.txt.bz2

2、gzip 命令

創(chuàng)建一個 *.gz 的壓縮文件

#gziptest.txt

解壓 *.gz 文件

#gzip-dtest.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 實(shí)例:

壓縮 gzip fileName .tar.gz 和.tgz
解壓:gunzip filename.gz 或 gzip -d filename.gz
對應(yīng):tar zcvf filename.tar.gz tar zxvf filename.tar.gz

bz2實(shí)例:

壓縮 bzip2 -z filename .tar.bz2
解壓:bunzip filename.bz2或bzip -d filename.bz2
對應(yīng):tar jcvf filename.tar.gz
解壓:tar jxvf filename.tar.bz2

實(shí)例:
1、將文件全部打包成 tar 包

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

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

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

3、查看剛打包的文件內(nèi)容(一定加z,因?yàn)槭鞘褂?gzip 壓縮的)

#tar-ztvf/tmp/etc.tar.gz

4、要壓縮打包 /home, /etc ,但不要 /home/dmtsai

#tar--exclude/home/dmtsai-zcvfmyfile.tar.gz/home/*/etc

4. unzip 命令

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

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

    關(guān)注

    87

    文章

    11123

    瀏覽量

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

    關(guān)注

    37

    文章

    6545

    瀏覽量

    122752

原文標(biāo)題:2020 年版最新、最全的 Linux 面試題!

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    大廠電子工程師常見面試題#電子工程師 #硬件工程師 #電路知識 #面試題

    電子工程師電路
    安泰小課堂
    發(fā)布于 :2024年04月30日 17:33:15

    什么是守護(hù)線程?守護(hù)線程的底層原理和使用示例

    大家好,今天這篇文章來梳理一下有關(guān)守護(hù)線程的相關(guān)問題,這也是之前曾經(jīng)有被問到過的面試題,在此之前我們先看一看守護(hù)線程的使用示例。
    的頭像 發(fā)表于 01-05 11:01 ?1187次閱讀
    什么是守護(hù)線程?守護(hù)線程的底層原理和使用示例

    經(jīng)典Linux面試題總結(jié)

    絕對路徑用什么符號表示?當(dāng)前目錄、上層目錄用什么表示?主目錄用什么表示? 切換目錄用什么命令?
    的頭像 發(fā)表于 01-04 11:01 ?298次閱讀

    總結(jié)常見電路面試題

    輸入信號應(yīng)提前時(shí)鐘上升沿(如上升沿有效)T時(shí)間到達(dá)芯片,這個T就是建立時(shí)間-Setup time。如不滿足setup time,這個數(shù)據(jù)就不能被這一時(shí)鐘打入觸發(fā)器,只有在下一個時(shí)鐘上升沿,數(shù)據(jù)才能被打入觸發(fā)器。
    的頭像 發(fā)表于 01-02 16:03 ?317次閱讀

    nginx常見面試題:負(fù)載均衡有哪些算法?

    正向代理是位于用戶設(shè)備和互聯(lián)網(wǎng)之間的服務(wù)器。它代理的是客戶端,是站在用戶一方的。其真實(shí)客戶端對于服務(wù)器不可見。
    的頭像 發(fā)表于 12-07 10:45 ?489次閱讀
    nginx常見<b class='flag-5'>面試題</b>:負(fù)載均衡有哪些算法?

    求解三極管電路的輸出電位值

    面試題的選擇當(dāng)然是偶個人覺得比較好的,所以肯定有一定的主觀性。咱以前為公司招聘時(shí)也出過題目,都是最簡單的(例如,給一個“場效應(yīng)管驅(qū)動電磁繼電器”電路,讓你描述一些元件的作用),至于工程師能力與經(jīng)驗(yàn)
    的頭像 發(fā)表于 11-20 17:38 ?843次閱讀
    求解三極管電路的輸出電位值

    硬件工程師經(jīng)典面試題詳解

    硬件工程師經(jīng)典面試題詳解
    的頭像 發(fā)表于 11-20 15:08 ?1172次閱讀
    硬件工程師經(jīng)典<b class='flag-5'>面試題</b>詳解

    Feign的超時(shí)時(shí)間如何設(shè)置呢?

    今天來聊一聊前段時(shí)間看到的一個面試題,也是在實(shí)際項(xiàng)目中需要考慮的一個問題,F(xiàn)eign 的超時(shí)時(shí)間如何設(shè)置?
    的頭像 發(fā)表于 11-15 10:22 ?1031次閱讀
    Feign的超時(shí)時(shí)間如何設(shè)置呢?

    面試題:malloc(0)會發(fā)生什么?

    至此,我們就可以根據(jù)這些計(jì)算出使用 glibc 在我們的電腦上運(yùn)行時(shí) malloc 出的最小空間的大小了。計(jì)算完后,還可以根據(jù) malloc_usable_size 判斷自己的計(jì)算是否正確,樣例代碼如下
    的頭像 發(fā)表于 10-31 16:27 ?392次閱讀
    <b class='flag-5'>面試題</b>:malloc(0)會發(fā)生什么?

    30道Linux面試題總結(jié)

    如果你是一名開發(fā)人員、系統(tǒng)管理員,或是僅僅對 Linux 感興趣,那么這個列表是為你準(zhǔn)備的。它包含了類 Unix 系統(tǒng)管理或編程職位面試中涉及 Linux 相關(guān)的所有常見問題。
    發(fā)表于 10-27 15:29 ?1911次閱讀
    30道<b class='flag-5'>Linux</b><b class='flag-5'>面試題</b>總結(jié)

    c語言面試題集(完整版)

    電子發(fā)燒友網(wǎng)站提供《c語言面試題集(完整版).pdf》資料免費(fèi)下載
    發(fā)表于 10-20 11:20 ?2次下載
    c語言<b class='flag-5'>面試題</b>集(完整版)

    mysql經(jīng)典面試題及答案

    char、varchar的區(qū)別是什么? varchar是變長而char的長度是固定的。如果你的內(nèi)容是固定大小的,你會得到更好的性能。
    的頭像 發(fā)表于 10-20 09:47 ?914次閱讀
    mysql經(jīng)典<b class='flag-5'>面試題</b>及答案

    20道常見電路設(shè)計(jì)面試題分享

    同步電路和異步電路的區(qū)別是什么? 同步電路:存儲電路中所有觸發(fā)器的時(shí)鐘輸入端都接同一個時(shí)鐘脈沖源,因而所有觸發(fā)器的狀態(tài)的變化都與所加的時(shí)鐘脈沖信號同步。
    的頭像 發(fā)表于 10-11 11:13 ?719次閱讀

    Redis中的使用

    Redis 作為內(nèi)存的存儲中間件,已經(jīng)是面試面試題必問之一了,今天一起來看看 Redis 的事務(wù)吧。 事務(wù)提供了一種"將多個命令打包,一次性提交并按順序執(zhí)行"的機(jī)制,提交后在事務(wù)執(zhí)行中不會
    的頭像 發(fā)表于 10-08 15:27 ?400次閱讀
    Redis中的使用

    硬件經(jīng)典面試100題分享

    學(xué)電人員必備;硬件經(jīng)典面試100題;面向電子行業(yè)的面試基礎(chǔ)問題,提前進(jìn)入職業(yè)的大門
    發(fā)表于 09-27 06:23