后端程序員必備的 Linux 基礎(chǔ)知識+常見命令(近萬字總結(jié))
之前寫過關(guān)于大企鵝(Linux)的文章,不過這篇對之前的版本進行了大幅度的重構(gòu)。經(jīng)常關(guān)注JavaGuide(Github)的小伙伴可能也注意到?JavaGuide(Github)?上的很多文章,我近期的這一個多月都在默默重構(gòu)完善(持續(xù)跟進完善)。地址:https://github.com/Snailclimb/JavaGuide


今天這篇文章中簡單介紹一下一個 Java 程序員必知的 Linux 的一些概念以及常見命令(內(nèi)容過多,閱讀原文可以查看帶目錄的版本)。。
如果文章有任何需要改善和完善的地方,歡迎在評論區(qū)指出,共同進步!筆芯!
1. 從認識操作系統(tǒng)開始

正式開始 Linux 之前,簡單花一點點篇幅科普一下操作系統(tǒng)相關(guān)的內(nèi)容。
1.1. 操作系統(tǒng)簡介
我通過以下四點介紹什么是操作系統(tǒng):
操作系統(tǒng)(Operating System,簡稱 OS)是管理計算機硬件與軟件資源的程序,是計算機的基石。 操作系統(tǒng)本質(zhì)上是一個運行在計算機上的軟件程序 ,用于管理計算機硬件和軟件資源。 舉例:運行在你電腦上的所有應(yīng)用程序都通過操作系統(tǒng)來調(diào)用系統(tǒng)內(nèi)存以及磁盤等等硬件。 操作系統(tǒng)存在屏蔽了硬件層的復(fù)雜性。 操作系統(tǒng)就像是硬件使用的負責人,統(tǒng)籌著各種相關(guān)事項。 操作系統(tǒng)的內(nèi)核(Kernel)是操作系統(tǒng)的核心部分,它負責系統(tǒng)的內(nèi)存管理,硬件設(shè)備的管理,文件系統(tǒng)的管理以及應(yīng)用程序的管理。
內(nèi)核(Kernel)在后文中會提到。

1.2. 操作系統(tǒng)簡單分類
1.2.1. Windows
目前最流行的個人桌面操作系統(tǒng) ,不做多的介紹,大家都清楚。界面簡單易操作,軟件生態(tài)非常好。
玩玩電腦游戲還是必須要有 Windows 的,所以我現(xiàn)在是一臺 Windows 用于玩游戲,一臺 Mac 用于平時日常開發(fā)和學(xué)習(xí)使用。

1.2.2. Unix
最早的多用戶、多任務(wù)操作系統(tǒng) 。后面崛起的 Linux 在很多方面都參考了 Unix。
目前這款操作系統(tǒng)已經(jīng)逐漸逐漸退出操作系統(tǒng)的舞臺。

1.2.3. Linux
Linux 是一套免費使用、開源的類 Unix 操作系統(tǒng)。 Linux 存在著許多不同的發(fā)行版本,但它們都使用了 Linux 內(nèi)核 。
嚴格來講,Linux 這個詞本身只表示 Linux 內(nèi)核,在 GNU/Linux 系統(tǒng)中,Linux 實際就是 Linux 內(nèi)核,而該系統(tǒng)的其余部分主要是由 GNU 工程編寫和提供的程序組成。單獨的 Linux 內(nèi)核并不能成為一個可以正常工作的操作系統(tǒng)。
很多人更傾向使用 “GNU/Linux” 一詞來表達人們通常所說的 “Linux”。

1.2.4. Mac OS
蘋果自家的操作系統(tǒng),編程體驗和 Linux 相當,但是界面、軟件生態(tài)以及用戶體驗各方面都要比 Linux 操作系統(tǒng)更好。

