這里記錄一下我的 centos 學習過程,相當于自己記個筆記,同時分享出來,如果有同學剛好有需要而這個文章幫助到了你的話,在下也會十分開心。
文章最后推介了幾個免費視頻,B 站和慕課上的免費學習視頻挺多,而且有些質量還是不錯的。
1. CentOS 中的文件管理
1.1 CentOS 中根目錄下的各子目錄
當 cd / 進入到根目錄,ls 可以看到一大堆子目錄,如下圖:

這些文件是有顏色的:
- 藍色 表示文件夾;
- 灰色 表示普通文件;
- 綠色 表示可執行文件;
- 紅色 表示壓縮文件;
- 天藍色 表示鏈接文件(快捷方式);
常用目錄的作用如下:
- bin: 存放普通用戶可執行的指令,普通用戶也可以執行;
- dev : 設備目錄,所有的硬件設備及周邊均放置在這個設備目錄中;
- boot : 開機引導目錄,包括 linux 內核文件與開機所需要的文件;
- home: 這里主要存放你的個人數據,具體每個用戶的設置文件,用戶的桌面文件夾,還有用戶的數據都放在這里。每個用戶都有自己的用戶目錄,位置為:/home/用戶名。當然,root 用戶除外;
- usr: 應用程序放置目錄;
- lib: 開機時常用的動態鏈接庫,bin 及 sbin 指令也會調用對應的 lib 庫;
- tmp: 臨時文件存放目錄 ;
- etc: 各種配置文件目錄,大部分配置屬性均存放在這里;
其他更詳細的目錄作用參考 <CentOS根目錄下各目錄介紹 - 知乎>
1.2 目錄相關命令
一些常用的命令見下:
作用命令切換目錄cd顯示當前目錄完整路徑pwd查看目錄下的信息(包括隱藏文件)ls(ls -a)列出目錄下的文件和詳細信息ls-l (ll)創建目錄mkdir創建文件touch復制文件(文件夾)cp(cp -r)移動/重命名文件夾和目錄mv刪除文件(目錄)rm(rm -rf)刪除空文件夾rmdir查找文件find獲取幫助man / info
還有幾個常用的快捷鍵:
作用快捷鍵清空至行首Ctrl + U清空至行尾Ctrl + K清屏Ctrl + L終止執行的命令Ctrl + C
值得一提的是,這些命令在其他系統也可以使用。
1.3 tree 命令查看目錄樹
我們可以使用 tree 命令方便地查看目錄樹,但是系統本身卻并沒有安裝 tree 命令,所以我們要首先安裝一下 sudo yum -y install tree,然后我們就可以快樂使用了:

image-20200304133618996
2. vim 編輯器使用方法
vim 編輯器是 CentOS 系統中使用頻率比較高的編輯器,掌握基本使用方法對以后的工作有很大幫助。
通過 vim <文件名> 的方式可以編輯某文檔,如果文檔名不存在,那么會新建一個文檔來進行編輯。

image-20200301142523562
vim 共分為三種模式,分別是命令模式(Command mode),輸入模式(Insert mode)和底線命令模式(Last line mode)。
2.1 命令模式
啟動 vim 后就進入了命令模式,此狀態下敲擊鍵盤動作會被認為是命令,而非輸入字符。常用的幾個命令:
- i 切換到輸入模式,以輸入字符;
- : 切換到底線命令模式,以在最底一行輸入命令;
- a 切換到輸入文字模式;
命令模式只有一些最基本的命令,要依靠底線命令模式輸入更多命令。
2.2 輸入模式
在命令模式下按下 i 就進入了輸入模式。在輸入模式中,可以使用以下按鍵:
功能命令向上翻頁PageDown / Ctrl + F向下翻頁PageUp / Ctrl + B跳轉到文件首行1G / gg跳轉到末尾行G跳轉到第 # 行#G行號顯示:set nu行號顯示取消:set nonu插入d / Del刪除當前行ddfuzhiyy將緩沖區中的內容粘貼到光標位置處之后p
還有一些其他命令,比如刪除從光標處開始的 # 行內容 #dd,復制從光標處開始的 # 行內容 #yy 等,可以看文檔 <Linux vi/vim | 菜鳥教程> 一文。
2.3 底線命令模式
在命令模式下按下:(英文冒號)就進入了底線命令模式。
底線命令模式可以輸入單個或多個字符的命令,可用的命令非常多。
在底線命令模式中,基本的命令有(已經省略了冒號):
- :q 退出程序;
- :q! 放棄對文件內容的修改并退出;
- :w 保存文件;
- :w /root/xx 另存為;
- :wq 保存文件并退出;
2.4 查看文件內容
一些常見查看文件內容的命令:
功能命令瀏覽文件全部內容more / less查看文件內容(顯示行號)cat (cat -n)在文本文件中查找字符串(顯示行號)grep (grep <關鍵字> <要查找的文件> -n)
2.5 管道符
管道符 將一個命令的執行結果作為另一個命令的輸入來執行,格式 cmd1 | cmd2 ... | cmdn
比如,將 /etc 目錄中的文件名以 pass 開頭的文件列舉出來 ls /etc | grep pass*
再比如,查看 /etc 目錄下的內容,并使用 less 的形式瀏覽 ls /etc | less
2.6 重定向
功能命令輸出重定向,已有原來的文件則替換>輸出重定向,如果原來的文件存在則追加在原來的內容之前>>suiru<cuiwu2>輸出重定向與錯誤重定向同時實現&>
比如,將 ls / 命令執行的結果輸出到 2.txt 中 ls / > 2.txt
3. 進程管理
2.1 進程管理
進程: 是正在執行的一個程序或命令,每一個進程都是一個運行的實體,都有自己的地址空間,并占用一定的系統資源。
進程管理最重要的就是 ps 命令:
- ps aux ,查看系統中所有進程,使用 BSD 操作系統格式;
- ps -le ,查看系統中所有進程,使用 Linux 標準命令格式;
ps 命令輸出大約如下圖所示:

