前端&後端程序員必備的Linux基礎知識

剛剛把文章改了名字:《後端程序員必備的Linux基礎知識》->《前端&後端程序員必備的Linux基礎知識》。😁前端

本文同步更新在個人Github上:網頁連接linux

我本身總結的Java學習的系統知識點以及面試問題,目前已經開源,會一直完善下去,歡迎建議和指導歡迎Star: github.com/Snailclimb/…git

學習Linux以前,咱們先來簡單的認識一下操做系統。程序員

一 從認識操做系統開始

1.1 操做系統簡介

我經過如下四點介紹什麼操做系統:github

  • 操做系統(Operation System,簡稱OS)是管理計算機硬件與軟件資源的程序,是計算機系統的內核與基石;
  • 操做系統本質上是運行在計算機上的軟件程序 ;
  • 爲用戶提供一個與系統交互的操做界面 ;
  • 操做系統份內核與外殼(咱們能夠把外殼理解成圍繞着內核的應用程序,而內核就是能操做硬件的程序)。

操做系統份內核與外殼

1.2 操做系統簡單分類

  1. Windows: 目前最流行的我的桌面操做系統 ,不作多的介紹,你們都清楚。
  2. Unix: 最先的多用戶、多任務操做系統 .按照操做系統的分類,屬於分時操做系統。Unix 大多被用在服務器、工做站,如今也有用在我的計算機上。它在建立互聯網、計算機網絡或客戶端/服務器模型方面發揮着很是重要的做用。
    Unix
  3. Linux: Linux是一套無償使用和自由傳播的類Unix操做系統.Linux存在着許多不一樣的Linux版本,但它們都使用了 Linux內核 。Linux可安裝在各類計算機硬件設備中,好比手機、平板電腦、路由器、視頻遊戲控制檯、臺式計算機、大型機和超級計算機。嚴格來說,Linux這個詞自己只表示Linux內核,但實際上人們已經習慣了用Linux來形容整個基於Linux內核,而且使用GNU 工程各類工具和數據庫的操做系統。

Linux

二 初探Linux

2.1 Linux簡介

咱們上面已經介紹到了Linux,咱們這裏只強調三點。面試

  • 類Unix系統: Linux是一種自由、開放源碼的相似Unix的操做系統
  • Linux內核: 嚴格來講,Linux這個詞自己只表示Linux內核
  • Linux之父: 一個編程領域的傳奇式人物。他是Linux內核的最先做者,隨後發起了這個開源項目,擔任Linux內核的首要架構師與項目協調者,是當今世界最著名的電腦程序員、黑客之一。他還發起了Git這個開源項目,併爲主要的開發者。

Linux

2.2 Linux誕生簡介

  • 1991年,芬蘭的業餘計算機愛好者Linus Torvalds編寫了一款相似Minix的系統(基於微內核架構的類Unix操做系統)被ftp管理員命名爲Linux 加入到自由軟件基金的GNU計劃中;
  • Linux以一隻可愛的企鵝做爲標誌,象徵着敢做敢爲、熱愛生活。

2.3 Linux的分類

Linux根據原生程度,分爲兩種:redis

  1. 內核版本: Linux不是一個操做系統,嚴格來說,Linux只是一個操做系統中的內核。內核是什麼?內核創建了計算機軟件與硬件之間通信的平臺,內核提供系統服務,好比文件管理、虛擬內存、設備I/O等;
  2. 發行版本: 一些組織或公司在內核版基礎上進行二次開發而從新發行的版本。Linux發行版本有不少種(ubuntu和CentOS用的都不少,初學建議選擇CentOS),以下圖所示:
    Linux發行版本

三 Linux文件系統概覽

3.1 Linux文件系統簡介

在Linux操做系統中,全部被操做系統管理的資源,例如網絡接口卡、磁盤驅動器、打印機、輸入輸出設備、普通文件或是目錄都被看做是一個文件。數據庫

也就是說在LINUX系統中有一個重要的概念:一切都是文件。其實這是UNIX哲學的一個體現,而Linux是重寫UNIX而來,因此這個概念也就傳承了下來。在UNIX系統中,把一切資源都看做是文件,包括硬件設備。UNIX系統把每一個硬件都當作是一個文件,一般稱爲設備文件,這樣用戶就能夠用讀寫文件的方式實現對硬件的訪問。編程

3.2 文件類型與目錄結構

Linux支持5種文件類型 : ubuntu

文件類型

Linux的目錄結構以下:

Linux文件系統的結構層次鮮明,就像一棵倒立的樹,最頂層是其根目錄:

Linux的目錄結構

常見目錄說明:

  • /bin: 存放二進制可執行文件(ls,cat,mkdir等),經常使用命令通常都在這裏;
  • /etc: 存放系統管理和配置文件;
  • /home: 存放全部用戶文件的根目錄,是用戶主目錄的基點,好比用戶user的主目錄就是/home/user,能夠用~user表示;
  • /usr : 用於存放系統應用程序;
  • /opt: 額外安裝的可選應用程序包所放置的位置。通常狀況下,咱們能夠把tomcat等都安裝到這裏;
  • /proc: 虛擬文件系統目錄,是系統內存的映射。可直接訪問這個目錄來獲取系統信息;
  • /root: 超級用戶(系統管理員)的主目錄(特權階級^o^);
  • /sbin: 存放二進制可執行文件,只有root才能訪問。這裏存放的是系統管理員使用的系統級別的管理命令和程序。如ifconfig等;
  • /dev: 用於存放設備文件;
  • /mnt: 系統管理員安裝臨時文件系統的安裝點,系統提供這個目錄是讓用戶臨時掛載其餘的文件系統;
  • /boot: 存放用於系統引導時使用的各類文件;
  • /lib : 存放着和系統運行相關的庫文件 ;
  • /tmp: 用於存放各類臨時文件,是公用的臨時文件存儲點;
  • /var: 用於存放運行時須要改變數據的文件,也是某些大文件的溢出區,比方說各類服務的日誌文件(系統啓動日誌等。)等;
  • /lost+found: 這個目錄平時是空的,系統非正常關機而留下「無家可歸」的文件(windows下叫什麼.chk)就在這裏。

四 Linux基本命令

下面只是給出了一些比較經常使用的命令。推薦一個Linux命令快查網站,很是不錯,你們若是遺忘某些命令或者對某些命令不理解均可以在這裏獲得解決。

Linux命令大全:man.linuxde.net/

4.1 目錄切換命令

  • cd usr 切換到該目錄下usr目錄
  • cd ..(或cd../) 切換到上一層目錄
  • cd / 切換到系統根目錄
  • cd ~ 切換到用戶主目錄
  • cd - 切換到上一個所在目錄

4.2 目錄的操做命令(增刪改查)

  1. mkdir 目錄名稱 增長目錄

  2. ls或者ll(ll是ls -l的縮寫,ll命令以看到該目錄下的全部目錄和文件的詳細信息):查看目錄信息

  3. find 目錄 參數 尋找目錄(查)

    示例:

    • 列出當前目錄及子目錄下全部文件和文件夾: find .
    • /home目錄下查找以.txt結尾的文件名:find /home -name "*.txt"
    • 同上,但忽略大小寫: find /home -iname "*.txt"
    • 當前目錄及子目錄下查找全部以.txt和.pdf結尾的文件:find . \( -name "*.txt" -o -name "*.pdf" \)find . -name "*.txt" -o -name "*.pdf"
  4. mv 目錄名稱 新目錄名稱 修改目錄的名稱(改)

    注意:mv的語法不只能夠對目錄進行重命名並且也能夠對各類文件,壓縮包等進行 重命名的操做。mv命令用來對文件或目錄從新命名,或者將文件從一個目錄移到另外一個目錄中。後面會介紹到mv命令的另外一個用法。

  5. mv 目錄名稱 目錄的新位置 移動目錄的位置---剪切(改)

    注意:mv語法不只能夠對目錄進行剪切操做,對文件和壓縮包等均可執行剪切操做。另外mv與cp的結果不一樣,mv好像文件「搬家」,文件個數並未增長。而cp對文件進行復制,文件個數增長了。

  6. cp -r 目錄名稱 目錄拷貝的目標位置 拷貝目錄(改),-r表明遞歸拷貝

    注意:cp命令不只能夠拷貝目錄還能夠拷貝文件,壓縮包等,拷貝文件和壓縮包時不 用寫-r遞歸

  7. rm [-rf] 目錄: 刪除目錄(刪)

    注意:rm不只能夠刪除目錄,也能夠刪除其餘文件或壓縮包,爲了加強你們的記憶, 不管刪除任何目錄或文件,都直接使用rm -rf 目錄/文件/壓縮包