1.3. 操作系統(tǒng)的內(nèi)核(Kernel)
我們先來看看維基百科對于內(nèi)核的解釋,我覺得總結(jié)的非常好!
內(nèi)核(英語:Kernel,又稱核心)在計算機科學(xué)中是一個用來管理軟件發(fā)出的數(shù)據(jù) I/O(輸入與輸出)要求的電腦程序,將這些要求轉(zhuǎn)譯為數(shù)據(jù)處理的指令并交由中央處理器(CPU)及電腦中其他電子組件進行處理,是現(xiàn)代操作系統(tǒng)中最基本的部分。它是為眾多應(yīng)用程序提供對計算機硬件的安全訪問的一部分軟件,這種訪問是有限的,并由內(nèi)核決定一個程序在什么時候?qū)δ巢糠钟布僮鞫嚅L時間。直接對硬件操作是非常復(fù)雜的。所以內(nèi)核通常提供一種硬件抽象的方法,來完成這些操作。有了這個,通過進程間通信機制及系統(tǒng)調(diào)用,應(yīng)用進程可間接控制所需的硬件資源(特別是處理器及 IO 設(shè)備)。
早期計算機系統(tǒng)的設(shè)計中,還沒有操作系統(tǒng)的內(nèi)核這個概念。隨著計算機系統(tǒng)的發(fā)展,操作系統(tǒng)內(nèi)核的概念才漸漸明晰起來了!
簡單概括兩點:
操作系統(tǒng)的內(nèi)核(Kernel)是操作系統(tǒng)的核心部分,它負責系統(tǒng)的內(nèi)存管理,硬件設(shè)備的管理,文件系統(tǒng)的管理以及應(yīng)用程序的管理。 操作系統(tǒng)的內(nèi)核是連接應(yīng)用程序和硬件的橋梁,決定著操作系統(tǒng)的性能和穩(wěn)定性。
1.4. 中央處理器(CPU,Central Processing Unit)
關(guān)于 CPU 簡單概括三點:
CPU 是一臺計算機的運算核心(Core)+控制核心( Control Unit),可以稱得上是計算機的大腦。 CPU 主要包括兩個部分:控制器+運算器。 CPU 的根本任務(wù)就是執(zhí)行指令,對計算機來說最終都是一串由“0”和“1”組成的序列。
1.5. CPU vs Kernel(內(nèi)核)
很多人容易無法區(qū)分操作系統(tǒng)的內(nèi)核(Kernel)和中央處理器(CPU),你可以簡單從下面兩點來區(qū)別:
操作系統(tǒng)的內(nèi)核(Kernel)屬于操作系統(tǒng)層面,而 CPU 屬于硬件。 CPU 主要提供運算,處理各種指令的能力。內(nèi)核(Kernel)主要負責系統(tǒng)管理比如內(nèi)存管理,它屏蔽了對硬件的操作。
下圖清晰說明了應(yīng)用程序、內(nèi)核、CPU 這三者的關(guān)系。

