這里記錄一下我的 centos 學(xué)習(xí)過程,相當(dāng)于自己記個(gè)筆記,同時(shí)分享出來,如果有同學(xué)剛好有需要而這個(gè)文章幫助到了你的話,在下也會(huì)十分開心。
文章最后推介了幾個(gè)免費(fèi)視頻,B 站和慕課上的免費(fèi)學(xué)習(xí)視頻挺多,而且有些質(zhì)量還是不錯(cuò)的。
1. CentOS 中的文件管理
1.1 CentOS 中根目錄下的各子目錄
當(dāng) cd / 進(jìn)入到根目錄,ls 可以看到一大堆子目錄,如下圖:
這些文件是有顏色的:
- 藍(lán)色 表示文件夾;
- 灰色 表示普通文件;
- 綠色 表示可執(zhí)行文件;
- 紅色 表示壓縮文件;
- 天藍(lán)色 表示鏈接文件(快捷方式);
常用目錄的作用如下:
- bin: 存放普通用戶可執(zhí)行的指令,普通用戶也可以執(zhí)行;
- dev : 設(shè)備目錄,所有的硬件設(shè)備及周邊均放置在這個(gè)設(shè)備目錄中;
- boot : 開機(jī)引導(dǎo)目錄,包括 linux 內(nèi)核文件與開機(jī)所需要的文件;
- home: 這里主要存放你的個(gè)人數(shù)據(jù),具體每個(gè)用戶的設(shè)置文件,用戶的桌面文件夾,還有用戶的數(shù)據(jù)都放在這里。每個(gè)用戶都有自己的用戶目錄,位置為:/home/用戶名。當(dāng)然,root 用戶除外;
- usr: 應(yīng)用程序放置目錄;
- lib: 開機(jī)時(shí)常用的動(dòng)態(tài)鏈接庫,bin 及 sbin 指令也會(huì)調(diào)用對(duì)應(yīng)的 lib 庫;
- tmp: 臨時(shí)文件存放目錄 ;
- etc: 各種配置文件目錄,大部分配置屬性均存放在這里;
其他更詳細(xì)的目錄作用參考 <CentOS根目錄下各目錄介紹 - 知乎>
1.2 目錄相關(guān)命令
一些常用的命令見下:
作用命令切換目錄cd顯示當(dāng)前目錄完整路徑pwd查看目錄下的信息(包括隱藏文件)ls(ls -a)列出目錄下的文件和詳細(xì)信息ls-l (ll)創(chuàng)建目錄mkdir創(chuàng)建文件touch復(fù)制文件(文件夾)cp(cp -r)移動(dòng)/重命名文件夾和目錄mv刪除文件(目錄)rm(rm -rf)刪除空文件夾rmdir查找文件find獲取幫助man / info
還有幾個(gè)常用的快捷鍵:
作用快捷鍵清空至行首Ctrl + U清空至行尾Ctrl + K清屏Ctrl + L終止執(zhí)行的命令Ctrl + C
值得一提的是,這些命令在其他系統(tǒng)也可以使用。
1.3 tree 命令查看目錄樹
我們可以使用 tree 命令方便地查看目錄樹,但是系統(tǒng)本身卻并沒有安裝 tree 命令,所以我們要首先安裝一下 sudo yum -y install tree,然后我們就可以快樂使用了:
image-20200304133618996
2. vim 編輯器使用方法
vim 編輯器是 CentOS 系統(tǒng)中使用頻率比較高的編輯器,掌握基本使用方法對(duì)以后的工作有很大幫助。
通過 vim <文件名> 的方式可以編輯某文檔,如果文檔名不存在,那么會(huì)新建一個(gè)文檔來進(jìn)行編輯。
image-20200301142523562
vim 共分為三種模式,分別是命令模式(Command mode),輸入模式(Insert mode)和底線命令模式(Last line mode)。
2.1 命令模式
啟動(dòng) vim 后就進(jìn)入了命令模式,此狀態(tài)下敲擊鍵盤動(dòng)作會(huì)被認(rèn)為是命令,而非輸入字符。常用的幾個(gè)命令:
- i 切換到輸入模式,以輸入字符;
- : 切換到底線命令模式,以在最底一行輸入命令;
- a 切換到輸入文字模式;
命令模式只有一些最基本的命令,要依靠底線命令模式輸入更多命令。
2.2 輸入模式
在命令模式下按下 i 就進(jìn)入了輸入模式。在輸入模式中,可以使用以下按鍵:
功能命令向上翻頁P(yáng)ageDown / Ctrl + F向下翻頁P(yáng)ageUp / Ctrl + B跳轉(zhuǎn)到文件首行1G / gg跳轉(zhuǎn)到末尾行G跳轉(zhuǎn)到第 # 行#G行號(hào)顯示:set nu行號(hào)顯示取消:set nonu插入d / Del刪除當(dāng)前行ddfuzhiyy將緩沖區(qū)中的內(nèi)容粘貼到光標(biāo)位置處之后p
還有一些其他命令,比如刪除從光標(biāo)處開始的 # 行內(nèi)容 #dd,復(fù)制從光標(biāo)處開始的 # 行內(nèi)容 #yy 等,可以看文檔 <Linux vi/vim | 菜鳥教程> 一文。
2.3 底線命令模式
在命令模式下按下:(英文冒號(hào))就進(jìn)入了底線命令模式。
底線命令模式可以輸入單個(gè)或多個(gè)字符的命令,可用的命令非常多。
在底線命令模式中,基本的命令有(已經(jīng)省略了冒號(hào)):
- :q 退出程序;
- :q! 放棄對(duì)文件內(nèi)容的修改并退出;
- :w 保存文件;
- :w /root/xx 另存為;
- :wq 保存文件并退出;
2.4 查看文件內(nèi)容
一些常見查看文件內(nèi)容的命令:
功能命令瀏覽文件全部?jī)?nèi)容more / less查看文件內(nèi)容(顯示行號(hào))cat (cat -n)在文本文件中查找字符串(顯示行號(hào))grep (grep <關(guān)鍵字> <要查找的文件> -n)
2.5 管道符
管道符 將一個(gè)命令的執(zhí)行結(jié)果作為另一個(gè)命令的輸入來執(zhí)行,格式 cmd1 | cmd2 ... | cmdn
比如,將 /etc 目錄中的文件名以 pass 開頭的文件列舉出來 ls /etc | grep pass*
再比如,查看 /etc 目錄下的內(nèi)容,并使用 less 的形式瀏覽 ls /etc | less
2.6 重定向
功能命令輸出重定向,已有原來的文件則替換>輸出重定向,如果原來的文件存在則追加在原來的內(nèi)容之前>>suiru<cuiwu2>輸出重定向與錯(cuò)誤重定向同時(shí)實(shí)現(xiàn)&>
比如,將 ls / 命令執(zhí)行的結(jié)果輸出到 2.txt 中 ls / > 2.txt
3. 進(jìn)程管理
2.1 進(jìn)程管理
進(jìn)程: 是正在執(zhí)行的一個(gè)程序或命令,每一個(gè)進(jìn)程都是一個(gè)運(yùn)行的實(shí)體,都有自己的地址空間,并占用一定的系統(tǒng)資源。
進(jìn)程管理最重要的就是 ps 命令:
- ps aux ,查看系統(tǒng)中所有進(jìn)程,使用 BSD 操作系統(tǒng)格式;
- ps -le ,查看系統(tǒng)中所有進(jìn)程,使用 Linux 標(biāo)準(zhǔn)命令格式;
ps 命令輸出大約如下圖所示:
輸出的格式含義:
- USER:該進(jìn)程由哪個(gè)用戶產(chǎn)生的;
- PID:進(jìn)程的 ID;
- %CPU:進(jìn)程占用 CPU 資源的百分比;
- %MEM:進(jìn)程占用物理內(nèi)存的百分比;
- VSZ:進(jìn)程占用虛擬內(nèi)存的大小,單位 KB;
- RSS:進(jìn)程占用實(shí)際物理內(nèi)存的大小,單位 KB;
- TTY:進(jìn)程在哪個(gè)終端運(yùn)行的,tty1-tty7 代表本地控制臺(tái)終端,tty1-tty6 是本地的字符界面終端,tty7 是圖形終端,pts/0-255 代表虛擬終端,如果是 ? 則代表是系統(tǒng)進(jìn)程;
- STAT:進(jìn)程狀態(tài),R-運(yùn)行,S-睡眠,T-停止,s-包含子進(jìn)程,+-位于后臺(tái);
- START:進(jìn)程啟動(dòng)時(shí)間;
- TIME:進(jìn)程占用 CPU 的運(yùn)算時(shí)間,注意不是系統(tǒng)時(shí)間;
- COMMAND,產(chǎn)生此進(jìn)程的命令名;
還有個(gè)命令 pstree,顯示進(jìn)程樹:
top 命令可以查看系統(tǒng)健康狀態(tài),和 windows 系統(tǒng)中的系統(tǒng)管理器類似。
top 命令的交互模式中可以執(zhí)行下面命令:
- ?/h :顯示交互模式的幫助;
- P :以 CPU 使用率排序,默認(rèn)就是此項(xiàng);
- M:以內(nèi)存的使用率排序;
- N :以 PID 排序;
- q :退出 top;
load average 后面的三個(gè)數(shù)字的意思,分別為系統(tǒng)在之前 1 分鐘,5 分鐘,15分鐘的平均負(fù)載。一般認(rèn)為小于 1 時(shí),負(fù)載較小。如果大于 1,系統(tǒng)已經(jīng)超出負(fù)荷。如果是多核 CPU,那么這個(gè)數(shù)字應(yīng)該不大于你的 CPU 核心數(shù),比如雙核 CPU 時(shí)應(yīng)該不大于 2。
Tasks 后面的 zombie,意思為僵尸進(jìn)程,一般是進(jìn)程無法正常運(yùn)行,也沒有正常退出卡住了,也有可能這個(gè)進(jìn)程正在終止過程中,如果稍微等待一下還有,那么就需要手工檢查一下。
%CPU(s) 的 id 是主要需要看的,意為空閑 CPU 的百分比,如果低于 20,那么系統(tǒng)的狀態(tài)就比較卡了。
3.2 殺死進(jìn)程
殺死進(jìn)程主要有下面幾個(gè)命令:
功能命令殺死某個(gè)進(jìn)程kill按照進(jìn)程名殺死進(jìn)程killall按照進(jìn)程名殺死進(jìn)程,加 -t 可以按照終端號(hào)提出用戶pkill
殺死進(jìn)程時(shí),可以跟信號(hào),信號(hào)很多,常用信號(hào):
信號(hào)代號(hào)信號(hào)名稱說明1SIGHUP讓進(jìn)程立即關(guān)閉,然后重新讀取配置文件之后重啟,平滑重啟2SIGINT程序終止信號(hào),用于終止前臺(tái)進(jìn)程,相當(dāng)于 ctrl + c 快捷鍵9SIGKILL強(qiáng)制終止,用來立即結(jié)束程序的運(yùn)行,本信號(hào)不能被阻塞、處理和忽略15SIGTERM正常結(jié)束的信號(hào),kill 命令默認(rèn)就是這個(gè)信號(hào),有時(shí)候進(jìn)程已經(jīng)發(fā)生問題,正常無法終止,此時(shí)會(huì)使用 -9 信號(hào)
所以常用殺死進(jìn)程的命令:正常殺死 kill -1 2235 或者強(qiáng)制殺死 kill -9 2235
3.3 修改進(jìn)程優(yōu)先級(jí)
我們可以 ps -le | more 來查看進(jìn)程優(yōu)先級(jí):
image-20200303103127195
PRI 代表 Priority , NI 代表 Nice,這兩個(gè)值都是優(yōu)先級(jí),數(shù)字越小代表該進(jìn)程優(yōu)先級(jí)越高。用戶只能修改 NI,不能直接修改 PRI,但系統(tǒng)最終取 PRI + NI 的值。NI 值的范圍是 -20 到 19,普通用戶調(diào)整 NI 值的范圍是 0-19,而且只能調(diào)整自己的進(jìn)程,root 用戶才能設(shè)定進(jìn)程 NI 值為負(fù)值。
可以使用 nice 命令來修改優(yōu)先級(jí),nice <選項(xiàng)> 命令,nice 命令可以給新執(zhí)行的命令直接賦予 NI 值,但是不能修改已經(jīng)存在進(jìn)程的 NI 值。選項(xiàng) -n 值 給命令賦予 NI 值。
比如修改 Apache 的進(jìn)程優(yōu)先級(jí) nice -n -5 service httpd start
如果要修改已存在的進(jìn)程的優(yōu)先級(jí),需要使用 renice 命令,renice <優(yōu)先級(jí)> PDID,PID 為某一個(gè)進(jìn)程的 ID。
比如 renice -10 2125 修改 ID 2125 的進(jìn)程 NI 值為 -10。
4. 工作管理
- 當(dāng)前的登錄終端,只能管理當(dāng)前終端的工作,而不能管理其他登錄終端的工作;
- 放入后臺(tái)的命令必須可以持續(xù)運(yùn)行一段時(shí)間,這樣我們才能撲捉和操作這個(gè)工作;
- 放入后臺(tái)執(zhí)行的命令不能和前臺(tái)用戶有交互或需要前臺(tái)輸入,否則放入后臺(tái)只能暫停,而不能執(zhí)行;
把進(jìn)程放入后臺(tái)有兩個(gè)主要命令:
- <命令> & 把命令放入后臺(tái),并在后臺(tái)執(zhí)行
- <命令> 執(zhí)行后按下 ctrl + z 快捷鍵,放在后臺(tái)暫停
查看正在后臺(tái)的工作,可以使用 jobs [-l] 命令,-l 是顯示工作的 PID。
image-20200303110244268
+ 代表最近一個(gè)放入后臺(tái)的工作,也是工作恢復(fù)時(shí),默認(rèn)恢復(fù)的工作,- 代表倒數(shù)第二個(gè)放入后臺(tái)的工作。
恢復(fù)到前臺(tái):
- fg %工作號(hào) 將后臺(tái)暫停的工作恢復(fù)到前臺(tái)執(zhí)行,這里的 % 可以省略,注意工作號(hào)和 PID 的區(qū)別;
- bg %工作號(hào) 將后臺(tái)暫停的工作恢復(fù)到后臺(tái)執(zhí)行,后臺(tái)恢復(fù)執(zhí)行的命令,是不能和前臺(tái)有交互的,否則不能恢復(fù)到后臺(tái)執(zhí)行;
后臺(tái)命令脫離登陸終端執(zhí)行的方法:
- 第一種方法是把需要后臺(tái)執(zhí)行的命令加入 /etc/rc.local 文件;
- 第二種方法是使用系統(tǒng)定時(shí)任務(wù),讓系統(tǒng)在指定的時(shí)間執(zhí)行某個(gè)后臺(tái)命令;
- 第三種方法是使用 nohup 命令;
nohup 命令的使用方法 nohup <命令> &
5. SSH 操作
Secure Shell(SSH)是建立在應(yīng)用層基礎(chǔ)上的安全網(wǎng)絡(luò)協(xié)議,是專為遠(yuǎn)程登錄會(huì)話和其他網(wǎng)絡(luò)服務(wù)提供安全性的協(xié)議,可有效彌補(bǔ)網(wǎng)絡(luò)中的漏洞。通過 SSH,可以把所有傳輸?shù)臄?shù)據(jù)進(jìn)行加密,也能夠防止 DNS 欺騙和 IP 欺騙。還有一個(gè)額外的好處就是傳輸?shù)臄?shù)據(jù)是經(jīng)過壓縮的,所以可以加快傳輸?shù)乃俣龋呀?jīng)成為L(zhǎng)inux系統(tǒng)的標(biāo)準(zhǔn)配置。
5.1 SSH 登陸服務(wù)器
ssh -p port <username>@<hostname or IP address>
比如我這里購買的騰訊云服務(wù)器就可以使用 ssh root@<公網(wǎng)IP/域名> 連接,如果你設(shè)置過域名對(duì) IP 的映射,那么 @ 后面寫你的域名也可以,比如我就可以 ssh root@sherlocked93 連接服務(wù)器。
然后就是輸入密碼,就可以進(jìn)入 CentOS 系統(tǒng)了,但是每次登陸都需要密碼,挺蠢的也不安全,我們可以設(shè)置使用 SSH 密鑰的方式,密鑰登陸的方式可以百度一下。
連接系統(tǒng)之后,可以通過 Ctrl+D 或者 exit 命令退出遠(yuǎn)程登錄。
連接上 CentOS 之后,命令行左側(cè)的命令提示符含義如下:
5.2 SSH 上傳/下載文件
SSH 可以通過 scp 命令來上傳文件,是 Linux 系統(tǒng)下基于 SSH 登陸進(jìn)行安全的遠(yuǎn)程文件拷貝命令,scp 是 secure copy 的簡(jiǎn)寫,可以使用它上傳本地文件夾到遠(yuǎn)程服務(wù)器,也可以從遠(yuǎn)程服務(wù)器上下載文件夾到本地:
# 上傳文件夾到遠(yuǎn)程服務(wù)器
scp -P port -r /local/dir username@servername:/remote/dir
# scp -p 2333 -r /test/a root@192.168.0.101:/var/b
# 從遠(yuǎn)程服務(wù)器下載文件夾
scp -P port -r username@servername:/remote/dir/ /local/dir
# scp -p 2333 -r root@192.168.0.101:/var/b /test/a
-r 參數(shù)表示遞歸復(fù)制,即復(fù)制該目錄下面的文件和目錄,如果要上傳單個(gè)文件,只要把 -r 刪除。大寫的 P 表示的是端口,如果還是默認(rèn)的 SSH 端口 22 沒有更改,則不需要 -P。
5.3 SSH 設(shè)置超時(shí)斷開
SSH 在使用時(shí),經(jīng)常會(huì)因?yàn)殚e置時(shí)間過長(zhǎng)而倍服務(wù)器自動(dòng)斷開,然后又要重新連接,比較麻煩,可以設(shè)置一下防止經(jīng)常被服務(wù)器踢出。
一種方法就是修改服務(wù)器設(shè)置,找到所在用戶的 .ssh 目錄,如 root 用戶該目錄在:/root/.ssh/,在該目錄創(chuàng)建 config 文件
vim /root/.ssh/config
加入下面一句:
ServerAliveInterval 60
然后 ESC 再 :wq 保存退出,重新開啟 root 用戶的shell,則再 SSH 遠(yuǎn)程服務(wù)器的時(shí)候,不會(huì)因?yàn)殚L(zhǎng)時(shí)間操作斷開。
還有種方法設(shè)置 $TMOUT 系統(tǒng)環(huán)境變量
vim /etc/profile 在最后一行加上:
export TMOUT=0
設(shè)置 TMOUT 參數(shù)為 0 的意思就是設(shè)置不超時(shí),然后 ESC 再 :wq 保存退出,再 source /etc/profile 讓配置立即生效。