輸出的格式含義:
- USER:該進程由哪個用戶產生的;
- PID:進程的 ID;
- %CPU:進程占用 CPU 資源的百分比;
- %MEM:進程占用物理內存的百分比;
- VSZ:進程占用虛擬內存的大小,單位 KB;
- RSS:進程占用實際物理內存的大小,單位 KB;
- TTY:進程在哪個終端運行的,tty1-tty7 代表本地控制臺終端,tty1-tty6 是本地的字符界面終端,tty7 是圖形終端,pts/0-255 代表虛擬終端,如果是 ? 則代表是系統進程;
- STAT:進程狀態,R-運行,S-睡眠,T-停止,s-包含子進程,+-位于后臺;
- START:進程啟動時間;
- TIME:進程占用 CPU 的運算時間,注意不是系統時間;
- COMMAND,產生此進程的命令名;
還有個命令 pstree,顯示進程樹:

top 命令可以查看系統健康狀態,和 windows 系統中的系統管理器類似。

top 命令的交互模式中可以執行下面命令:
- ?/h :顯示交互模式的幫助;
- P :以 CPU 使用率排序,默認就是此項;
- M:以內存的使用率排序;
- N :以 PID 排序;
- q :退出 top;
load average 后面的三個數字的意思,分別為系統在之前 1 分鐘,5 分鐘,15分鐘的平均負載。一般認為小于 1 時,負載較小。如果大于 1,系統已經超出負荷。如果是多核 CPU,那么這個數字應該不大于你的 CPU 核心數,比如雙核 CPU 時應該不大于 2。
Tasks 后面的 zombie,意思為僵尸進程,一般是進程無法正常運行,也沒有正常退出卡住了,也有可能這個進程正在終止過程中,如果稍微等待一下還有,那么就需要手工檢查一下。
%CPU(s) 的 id 是主要需要看的,意為空閑 CPU 的百分比,如果低于 20,那么系統的狀態就比較卡了。
3.2 殺死進程
殺死進程主要有下面幾個命令:
功能命令殺死某個進程kill按照進程名殺死進程killall按照進程名殺死進程,加 -t 可以按照終端號提出用戶pkill
殺死進程時,可以跟信號,信號很多,常用信號:
信號代號信號名稱說明1SIGHUP讓進程立即關閉,然后重新讀取配置文件之后重啟,平滑重啟2SIGINT程序終止信號,用于終止前臺進程,相當于 ctrl + c 快捷鍵9SIGKILL強制終止,用來立即結束程序的運行,本信號不能被阻塞、處理和忽略15SIGTERM正常結束的信號,kill 命令默認就是這個信號,有時候進程已經發生問題,正常無法終止,此時會使用 -9 信號
所以常用殺死進程的命令:正常殺死 kill -1 2235 或者強制殺死 kill -9 2235
3.3 修改進程優先級
我們可以 ps -le | more 來查看進程優先級:

image-20200303103127195
PRI 代表 Priority , NI 代表 Nice,這兩個值都是優先級,數字越小代表該進程優先級越高。用戶只能修改 NI,不能直接修改 PRI,但系統最終取 PRI + NI 的值。NI 值的范圍是 -20 到 19,普通用戶調整 NI 值的范圍是 0-19,而且只能調整自己的進程,root 用戶才能設定進程 NI 值為負值。
可以使用 nice 命令來修改優先級,nice <選項> 命令,nice 命令可以給新執行的命令直接賦予 NI 值,但是不能修改已經存在進程的 NI 值。選項 -n 值 給命令賦予 NI 值。
比如修改 Apache 的進程優先級 nice -n -5 service httpd start
如果要修改已存在的進程的優先級,需要使用 renice 命令,renice <優先級> PDID,PID 為某一個進程的 ID。
比如 renice -10 2125 修改 ID 2125 的進程 NI 值為 -10。
4. 工作管理
- 當前的登錄終端,只能管理當前終端的工作,而不能管理其他登錄終端的工作;
- 放入后臺的命令必須可以持續運行一段時間,這樣我們才能撲捉和操作這個工作;
- 放入后臺執行的命令不能和前臺用戶有交互或需要前臺輸入,否則放入后臺只能暫停,而不能執行;
把進程放入后臺有兩個主要命令:
- <命令> & 把命令放入后臺,并在后臺執行
- <命令> 執行后按下 ctrl + z 快捷鍵,放在后臺暫停
查看正在后臺的工作,可以使用 jobs [-l] 命令,-l 是顯示工作的 PID。

image-20200303110244268
+ 代表最近一個放入后臺的工作,也是工作恢復時,默認恢復的工作,- 代表倒數第二個放入后臺的工作。
恢復到前臺:
- fg %工作號 將后臺暫停的工作恢復到前臺執行,這里的 % 可以省略,注意工作號和 PID 的區別;
- bg %工作號 將后臺暫停的工作恢復到后臺執行,后臺恢復執行的命令,是不能和前臺有交互的,否則不能恢復到后臺執行;
后臺命令脫離登陸終端執行的方法:
- 第一種方法是把需要后臺執行的命令加入 /etc/rc.local 文件;
- 第二種方法是使用系統定時任務,讓系統在指定的時間執行某個后臺命令;
- 第三種方法是使用 nohup 命令;
nohup 命令的使用方法 nohup <命令> &
5. SSH 操作
Secure Shell(SSH)是建立在應用層基礎上的安全網絡協議,是專為遠程登錄會話和其他網絡服務提供安全性的協議,可有效彌補網絡中的漏洞。通過 SSH,可以把所有傳輸的數據進行加密,也能夠防止 DNS 欺騙和 IP 欺騙。還有一個額外的好處就是傳輸的數據是經過壓縮的,所以可以加快傳輸的速度,已經成為Linux系統的標準配置。
5.1 SSH 登陸服務器
ssh -p port <username>@<hostname or IP address>
比如我這里購買的騰訊云服務器就可以使用 ssh root@<公網IP/域名> 連接,如果你設置過域名對 IP 的映射,那么 @ 后面寫你的域名也可以,比如我就可以 ssh root@sherlocked93 連接服務器。
然后就是輸入密碼,就可以進入 CentOS 系統了,但是每次登陸都需要密碼,挺蠢的也不安全,我們可以設置使用 SSH 密鑰的方式,密鑰登陸的方式可以百度一下。
連接系統之后,可以通過 Ctrl+D 或者 exit 命令退出遠程登錄。
連接上 CentOS 之后,命令行左側的命令提示符含義如下:

5.2 SSH 上傳/下載文件
SSH 可以通過 scp 命令來上傳文件,是 Linux 系統下基于 SSH 登陸進行安全的遠程文件拷貝命令,scp 是 secure copy 的簡寫,可以使用它上傳本地文件夾到遠程服務器,也可以從遠程服務器上下載文件夾到本地:
# 上傳文件夾到遠程服務器
scp -P port -r /local/dir username@servername:/remote/dir
# scp -p 2333 -r /test/a [email protected]:/var/b
# 從遠程服務器下載文件夾
scp -P port -r username@servername:/remote/dir/ /local/dir
# scp -p 2333 -r [email protected]:/var/b /test/a
-r 參數表示遞歸復制,即復制該目錄下面的文件和目錄,如果要上傳單個文件,只要把 -r 刪除。大寫的 P 表示的是端口,如果還是默認的 SSH 端口 22 沒有更改,則不需要 -P。
5.3 SSH 設置超時斷開
SSH 在使用時,經常會因為閑置時間過長而倍服務器自動斷開,然后又要重新連接,比較麻煩,可以設置一下防止經常被服務器踢出。
一種方法就是修改服務器設置,找到所在用戶的 .ssh 目錄,如 root 用戶該目錄在:/root/.ssh/,在該目錄創建 config 文件
vim /root/.ssh/config
加入下面一句:
ServerAliveInterval 60
然后 ESC 再 :wq 保存退出,重新開啟 root 用戶的shell,則再 SSH 遠程服務器的時候,不會因為長時間操作斷開。
還有種方法設置 $TMOUT 系統環境變量

vim /etc/profile 在最后一行加上:
export TMOUT=0
設置 TMOUT 參數為 0 的意思就是設置不超時,然后 ESC 再 :wq 保存退出,再 source /etc/profile 讓配置立即生效。