1.6. 系統(tǒng)調(diào)用
介紹系統(tǒng)調(diào)用之前,我們先來了解一下用戶態(tài)和系統(tǒng)態(tài)。
根據(jù)進程訪問資源的特點,我們可以把進程在系統(tǒng)上的運行分為兩個級別:
用戶態(tài)(user mode) : 用戶態(tài)運行的進程或可以直接讀取用戶程序的數(shù)據(jù)。 系統(tǒng)態(tài)(kernel mode): 可以簡單的理解系統(tǒng)態(tài)運行的進程或程序幾乎可以訪問計算機的任何資源,不受限制。
說了用戶態(tài)和系統(tǒng)態(tài)之后,那么什么是系統(tǒng)調(diào)用呢?
我們運行的程序基本都是運行在用戶態(tài),如果我們調(diào)用操作系統(tǒng)提供的系統(tǒng)態(tài)級別的子功能咋辦呢?那就需要系統(tǒng)調(diào)用了!
也就是說在我們運行的用戶程序中,凡是與系統(tǒng)態(tài)級別的資源有關(guān)的操作(如文件管理、進程控制、內(nèi)存管理等),都必須通過系統(tǒng)調(diào)用方式向操作系統(tǒng)提出服務(wù)請求,并由操作系統(tǒng)代為完成。
這些系統(tǒng)調(diào)用按功能大致可分為如下幾類:
設(shè)備管理 :完成設(shè)備的請求或釋放,以及設(shè)備啟動等功能。 文件管理 :完成文件的讀、寫、創(chuàng)建及刪除等功能。 進程控制 :完成進程的創(chuàng)建、撤銷、阻塞及喚醒等功能。 進程通信 :完成進程之間的消息傳遞或信號傳遞等功能。 內(nèi)存管理 :完成內(nèi)存的分配、回收以及獲取作業(yè)占用內(nèi)存區(qū)大小及地址等功能。
我在網(wǎng)上找了一個圖,通過這個圖可以很清晰的說明用戶程序、系統(tǒng)調(diào)用、內(nèi)核和硬件之間的關(guān)系。(太難了~木有自己畫)

2. 初探 Linux
2.1. Linux 簡介
我們上面已經(jīng)簡單了 Linux,這里只強調(diào)三點。
類 Unix 系統(tǒng) :Linux 是一種自由、開放源碼的類似 Unix 的操作系統(tǒng) Linux 本質(zhì)是指 Linux 內(nèi)核 :嚴格來講,Linux 這個詞本身只表示 Linux 內(nèi)核,單獨的 Linux 內(nèi)核并不能成為一個可以正常工作的操作系統(tǒng)。所以,就有了各種 Linux 發(fā)行版。 Linux 之父 :一個編程領(lǐng)域的傳奇式人物,真大佬!我輩崇拜敬仰之楷模。他是 Linux 內(nèi)核 的最早作者,隨后發(fā)起了這個開源項目,擔任 Linux 內(nèi)核的首要架構(gòu)師。他還發(fā)起了 Git 這個開源項目,并為主要的開發(fā)者。

2.2. Linux 誕生
1989 年,Linus Torvalds 進入芬蘭陸軍新地區(qū)旅,服 11 個月的國家義務(wù)兵役,軍銜為少尉,主要服務(wù)于計算機部門,任務(wù)是彈道計算。服役期間,購買了安德魯·斯圖爾特·塔能鮑姆所著的教科書及 minix 源代碼,開始研究操作系統(tǒng)。1990 年,他退伍后回到大學(xué),開始接觸 Unix。
Minix 是一個迷你版本的類 Unix 操作系統(tǒng),由塔能鮑姆教授為了教學(xué)之用而創(chuàng)作,采用微核心設(shè)計。它啟發(fā)了 Linux 內(nèi)核的創(chuàng)作。
1991 年,Linus Torvalds 開源了 Linux 內(nèi)核。Linux 以一只可愛的企鵝作為標志,象征著敢作敢為、熱愛生活。