4.3 文件的操做命令(增刪改查)

  1. touch 文件名稱: 文件的建立(增)

  2. cat/more/less/tail 文件名稱 文件的查看(查)

    • cat 只能顯示最後一屏內容
    • more 能夠顯示百分比,回車能夠向下一行, 空格能夠向下一頁,q能夠退出查看
    • less 可使用鍵盤上的PgUp和PgDn向上 和向下翻頁,q結束查看
    • tail-10 查看文件的後10行,Ctrl+C結束

    注意:命令 tail -f 文件 能夠對某個文件進行動態監控,例如tomcat的日誌文件, 會隨着程序的運行,日誌會變化,可使用tail -f catalina-2016-11-11.log 監控 文 件的變化

  3. vim 文件 修改文件的內容(改)

    vim編輯器是Linux中的強大組件,是vi編輯器的增強版,vim編輯器的命令和快捷方式有不少,但此處不一一闡述,你們也無需研究的很透徹,使用vim編輯修改文件的方式基本會使用就能夠了。

    在實際開發中,使用vim編輯器主要做用就是修改配置文件,下面是通常步驟:

    vim 文件------>進入文件----->命令模式------>按i進入編輯模式----->編輯文件 ------->按Esc進入底行模式----->輸入:wq/q! (輸入wq表明寫入內容並退出,即保存;輸入q!表明強制退出不保存。)

  4. rm -rf 文件 刪除文件(刪)

    同目錄刪除:熟記 rm -rf 文件 便可

4.4 壓縮文件的操做命令

1)打包並壓縮文件:

Linux中的打包文件通常是以.tar結尾的,壓縮的命令通常是以.gz結尾的。

而通常狀況下打包和壓縮是一塊兒進行的,打包並壓縮後的文件的後綴名通常.tar.gz。 命令:tar -zcvf 打包壓縮後的文件名 要打包壓縮的文件 其中:

z:調用gzip壓縮命令進行壓縮

c:打包文件

v:顯示運行過程

f:指定文件名

好比:加入test目錄下有三個文件分別是 :aaa.txt bbb.txt ccc.txt,若是咱們要打包test目錄並指定壓縮後的壓縮包名稱爲test.tar.gz可使用命令:tar -zcvf test.tar.gz aaa.txt bbb.txt ccc.txt或:tar -zcvf test.tar.gz /test/

2)解壓壓縮包:

命令:tar [-xvf] 壓縮文件

其中:x:表明解壓

示例:

1 將/test下的test.tar.gz解壓到當前目錄下可使用命令:tar -xvf test.tar.gz

2 將/test下的test.tar.gz解壓到根目錄/usr下:tar -xvf xxx.tar.gz -C /usr(- C表明指定解壓的位置)

4.5 Linux的權限命令

操做系統中每一個文件都擁有特定的權限、所屬用戶和所屬組。權限是操做系統用來限制資源訪問的機制,在Linux中權限通常分爲讀(readable)、寫(writable)和執行(excutable),分爲三組。分別對應文件的屬主(owner),屬組(group)和其餘用戶(other),經過這樣的機制來限制哪些用戶、哪些組能夠對特定的文件進行什麼樣的操做。經過 ls -l 命令咱們能夠 查看某個目錄下的文件或目錄的權限

示例:在隨意某個目錄下ls -l

第一列的內容的信息解釋以下:

下面將詳細講解文件的類型、Linux中權限以及文件有全部者、所在組、其它組具體是什麼?

文件的類型:

  • d: 表明目錄
  • -: 表明文件
  • l: 表明連接(能夠認爲是window中的快捷方式)

Linux中權限分爲如下幾種:

  • r:表明權限是可讀,r也能夠用數字4表示
  • w:表明權限是可寫,w也能夠用數字2表示
  • x:表明權限是可執行,x也能夠用數字1表示

文件和目錄權限的區別:

對文件和目錄而言,讀寫執行表示不一樣的意義。

對於文件:

權限名稱 可執行操做
r 可使用cat查看文件的內容
w 能夠修改文件的內容
x 能夠將其運行爲二進制文件

對於目錄:

權限名稱 可執行操做
r 能夠查看目錄下列表
w 能夠建立和刪除目錄下文件
x 可使用cd進入目錄

在linux中的每一個用戶必須屬於一個組,不能獨立於組外。在linux中每一個文件有全部者、所在組、其它組的概念。

  • 全部者

    通常爲文件的建立者,誰建立了該文件,就自然的成爲該文件的全部者,用ls ‐ahl命令能夠看到文件的全部者 也可使用chown 用戶名 文件名來修改文件的全部者 。

  • 文件所在組

    當某個用戶建立了一個文件後,這個文件的所在組就是該用戶所在的組 用ls ‐ahl命令能夠看到文件的全部組 也可使用chgrp 組名 文件名來修改文件所在的組。

  • 其它組

    除開文件的全部者和所在組的用戶外,系統的其它用戶都是文件的其它組