2.3. 常見 Linux 發(fā)行版本有哪些?
Linus Torvalds 開源的只是 Linux 內(nèi)核,我們上面也提到了操作系統(tǒng)內(nèi)核的作用。一些組織或廠商將 Linux 內(nèi)核與各種軟件和文檔包裝起來,并提供系統(tǒng)安裝界面和系統(tǒng)配置、設(shè)定與管理工具,就構(gòu)成了 Linux 的發(fā)行版本。
內(nèi)核主要負責系統(tǒng)的內(nèi)存管理,硬件設(shè)備的管理,文件系統(tǒng)的管理以及應(yīng)用程序的管理。
Linux 的發(fā)行版本可以大體分為兩類:
商業(yè)公司維護的發(fā)行版本,以著名的 Red Hat 為代表,比較典型的有 CentOS 。 社區(qū)組織維護的發(fā)行版本,以 Debian 為代表,比較典型的有 Ubuntu、Debian。
對于初學(xué)者學(xué)習(xí) Linux ,推薦選擇 CentOS 。
3. Linux 文件系統(tǒng)概覽
3.1. Linux 文件系統(tǒng)簡介
在 Linux 操作系統(tǒng)中,所有被操作系統(tǒng)管理的資源,例如網(wǎng)絡(luò)接口卡、磁盤驅(qū)動器、打印機、輸入輸出設(shè)備、普通文件或是目錄都被看作是一個文件。 也就是說在 Linux 系統(tǒng)中有一個重要的概念:一切都是文件。
其實這是 UNIX 哲學(xué)的一個體現(xiàn),在 UNIX 系統(tǒng)中,把一切資源都看作是文件,Linux 的文件系統(tǒng)也是借鑒 UNIX 文件系統(tǒng)而來。
3.2. inode 介紹
inode 是 linux/unix 文件系統(tǒng)的基礎(chǔ)。那么,inode 是什么?有什么作用呢?
硬盤的最小存儲單位是扇區(qū)(Sector),塊(block)由多個扇區(qū)組成。文件數(shù)據(jù)存儲在塊中。塊的最常見的大小是 4kb,約為 8 個連續(xù)的扇區(qū)組成(每個扇區(qū)存儲 512 字節(jié))。一個文件可能會占用多個 block,但是一個塊只能存放一個文件。
雖然,我們將文件存儲在了塊(block)中,但是我們還需要一個空間來存儲文件的 元信息 metadata :如某個文件被分成幾塊、每一塊在的地址、文件擁有者,創(chuàng)建時間,權(quán)限,大小等。這種 存儲文件元信息的區(qū)域就叫 inode,譯為索引節(jié)點:i(index)+node。每個文件都有一個 inode,存儲文件的元信息。
可以使用 stat 命令可以查看文件的 inode 信息。每個 inode 都有一個號碼,Linux/Unix 操作系統(tǒng)不使用文件名來區(qū)分文件,而是使用 inode 號碼區(qū)分不同的文件。
簡單來說:inode 就是用來維護某個文件被分成幾塊、每一塊在的地址、文件擁有者,創(chuàng)建時間,權(quán)限,大小等信息。
簡單總結(jié)一下:
inode :記錄文件的屬性信息,可以使用 stat 命令查看 inode 信息。 block :實際文件的內(nèi)容,如果一個文件大于一個塊時候,那么將占用多個 block,但是一個塊只能存放一個文件。(因為數(shù)據(jù)是由 inode 指向的,如果有兩個文件的數(shù)據(jù)存放在同一個塊中,就會亂套了)

3.3. Linux 文件類型
Linux 支持很多文件類型,其中非常重要的文件類型有: 普通文件,目錄文件,鏈接文件,設(shè)備文件,管道文件,Socket 套接字文件等。
普通文件(-) :用于存儲信息和數(shù)據(jù), Linux 用戶可以根據(jù)訪問權(quán)限對普通文件進行查看、更改和刪除。比如:圖片、聲音、PDF、text、視頻、源代碼等等。 目錄文件(d,directory file) :目錄也是文件的一種,用于表示和管理系統(tǒng)中的文件,目錄文件中包含一些文件名和子目錄名。打開目錄事實上就是打開目錄文件。 符號鏈接文件(l,symbolic link) :保留了指向文件的地址而不是文件本身。 字符設(shè)備(c,char) :用來訪問字符設(shè)備比如硬盤。 設(shè)備文件(b,block) :用來訪問塊設(shè)備比如硬盤、軟盤。 管道文件(p,pipe) : 一種特殊類型的文件,用于進程之間的通信。 套接字(s,socket) :用于進程間的網(wǎng)絡(luò)通信,也可以用于本機之間的非網(wǎng)絡(luò)通信。
3.4. Linux 目錄樹
所有可操作的計算機資源都存在于目錄樹這個結(jié)構(gòu)中,對計算資源的訪問,可以看做是對這棵目錄樹的訪問。
Linux 的目錄結(jié)構(gòu)如下:
Linux 文件系統(tǒng)的結(jié)構(gòu)層次鮮明,就像一棵倒立的樹,最頂層是其根目錄:
常見目錄說明:
/bin: 存放二進制可執(zhí)行文件(ls、cat、mkdir 等),常用命令一般都在這里; /etc: 存放系統(tǒng)管理和配置文件; /home: 存放所有用戶文件的根目錄,是用戶主目錄的基點,比如用戶 user 的主目錄就是/home/user,可以用~user 表示; /usr : 用于存放系統(tǒng)應(yīng)用程序; /opt: 額外安裝的可選應(yīng)用程序包所放置的位置。一般情況下,我們可以把 tomcat 等都安裝到這里; /proc: 虛擬文件系統(tǒng)目錄,是系統(tǒng)內(nèi)存的映射。可直接訪問這個目錄來獲取系統(tǒng)信息; /root: 超級用戶(系統(tǒng)管理員)的主目錄(特權(quán)階級^o^); /sbin: 存放二進制可執(zhí)行文件,只有 root 才能訪問。這里存放的是系統(tǒng)管理員使用的系統(tǒng)級別的管理命令和程序。如 ifconfig 等; /dev: 用于存放設(shè)備文件; /mnt: 系統(tǒng)管理員安裝臨時文件系統(tǒng)的安裝點,系統(tǒng)提供這個目錄是讓用戶臨時掛載其他的文件系統(tǒng); /boot: 存放用于系統(tǒng)引導(dǎo)時使用的各種文件; /lib : 存放著和系統(tǒng)運行相關(guān)的庫文件 ; /tmp: 用于存放各種臨時文件,是公用的臨時文件存儲點; /var: 用于存放運行時需要改變數(shù)據(jù)的文件,也是某些大文件的溢出區(qū),比方說各種服務(wù)的日志文件(系統(tǒng)啟動日志等。)等; /lost+found: 這個目錄平時是空的,系統(tǒng)非正常關(guān)機而留下“無家可歸”的文件(windows 下叫什么.chk)就在這里。
4. Linux 基本命令
下面只是給出了一些比較常用的命令。推薦一個 Linux 命令快查網(wǎng)站,非常不錯,大家如果遺忘某些命令或者對某些命令不理解都可以在這里得到解決。
Linux 命令大全:http://man.linuxde.net/
4.1. 目錄切換命令
cd usr: 切換到該目錄下 usr 目錄cd ..(或cd../): 切換到上一層目錄cd /: 切換到系統(tǒng)根目錄cd ~: 切換到用戶主目錄cd -: 切換到上一個操作所在目錄
4.2. 目錄的操作命令(增刪改查)
mkdir 目錄名稱: 增加目錄。ls/ll(ll 是 ls -l 的別名,ll 命令可以看到該目錄下的所有目錄和文件的詳細信息):查看目錄信息。find 目錄 參數(shù): 尋找目錄(查)。示例:① 列出當前目錄及子目錄下所有文件和文件夾:find .;② 在/home目錄下查找以.txt 結(jié)尾的文件名:find /home -name "*.txt",忽略大小寫:find /home -iname "*.txt";③ 當前目錄及子目錄下查找所有以.txt 和.pdf 結(jié)尾的文件:find . \( -name "*.txt" -o -name "*.pdf" \)或find . -name "*.txt" -o -name "*.pdf"。mv 目錄名稱 新目錄名稱: 修改目錄的名稱(改)。注意:mv 的語法不僅可以對目錄進行重命名而且也可以對各種文件,壓縮包等進行 重命名的操作。mv 命令用來對文件或目錄重新命名,或者將文件從一個目錄移到另一個目錄中。后面會介紹到 mv 命令的另一個用法。mv 目錄名稱 目錄的新位置: 移動目錄的位置---剪切(改)。注意:mv 語法不僅可以對目錄進行剪切操作,對文件和壓縮包等都可執(zhí)行剪切操作。另外 mv 與 cp 的結(jié)果不同,mv 好像文件“搬家”,文件個數(shù)并未增加。而 cp 對文件進行復(fù)制,文件個數(shù)增加了。cp -r 目錄名稱 目錄拷貝的目標位置: 拷貝目錄(改),-r 代表遞歸拷貝 。注意:cp 命令不僅可以拷貝目錄還可以拷貝文件,壓縮包等,拷貝文件和壓縮包時不 用寫-r 遞歸。rm [-rf] 目錄: 刪除目錄(刪)。注意:rm 不僅可以刪除目錄,也可以刪除其他文件或壓縮包,為了增強大家的記憶, 無論刪除任何目錄或文件,都直接使用rm -rf目錄/文件/壓縮包。
4.3. 文件的操作命令(增刪改查)
touch 文件名稱: 文件的創(chuàng)建(增)。cat/more/less/tail 文件名稱:文件的查看(查) 。命令tail -f 文件可以對某個文件進行動態(tài)監(jiān)控,例如 tomcat 的日志文件, 會隨著程序的運行,日志會變化,可以使用tail -f catalina-2016-11-11.log監(jiān)控 文 件的變化 。vim 文件: 修改文件的內(nèi)容(改)。vim 編輯器是 Linux 中的強大組件,是 vi 編輯器的加強版,vim 編輯器的命令和快捷方式有很多,但此處不一一闡述,大家也無需研究的很透徹,使用 vim 編輯修改文件的方式基本會使用就可以了。在實際開發(fā)中,使用 vim 編輯器主要作用就是修改配置文件,下面是一般步驟:vim 文件------>進入文件----->命令模式------>按i進入編輯模式----->編輯文件 ------->按Esc進入底行模式----->輸入:wq/q!(輸入 wq 代表寫入內(nèi)容并退出,即保存;輸入 q!代表強制退出不保存)。rm -rf 文件: 刪除文件(刪)。
4.4. 壓縮文件的操作命令
1)打包并壓縮文件:
Linux 中的打包文件一般是以.tar 結(jié)尾的,壓縮的命令一般是以.gz 結(jié)尾的。而一般情況下打包和壓縮是一起進行的,打包并壓縮后的文件的后綴名一般.tar.gz。命令:tar -zcvf 打包壓縮后的文件名 要打包壓縮的文件 ,其中:
z:調(diào)用 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:代表解壓
示例:
將 /test 下的 test.tar.gz 解壓到當前目錄下可以使用命令: tar -xvf test.tar.gz將 /test 下的 test.tar.gz 解壓到根目錄/usr 下: tar -xvf test.tar.gz -C /usr(- C 代表指定解壓的位置)
4.5. Linux 的權(quán)限命令
操作系統(tǒng)中每個文件都擁有特定的權(quán)限、所屬用戶和所屬組。權(quán)限是操作系統(tǒng)用來限制資源訪問的機制,在 Linux 中權(quán)限一般分為讀(readable)、寫(writable)和執(zhí)行(excutable),分為三組。分別對應(yīng)文件的屬主(owner),屬組(group)和其他用戶(other),通過這樣的機制來限制哪些用戶、哪些組可以對特定的文件進行什么樣的操作。
通過 ls -l 命令我們可以 查看某個目錄下的文件或目錄的權(quán)限
示例:在隨意某個目錄下ls -l