咱們再來看看如何修改文件/目錄的權限。

修改文件/目錄的權限的命令:chmod

示例:修改/test下的aaa.txt的權限爲屬主有所有權限,屬主所在的組有讀寫權限, 其餘用戶只有讀的權限

chmod u=rwx,g=rw,o=r aaa.txt

上述示例還可使用數字表示:

chmod 764 aaa.txt

補充一個比較經常使用的東西:

假如咱們裝了一個zookeeper,咱們每次開機到要求其自動啓動該怎麼辦?

  1. 新建一個腳本zookeeper
  2. 爲新建的腳本zookeeper添加可執行權限,命令是:chmod +x zookeeper
  3. 把zookeeper這個腳本添加到開機啓動項裏面,命令是:chkconfig --add zookeeper
  4. 若是想看看是否添加成功,命令是:chkconfig --list

4.6 Linux 用戶管理

Linux系統是一個多用戶多任務的分時操做系統,任何一個要使用系統資源的用戶,都必須首先向系統管理員申請一個帳號,而後以這個帳號的身份進入系統。

用戶的帳號一方面能夠幫助系統管理員對使用系統的用戶進行跟蹤,並控制他們對系統資源的訪問;另外一方面也能夠幫助用戶組織文件,併爲用戶提供安全性保護。

Linux用戶管理相關命令:

  • useradd 選項 用戶名:添加用戶帳號
  • userdel 選項 用戶名:刪除用戶賬號
  • usermod 選項 用戶名:修改賬號
  • passwd 用戶名:更改或建立用戶的密碼
  • passwd -S 用戶名 :顯示用戶帳號密碼信息
  • passwd -d 用戶名: 清除用戶密碼

useradd命令用於Linux中建立的新的系統用戶。useradd可用來創建用戶賬號。賬號建好以後,再用passwd設定賬號的密碼.而可用userdel刪除賬號。使用useradd指令所創建的賬號,其實是保存在/etc/passwd文本文件中。

passwd命令用於設置用戶的認證信息,包括用戶密碼、密碼過時時間等。系統管理者則能用它管理系統用戶的密碼。只有管理者能夠指定用戶名稱,通常用戶只能變動本身的密碼。

4.7 Linux系統用戶組的管理

每一個用戶都有一個用戶組,系統能夠對一個用戶組中的全部用戶進行集中管理。不一樣Linux 系統對用戶組的規定有所不一樣,如Linux下的用戶屬於與它同名的用戶組,這個用戶組在建立用戶時同時建立。

用戶組的管理涉及用戶組的添加、刪除和修改。組的增長、刪除和修改實際上就是對/etc/group文件的更新。

Linux系統用戶組的管理相關命令:

  • groupadd 選項 用戶組 :增長一個新的用戶組
  • groupdel 用戶組:要刪除一個已有的用戶組
  • groupmod 選項 用戶組 : 修改用戶組的屬性

4.8 其餘經常使用命令

  • pwd 顯示當前所在位置

  • grep 要搜索的字符串 要搜索的文件 --color 搜索命令,--color表明高亮顯示

  • ps -ef/ps aux 這兩個命令都是查看當前系統正在運行進程,二者的區別是展現格式不一樣。若是想要查看特定的進程可使用這樣的格式:ps aux|grep redis (查看包括redis字符串的進程)

    注意:若是直接用ps((Process Status))命令,會顯示全部進程的狀態,一般結合grep命令查看某進程的狀態。

  • kill -9 進程的pid 殺死進程(-9 表示強制終止。)

    先用ps查找進程,而後用kill殺掉

  • 網絡通訊命令:

    • 查看當前系統的網卡信息:ifconfig
    • 查看與某臺機器的鏈接狀況:ping
    • 查看當前系統的端口使用:netstat -an
  • shutdown shutdown -h now: 指定如今當即關機;shutdown +5 "System will shutdown after 5 minutes":指定5分鐘後關機,同時送出警告信息給登入用戶。

  • reboot reboot 重開機。reboot -w 作個重開機的模擬(只有紀錄並不會真的重開機)。

若是你以爲個人文章對你有幫助話,歡迎關注個人微信公衆號:"Java面試通關手冊"(一個有溫度的微信公衆號,無廣告,單純技術分享,期待與你共同進步~~~堅持原創,分享美文,分享各類Java學習資源。)

相關文章
相關標籤/搜索