第一列的內(nèi)容的信息解釋如下:

下面將詳細講解文件的類型、Linux 中權(quán)限以及文件有所有者、所在組、其它組具體是什么?
文件的類型:
d:代表目錄 -:代表文件 l:代表軟鏈接(可以認為是 window 中的快捷方式)
Linux 中權(quán)限分為以下幾種:
r:代表權(quán)限是可讀,r 也可以用數(shù)字 4 表示 w:代表權(quán)限是可寫,w 也可以用數(shù)字 2 表示 x:代表權(quán)限是可執(zhí)行,x 也可以用數(shù)字 1 表示
文件和目錄權(quán)限的區(qū)別:
對文件和目錄而言,讀寫執(zhí)行表示不同的意義。
對于文件:
| 權(quán)限名稱 | 可執(zhí)行操作 |
|---|---|
| r | 可以使用 cat 查看文件的內(nèi)容 |
| w | 可以修改文件的內(nèi)容 |
| x | 可以將其運行為二進制文件 |
對于目錄:
| 權(quán)限名稱 | 可執(zhí)行操作 |
|---|---|
| r | 可以查看目錄下列表 |
| w | 可以創(chuàng)建和刪除目錄下文件 |
| x | 可以使用 cd 進入目錄 |
需要注意的是:超級用戶可以無視普通用戶的權(quán)限,即使文件目錄權(quán)限是 000,依舊可以訪問。
在 linux 中的每個用戶必須屬于一個組,不能獨立于組外。在 linux 中每個文件有所有者、所在組、其它組的概念。
所有者(u) :一般為文件的創(chuàng)建者,誰創(chuàng)建了該文件,就天然的成為該文件的所有者,用 ls ‐ahl命令可以看到文件的所有者 也可以使用 chown 用戶名 文件名來修改文件的所有者 。文件所在組(g) :當某個用戶創(chuàng)建了一個文件后,這個文件的所在組就是該用戶所在的組用 ls ‐ahl命令可以看到文件的所有組也可以使用 chgrp 組名 文件名來修改文件所在的組。其它組(o) :除開文件的所有者和所在組的用戶外,系統(tǒng)的其它用戶都是文件的其它組。
我們再來看看如何修改文件/目錄的權(quán)限。
修改文件/目錄的權(quán)限的命令:chmod
示例:修改/test 下的 aaa.txt 的權(quán)限為文件所有者有全部權(quán)限,文件所有者所在的組有讀寫權(quán)限,其他用戶只有讀的權(quán)限。
chmod u=rwx,g=rw,o=r aaa.txt 或者 chmod 764 aaa.txt

補充一個比較常用的東西:
假如我們裝了一個 zookeeper,我們每次開機到要求其自動啟動該怎么辦?
新建一個腳本 zookeeper 為新建的腳本 zookeeper 添加可執(zhí)行權(quán)限,命令是: chmod +x zookeeper把 zookeeper 這個腳本添加到開機啟動項里面,命令是: chkconfig --add zookeeper如果想看看是否添加成功,命令是: chkconfig --list
4.6. Linux 用戶管理
Linux 系統(tǒng)是一個多用戶多任務(wù)的分時操作系統(tǒng),任何一個要使用系統(tǒng)資源的用戶,都必須首先向系統(tǒng)管理員申請一個賬號,然后以這個賬號的身份進入系統(tǒng)。
用戶的賬號一方面可以幫助系統(tǒng)管理員對使用系統(tǒng)的用戶進行跟蹤,并控制他們對系統(tǒng)資源的訪問;另一方面也可以幫助用戶組織文件,并為用戶提供安全性保護。
Linux 用戶管理相關(guān)命令:
useradd 選項 用戶名:添加用戶賬號userdel 選項 用戶名:刪除用戶帳號usermod 選項 用戶名:修改帳號passwd 用戶名:更改或創(chuàng)建用戶的密碼passwd -S 用戶名:顯示用戶賬號密碼信息passwd -d 用戶名: 清除用戶密碼
useradd 命令用于 Linux 中創(chuàng)建的新的系統(tǒng)用戶。useradd可用來建立用戶帳號。帳號建好之后,再用passwd設(shè)定帳號的密碼.而可用userdel刪除帳號。使用useradd指令所建立的帳號,實際上是保存在 /etc/passwd文本文件中。
passwd命令用于設(shè)置用戶的認證信息,包括用戶密碼、密碼過期時間等。系統(tǒng)管理者則能用它管理系統(tǒng)用戶的密碼。只有管理者可以指定用戶名稱,一般用戶只能變更自己的密碼。
4.7. Linux 系統(tǒng)用戶組的管理
每個用戶都有一個用戶組,系統(tǒng)可以對一個用戶組中的所有用戶進行集中管理。不同 Linux 系統(tǒng)對用戶組的規(guī)定有所不同,如 Linux 下的用戶屬于與它同名的用戶組,這個用戶組在創(chuàng)建用戶時同時創(chuàng)建。
用戶組的管理涉及用戶組的添加、刪除和修改。組的增加、刪除和修改實際上就是對/etc/group文件的更新。
Linux 系統(tǒng)用戶組的管理相關(guān)命令:
groupadd 選項 用戶組:增加一個新的用戶組groupdel 用戶組:要刪除一個已有的用戶組groupmod 選項 用戶組: 修改用戶組的屬性
4.8. 其他常用命令
pwd: 顯示當前所在位置sudo + 其他命令:以系統(tǒng)管理者的身份執(zhí)行指令,也就是說,經(jīng)由 sudo 所執(zhí)行的指令就好像是 root 親自執(zhí)行。grep 要搜索的字符串 要搜索的文件 --color: 搜索命令,--color 代表高亮顯示ps -ef/ps -aux: 這兩個命令都是查看當前系統(tǒng)正在運行進程,兩者的區(qū)別是展示格式不同。如果想要查看特定的進程可以使用這樣的格式:ps aux|grep redis(查看包括 redis 字符串的進程),也可使用pgrep redis -a。注意:如果直接用 ps((Process Status))命令,會顯示所有進程的狀態(tài),通常結(jié)合 grep 命令查看某進程的狀態(tài)。kill -9 進程的pid: 殺死進程(-9 表示強制終止。)先用 ps 查找進程,然后用 kill 殺掉網(wǎng)絡(luò)通信命令: 查看當前系統(tǒng)的網(wǎng)卡信息:ifconfig 查看與某臺機器的連接情況:ping 查看當前系統(tǒng)的端口使用:netstat -an net-tools 和 iproute2 : net-tools起源于 BSD 的 TCP/IP 工具箱,后來成為老版本 LinuxLinux 中配置網(wǎng)絡(luò)功能的工具。但自 2001 年起,Linux 社區(qū)已經(jīng)對其停止維護。同時,一些 Linux 發(fā)行版比如 Arch Linux 和 CentOS/RHEL 7 則已經(jīng)完全拋棄了 net-tools,只支持iproute2。linux ip 命令類似于 ifconfig,但功能更強大,旨在替代它。更多詳情請閱讀如何在 Linux 中使用 IP 命令和示例shutdown:shutdown -h now:指定現(xiàn)在立即關(guān)機;shutdown +5 "System will shutdown after 5 minutes":指定 5 分鐘后關(guān)機,同時送出警告信息給登入用戶。reboot:reboot: 重開機。reboot -w: 做個重開機的模擬(只有紀錄并不會真的重開機)。
7. 最后
之前在票圈發(fā)過很多自己平時做的飯,不過都沒有寫教程。昨天興致來了,簡單寫了個最簡易教程,當了回美食博主,哈哈哈?!(爭取這兩年之內(nèi)考個廚師證,大家來見證!)。

再來推薦一些原創(chuàng)專輯:
最后,文章有幫助可以點個「在看」或「分享」,都是支持,我都喜歡!
我是Guide哥,Java后端開發(fā),會一點前端知識,喜歡烹飪,自由的少年。一個三觀比主角還正的技術(shù)人。我們下期再見!
歡迎關(guān)注!?
