2021韓順平圖解Linux課程(全面升級)實操篇


第5章 Linux 實操篇-遠程登錄到 Linux 服務器

  • 遠程登錄 Linux-Xshell6
  • 遠程上傳下載文件-Xftp6

第6章 Linux 實操篇-Vi 和 Vim 編輯器

  • Vi 和 Vim 常用的三種模式
  • 正常模式/一般模式:用 Vim 打開一個文件就直接進入正常模式(默認模式)。在這個模式中,可以上下左右移動光標、刪除整行、復制、粘貼等等。
  • 插入模式/編輯模式:在正常模式下,鍵入 i,I,o,O,a,A,r,R 任何一個字母之后才會進入插入模式。
  • 命令行模式/末行模式:在插入模式下,鍵入 Esc 進入正常模式,再輸入 : 進入命令行模式。在此模式下,可以查詢、替換、保存、退出、顯示行號等等。
  • Vi 和 Vim 的快捷鍵
  • 拷貝當前行:yy,拷貝當前行向下的5行:5yy,粘貼:p。
  • 刪除當前行:dd,刪除當前行向下的6行:5dd。
  • 在文件中查找某個單詞:命令行模式下輸入 /關鍵詞,回車查找,再鍵入 n 查找下一個。
  • 設置文件的行號:set nu;取消文件的行號:set nonu。
  • 一般模式下,使用快捷鍵 G 到該文件的最末行,使用 gg 到文件的最首行。
  • 一般模式下,使用快捷鍵 u 撤銷上次執行的操作。
  • 一般模式下,將光標移動到指定行,鍵入行號 G,如20G。、

第7章 Linux 實操篇-開機、重啟和用戶登錄注銷

  • 開機、重啟命令

不管是重啟系統還是關閉系統,首先要運行 sync 命令,把內存中的數據寫到磁盤中。

  • shutdown -h now:立即進行關機
  • shutdown -h 1:1分鍾后自動關機(和 shutdown 命令效果一樣)
  • shutdown -r now:現在重新啟動計算機
  • halt:關機(上面的 -h 就是指 halt)
  • reboot:現在重新啟動計算機
  • sync:把內存的數據同步到磁盤
  • 用戶登錄和注銷
  • 登錄時盡量少用 root 賬號登錄。為避免操作失誤,可以先用普通用戶登錄,登錄后用“su - 用戶名”命令來切換成系統管理員身份。
  • 在提示符下輸入 logout 即可注銷用戶。
  • logout 注銷指令在圖形運行級別無效,在運行級別3(非圖形界面終端)下有效。

第8章 Linux 實操篇-用戶管理

  • 基本介紹

Linux 系統是一個多用戶多任務的操作系統,任何一個要使用系統資源的用戶,都必須首先向系統管理員申請一個賬號,然后以這個賬號的身份進入系統。

  • 添加用戶
  • 使用命令“useradd 用戶名”創建用戶成功后,會自動創建和用戶同名的家目錄。
  • 使用命令“useradd -d 指定目錄 用戶名”,給新創建的用戶指定家目錄。
  • 指定/修改密碼
  • passwd 用戶名
  • 刪除用戶
  • 刪除用戶,但保留家目錄:userdel 用戶名
  • 刪除用戶以及用戶家目錄:userdel -r 用戶名
  • 查詢用戶信息指令
  • id 用戶名
  • 當用戶不存在時,返回無此用戶。
  • 切換用戶
  • su - 切換后的用戶名
  • 從權限高的用戶切換到權限低的用戶,不需要輸入密碼,反之需要。
  • 當需要返回到原來的用戶時,使用 exit/logout 指令。
  • 查看當前登錄用戶

whoami/who am i

  • 用戶組

系統可以對有共性/權限的多個用戶進行統一的管理。

  • 新增組:groupadd 組名
  • 刪除組:groupdel 組名
  • 增加用戶時直接加上用戶組:useradd -g 用戶組 用戶名
  • 修改已有用戶的用戶組:usermod -g 用戶組 用戶名
  • 用戶和組相關文件
  • /etc/passwd 文件:用戶的配置文件,記錄用戶的各種信息。
    每行的含義:用戶名:口令:用戶標識號:用戶組標識號:注釋性描述:主目錄:登錄 Shell
    Shell 就是 Linux 命令的解釋器。Linux 命令經過 Shell 解釋翻譯后傳到 Linux 內核執行。
    在 /etc/passwd 當中,除了標准 Shell 是 /bin/bash 之外,還可以寫如 /sbin/nologin,/usr/bin/passwd 等。
  • 查看本機賬號個數:cat /etc/passwd | wc -l
  • 查找 root 用戶個數:cat /etc/passwd | grep :0
  • /etc/shadow 文件:口令的配置文件。
    每行的含義:登錄名:加密口令:最后一次修改的時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間:標志
  • /etc/group 文件:用戶組的配置文件,負責記錄 Linux 包含的組的信息。
    每一行的含義:組名:口令:組標識號:組內用戶列表

第9章 Linux 實操篇-實用指令

  • 指定運行級別

常用運行級別是3和5,也可以指定默認運行級別。如命令 init 3。

運行級別 描述
0 關機
1 單用戶【找回丟失密碼】
2 多用戶狀態沒有網絡服務
3 多用戶狀態有網絡服務
4 系統未使用保留給用戶
5 圖形界面
6 系統重啟
  • CentOS 7系統運行級別

CentOS 6及之前的版本中,系統運行級別通過 /etc/inittab 文件進行設置和控制,但在 CentOS 7中,對這個文件的設置將不會對系統運行級別產生影響,這也是 CentOS 7中變化比較大的一部分特性。

  • 運行級別對應關系
init level systemctl target
0 shutdown.target
1 emergency.target
2 rescure.target
3 multi-user.target
4
5 graphical.target
6 reboot.target

常用運行級別相關命令

  • systemctl get-default:獲取當前的運行級別;
  • systemctl set-default multi-user.target:將默認運行級別設置為 mulit-user;
  • systemctl isolate multi-user.target:不重啟系統的情況下,將運行級別切換至 mulit-user;
  • init 3
  • 找回 root 密碼

開機引導時,操作進入單用戶模式修改 root 密碼。

  • ls 指令
  • ls -alh :顯示包括隱藏的全部文件、列表形式、人性化形式。
  • ls -alh 目錄或文件
  • cd 指令
  • cd ~ :回到家目錄
  • cd ..:回到上一級目錄
  • mkdir 指令
  • mkdir 要創建的目錄:創建一個目錄
  • mkdir -p 要創建的多級目錄:創建多級目錄
  • rmdir 指令
  • rmdir 要刪除的空目錄:只能刪除空目錄
  • rm -rf 要刪除的目錄:遞歸、強制刪除非空的目錄
  • cp 指令
  • cp 源文件 復制后的文件
  • cp -r 源文件目錄 復制后的文件目錄:遞歸復制整個文件夾
  • mv 指令
  • mv 原文件名 修改后的文件名:重命名文件
  • mv 原文件或文件目錄 移動后的文件目錄:移動文件或整個文件夾
  • cat 指令
  • cat:只能瀏覽文件,而不能修改文件。
  • 為了瀏覽方便,一般會帶上管道命令“| more”。如cat -n 文件名 | more ,實現分頁瀏覽(-n 顯示行號)。
  • less 指令

less 用來分屏查看文件內容,它的功能與 more 指令類似,但是比 more 指令更加強大,支持各種顯示終端。less 指令在顯示文件內容時,並不是一次將整個文件加載之后才顯示,而是根據顯示需要加載內容,對於顯示大型文件具有較高的效率。

  • 命令:less 要查看的文件。
  • echo 指令
  • echo 內容:echo 輸出內容到控制台。
  • 使用 echo指令輸出環境變量,例如輸出當前的環境路徑:echo $PATH。
  • head 指令
  • head 文件名:查看文件前10行內容。
  • head -n 5 文件名:查看文件前5行內容,5可以是任意行數。
  • tail 指令
  • tail 文件名:查看文件后10行內容。
  • tail -n 5 文件名:查看文件后5行內容,5可以是任意行數。
  • tail -f 文件名:實時追蹤該文檔的所有更新,工作經常使用。
  • ln 指令

軟鏈接也叫符號鏈接,類似於 Windows 里的快捷方式,主要存放了鏈接其他文件的路徑。

  • ln -s 原文件或目錄 軟鏈接名:給原文件創建一個軟鏈接。
  • history 指令

查看已經執行過歷史命令,也可以執行歷史指令。

  • history:查看已經執行過歷史命令。
  • !歷史命令行數:執行歷史命令行數所對應的命令。
  • date 指令
  • date:顯示當前時間.
  • data+%Y:顯示當前年份。
  • data+%m:顯示當前月份。
  • data+%d:顯示當前是哪一天。
  • date "+%Y-%m-%d %H:%M:%S":顯示年月日時分秒。
  • date -s 字符串時間:設置系統時間。
  • cal 指令
  • cal:顯示本月日歷。
  • find 指令

find 指令將從指定目錄向下遞歸地遍歷其各個子目錄,將滿足條件的文件或者目錄顯示在終端。

  • find 搜索范圍路徑 -name 文件名:在搜索范圍內按文件名搜索。
  • find 搜索范圍路徑 -user 用戶名:在搜索范圍內按用戶名搜索。
  • find 搜索范圍路徑 -size +n:在搜索范圍內按文件大小搜索,+n 表示大於 n,-n 表示小於 n,n 表示等於 n,n 的單位可以有 k、M、G。
  • locate 指令

locate 指令可以快速定位文件路徑。locate 指令利用事先建立的系統中所有文件名稱及路徑的 locate 數據庫實現快速定位給定的文件。locate 指令無需遍歷整個文件系統,查詢速度較快。

  • 由於 locate 指令基於數據庫進行查詢,所以第一次運行前,必須使用 updatedb 指令創建 locate 數據庫。
  • locate 搜索文件名
  • grep 指令和 管道符號 |

grep 過濾查找,管道符號|,表示將前一個命令的處理結果輸出傳遞給后面的命令處理。

  • grep 查找的內容 源文件。
  • cat 文件名 | grep -ni 查找的內容:-n 表示顯示行號,-i 表示不區分大小寫。
  • gzip/gunzip 指令
  • gzip 要壓縮的文件:壓縮文件,只能將文件壓縮為*.gz 類型的文件。
  • gunzip *.gz:解壓縮文件命令。
  • 當使用gzip對文件進行壓縮后,不會保留原來的文件。
  • zip/unzip 指令
  • zip *.zip 要壓縮的文件:壓縮文件。
  • zip -r *.zip 要壓縮的目錄:壓縮目錄。
  • unzip *.zip:解壓縮文件。
  • unzip -d 解壓后文件的存放路徑 *.zip:指定解壓后文件的存放目錄。
  • tar 指令

tar指令是打包指令,最后打包后的文件是 *.tar.gz 格式的文件。

  • tar -zcvf *.tar.gz 打包的文件或者目錄:打包壓縮文件或者目錄。
  • tar -zxvf *.tar.gz:解壓 *.tar.gz 文件到當前目錄。
  • tar -zxvf *.tar.gz -C 解壓后文件的存放路徑:解壓 *.tar.gz 文件到指定目錄。

第10章 Linux 實操篇-組管理和權限管理

  • 用戶組的創建
  • groupadd 組名
  • 當某個用戶創建了一個文件后,默認這個文件的所在組就是該用戶所在的組。
  • 創建新用戶的同時,指定用戶所在的組:useradd -g 用戶所在組 用戶名。
  • 修改文件/目錄所在組
  • chgrp 修改后的組名 文件名:改變文件所在組。
  • chgrp -R 修改后的組名 目錄:改變目錄所在組,-R 表示使其目錄下所有子文件或目錄遞歸生效。
  • 修改文件/目錄所有者
  • chown 修改后的所有者名 文件名:改變文件所有者
  • chown -R 修改后的所有者名 目錄:改變目錄所有者,-R 表示使其目錄下所有子文件或目錄遞歸生效。
  • 修改用戶所在組
  • usermod -g 修改后的組名 用戶名:修改用戶所在組。
  • usermod -d 修改后的目錄 用戶名:修改用戶登錄的初始目錄。
  • 權限的基本介紹

例如 ls -alh 顯示的內容如下:
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc

  • 0位:表示文件類型。d:目錄,-:普通文件,l:鏈接,c:字符設備文件(鼠標、鍵盤),b:塊設備(硬盤)。
  • 1-3位:確定所有者(所有者,User)擁有的權限。-
  • 4-6位:確定所屬組(同用戶組,Group)擁有的權限。
  • 7-9位:確定其他用戶(Other)擁有的權限。
  • 1 文件:硬連接數或目錄:子目錄數
  • root:所有者名
  • root:在的組名
  • 1213:文件大小(字節),如果是文件夾,顯示4096字節
  • Feb 2 09:39:最后修改日期
  • abc:文件名或目錄
  • rwx 詳解

rwx 作用於文件

  • r(可讀,read):可以讀取,查看。
  • w(可寫,write): 可以修改,但是不可以刪除該文件,刪除一個文件的前提條件是對該文件所在的目錄有寫權限。
  • x(可執行,execute):可以被執行。

rwx 作用於目錄

  • r(可讀,read):可以讀取,使用ls查看目錄內容。
  • w(可寫,write): 可以在目錄內創建、刪除、重命名文件。
  • x(可執行,execute):可以進入該目錄,使用 cd 進入。
  • 修改文件/目錄的權限

第一種方式:+ 、-、= 變更權限

  • 規則:u(所有者)、g(所有組)、o(其它人)、a(所有人,u、g、o 的總和)
  • chmod u=rwx,g=rx,o=x 文件名或者目錄:所有者讀寫執行的權限,所在組讀執行權限,其它組執行權限。
  • chmod o+w 文件名或者目錄:其它組增加寫權限。
  • chmod a-x 文件名或者目錄:所有人去除執行權限。

第二種方式:通過數字變更權限

  • 規則:r=4、w=2、x=1,rwx=4+2+1=7
  • chmod u=rwx,g=rx,o=x 文件名或者目錄 相當於 chmod 751 文件名或者目錄

寫在前面

從這章開始,之后的內容大多是筆者沒接觸過的,特作詳細說明,為之記。

第11章 Linux 實操篇-定時任務調度

  • 任務調度

任務調度:系統在某個時間執行的特定的命令或程序。
分類:

  • 系統工作:有些重要的工作必須周而復始地執行。如病毒掃描等;
  • 個別用戶工作:個別用戶可能希望執行某些程序,比如對 mysql 數據庫的備份。
  • crond 任務調度

基本語法

  • crontab [選項]
  • 常用選項
選項 描述
-e 編輯 crontab 定時任務
-l 查詢 crontab 任務
-r 刪除當前用戶所有 crontab 任務

快速入門

  • 任務要求
    每一分鍾自動調用 ls -l /etc >> /tmp/to.txt
  • 操作步驟
    • 執行 crontab -e 命令
    • 接着輸入自動調度命令到調度文件(/etc/crontab),即 */1 * * * * ls –l /etc/ >> /tmp/to.txt
    • 保存退出調度文件

5個占位符說明

占位符 含義 范圍
第一個* 一小時中的第幾分鍾 0-59
第二個* 一天中的第幾小時 0-23
第三個* 一月中的第幾天 1-31
第四個* 一年中的第幾月 1-12
第五個* 一周中的星期幾 0-7(0和7都代表星期日)

特殊符號說明

特殊符號 含義
* 代表任何時間。比如第一個*就代表一小時中每分鍾都執行一次的意思。
, 代表不連續的時間。比如“0 8,12,16 * * *”命令代表每天的8點0分,12點0分,16點0分都執行一次命令。
- 代表連續的時間范圍。比如“0 5 * * 1-6”命令代表在周一到周六的凌晨5點0分執行命令。
*/n 代表每隔多久執行一次。比如“*/10 * * * *”命令代表每隔10分鍾就執行一次命令。

特定時間執行任務案例

特定時間 含義
45 22 * * * 在每天22點45分執行命令。
0 17 * * 1 每周一的17點0分執行命令。
0 5 1,15 * * 每月1號和15號的凌晨5點0分執行命令。
40 4 * * 1-5 每周一到周五的凌晨4點40分執行命令。
*/10 4 * * * 每天的凌晨4點,每隔10分鍾執行一次命令。
0 0 1,15 * 1 每月1號和15號,每周一的0點0分都會執行命令。注意:星期幾和幾號最好不要同時出現,因為定義的都是天,容易讓管理員混亂。
  • crond 任務調度實例
  • 每隔1分鍾,將當前日期和日歷都追加到 /home/mycal 文件中。
    • vim /home/my.sh 寫入內容 date >> /home/mycal 和 cal >> /home/mycal
    • 給 my.sh 增加執行權限,chmod u+x /home/my.sh
    • 執行 crontab -e 命令,增加 */1 * * * * /home/my.sh
    • 保存退出調度文件
  • 每天凌晨2:00,將 mysql 數據庫 testdb,備份到文件 mydb.bak 中。提示指令:mysqldump -u root -p密碼 數據庫 > /home/mydb.bak
    • 執行 crontab -e 命令
    • 增加 0 2 * * * mysqldump -u root -proot testdb > /home/mydb.bak
    • 保存退出調度文件
  • crond 相關指令
  • crontab -r: 終止任務調度。
  • crontab –l:列出當前所有任務調度。
  • service crond restart:重啟任務調度。
  • 定時任務 at

基本介紹

  • at命令是一次性定時計划任務,at 的守護進程 atd 會以后台模式檢查作業隊列來運行。
  • 默認情況下,atd 守護進程每60秒檢查作業隊列。有作業時,會檢查作業運行時間。如果時間與當前時間匹配,則運行此作業。
  • at命令是一次性定時計划任務,執行完一個任務后就不會再執行此任務了。
  • 在使用at命令的時候,一定要保證 atd 進程已啟動,可以使用 ps -ef | grep atd 命令來查看 atd 是否在運行。

基本語法

  • at [選項] [時間]
  • 兩次鍵入 Ctrl + D 結束 at 命令的輸入。
  • 基本語法中,選項使用次數極少,此處不再贅述。

at 時間定義

  • 使用 hh:mm(小時:分鍾)格式對當天的的時間指定。假如該時間已過去,那么就放在第二天執行。比如04:00
  • 使用 midnight(深夜),noon(中午),teatime(飲茶時間,一般是下午4點)等比較模糊的詞語來指定時間。
  • 使用12小時計時制,即在時間后面加上AM(上午)或PM(下午)來說明是上午還是下午。比如12pm
  • 指定命令執行的具體日期,指定格式為 month day(月 日)或 mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年)。指定的日期必須跟在指定時間的后面。比如04:00 2021-03-11
  • 對於安排不久就要執行的命令,可以使用相對計時法。。指定格式為:now + count time-units,now就是當前時間,time-units 是時間單位,這里能夠是 minutes(分鍾)、hours(小時)、days(天)、weeks(星期)。count是時間的數量,究竟是幾天,還是幾小時等等。比如 now + 5 minutes
  • 直接使用 today(今天)、tomorrow(明天)來指定完成命令的時間。
  • at 定時任務實例
  • 2天后的下午5點執行 /bin/ls /home
    • 執行 at 5pm + 2 days 命令回車
    • 輸入 /bin/ls /home
    • 兩次鍵入 Ctrl + D 結束at命令的輸入
  • atq 命令來查看系統中沒有執行的定時任務
    • 直接執行 atq 命令查看即可
  • 明天17點鍾,輸出時間到指定文件 /root/date100.log
    • 執行 at 5pm tomorrow 命令回車
    • 輸入 date > /root/date100.log
    • 兩次鍵入 Ctrl + D 結束 at 命令的輸入
  • 2分鍾后,輸出時間到指定文件 /root/date200.log
    • 執行 at now + 2 minutes 命令回車
    • 輸入 date > /root/date200.log
    • 兩次鍵入 Ctrl + D 結束 at 命令的輸入
  • 刪除已經設置的定時任務
    • 先使用 atq 命令查看系統中沒有執行的定時任務,獲取要刪除的任務編號
    • 執行 atrm 任務編號 命令

第12章 Linux 實操篇-Linux 磁盤分區、掛載

  • Linux 分區

原理介紹

  • Linux 來說無論有幾個分區,分給哪一目錄使用,它歸根結底就只有一個根目錄,一個獨立且唯一的文件結構,Linux 中每個分區都是用來組成整個文件系統的一部分。
  • Linux 采用了一種叫“載入”的處理方法,它的整個文件系統中包含了一整套的文件和目錄, 且將一個分區和一個目錄聯系起來。這時要載入的一個分區將使它的存儲空間在一個目錄下獲得。

硬盤說明

  • Linux 硬盤分 IDE 硬盤和 SCSI 硬盤,目前基本上是 SCSI 硬盤。
  • 對於 IDE 硬盤,驅動器標識符為“sdx~”,“hd”表明分區所在設備的類型,這里是指IDE硬盤。“x”為盤號(a 為基本盤,b 為基本從屬盤,c 為輔助主盤,d 為輔助從屬盤),“~”代表分區,前四個分區用數字1到4表示,它們是主分區或擴展分區,從5開始就是邏輯分區。比如 hda3 表示為第一個 IDE 硬盤上的第三個主分區或擴展分區,hdb2 表示為第二個 IDE 硬盤上的第二個主分區或擴展分區。
  • 對於 SCSI 硬盤,驅動器標識符為“sdx~”,SCSI 硬盤是用“sd”來表示分區所在設備的類型,其余則和 IDE 硬盤的表示方法一樣。

查看所有設備掛載情況

  • lsblk:英文是“list block”,即用於列出所有可用塊設備的信息
  • lsblk -f:查看系統分區和掛載點情況
  • 掛載的經典案例

說明

  • 給 Linux 系統增加一塊新的硬盤,並且掛載到 /newdisk
  • 主要有以下5個步驟:虛擬機添加硬盤、分區、格式化、掛載、設置可以自動掛載。具體步驟如下。

具體步驟

  • 虛擬機添加硬盤
    在【虛擬機】菜單中,選擇【設置】,然后設備列表里添加硬盤,然后一路【下一步】,中間只有選擇磁盤大小的地方需要修改,直到完成。然后重啟系統(才能識別)!
  • 磁盤分區
    • 分區命令 fdisk /dev/sdb
    • 開始分區后輸入 n,新增分區,然后選擇 p,分區類型為主分區,分區號1-4可選,默認為1,1代表為只為磁盤划分一塊分區,2代表為磁盤划分兩塊分區,依次類推。此次案例選擇1。兩次回車默認剩余全部空間。最后輸入 w 寫入分區並退出,若不保存退出輸入 q。
命令 含義
m 顯示命令列表
n 新增分區
d 刪除分區
w 寫入並退出
  • 格式化磁盤
    • 命令:mkfs -t ext4 /dev/sdb1 其中 ext4 是分區類型
  • 掛載
    • 掛載: 將一個分區與一個目錄聯系起來。
    • mount 設備名稱 掛載目錄 此次案例為 mount /dev/sdb1 /newdisk
    • 相反地,去除掛載命令為 umount 設備名稱或者掛載目錄
    • 此次案例用不到,但給出舉例(umount /dev/sdb1 或者 umount /newdisk),特此說明。
  • 設置可以自動掛載
    以上四步,只能實現臨時掛載,重啟系統后,掛載就會失效。設置自動掛載,即永久掛載,當重啟系統,仍然可以掛載到指定目錄。
    • 通過修改 /etc/fstab 文件實現永久掛載
    • 此次案例在文件中增加 /dev/sdb1 /newdisk ext4 defaults 0 0
    • 保存並退出文件后,執行 mount –a 即刻生效
  • 磁盤情況查詢
  • 查詢系統整體磁盤使用情況:df -h
  • 查詢指定目錄的磁盤占用情況:du -h /指定目錄
選項 含義
-s 指定目錄占用大小匯總
-h 帶計量單位
-a 含文件
--max-depth=1 子目錄深度為1
-c 列出明細的同時,增加匯總值
  • 磁盤情況-工作實用指令
  • 統計 /opt 文件夾下文件的個數
    • ls -l /opt | grep "^-" | wc -l
  • 統計 /opt 文件夾下目錄的個數
    • ls -l /opt | grep "^d" | wc -l
  • 統計 /opt 文件夾下文件的個數,包括子文件夾下的
    • ls -lR /opt | grep "^-" | wc -l
  • 統計 /opt 文件夾下目錄的個數,包括子文件夾下的
    • ls -lR /opt | grep "^d" | wc -l
  • 以樹狀顯示目錄結構
    • yum install tree
    • tree 指定目錄
  • wc 命令
    • Linux 系統中的 wc(Word Count)命令的功能為統計指定文件中的字節數、字數、行數,並將統計結果顯示輸出。
    • wc [選項] [文件]
命令 含義
-c 統計字節數
-l 統計行數
-m 統計字符數,這個選項不能與 -c 一起使用
-w 統計字數,一個字被定義為由空白、跳格或換行字符分隔的字符串
-L 統計最長行的長度

第13章 Linux 實操篇-網絡配置

  • 查看網絡配置
  • Windows 系統:ipconfig
  • Linux 系統:ifconfig
  • Linux 網絡環境配置
  • 第一種方式:自動獲取 IP
    • 用戶登錄后,通過界面來設置自動獲取 IP。
    • 缺點: Linux 啟動后,每次自動獲取的 IP 地址可能不一樣。這個不適用於服務器,因為服務器 IP 是需要固定的。
  • 第二種方式:固定 IP
    • 通過修改配置文件來指定 IP
    • 配置文件根據網卡不同名字有所區別,但文件路徑一致:/etc/sysconfig/network-scripts/,常見的配置文件名有 ifcfg-eth0 或者 ifcfg-ens33,可以通過 ifconfig 查看后綴。
    • 以 ifcfg-ens33 為例,配置文件需要修改的內容如后面的代碼塊所示。
    • 修改后,重啟網絡服務或者重啟系統生效:service network restart 或者 reboot
BOOTPROTO=static # 靜態 IP
IPADDR=192.168.59.134 # 本機 IP 地址
NETMASK=255.255.255.0 # 子網掩碼
GATEWAY=192.168.59.2 # 默認網關
DNS1=8.8.8.8 # 域名解析器
DNS2=8.8.4.4
  • 設置主機名和 hosts 映射
  • 設置主機名
    • 為了方便記憶,可以給 Linux 系統主機設置主機名,也可以根據需要修改主機名(大數據用到)。
    • 使用 hostname 查看當前主機名
    • 如需修改在文件 /etc/hostname 編輯即可
    • 修改后,重啟系統生效
  • 設置 hosts 映射
    hosts 映射可以使主機名和系統 IP 地址建立映射聯系,即通過主機名就可以連接到某個主機系統,省去了 IP 地址的麻煩。
    hosts 是一個文本文件,用來記錄 IP 和 Hostname(主機名)的映射關系。
    除去 hosts 文件,DNS 是互聯網上作為域名和 IP 地址相互映射的一個分布式數據庫。Domain Name System 的縮寫,翻譯過來就是域名系統。
    • Windows:在 C:\Windows\System32\drivers\etc\hosts 文件中指定即可。如192.168.130.23 CentOS-PC
    • Linux:在 /etc/hosts 文件中指定即可。如192.168.100.13 Windows-PC

第14章 Linux 實操篇-進程管理(重點)

  • 基本介紹
  • 在 Linux 中,每個執行的程序(代碼)都稱為一個進程。每一個進程都分配一個 ID 號,即進程號,PID。
  • 每個進程都可能以兩種方式存在的。前台與后台,所謂前台進程就是用戶目前的屏幕上可以進行操作的。后台進程則是實際在操作,但由於屏幕上無法看到的進程,通常使用后台方式執行。
  • 一般系統的服務都是以后台進程的方式存在,而且都會常駐在系統中,直到關機才才結束。
  • 顯示系統執行的進程
  • ps -aux:顯示當前終端所有進程。
  • ps -aux | more:配合 more 命令,分屏顯示進程信息,便於查看。
  • ps -aux | grep 特定服務:配合 grep 命令,查看特定的進程信息。比如 ps -aux | grep sshd。
  • ps -ef:以全格式顯示當前所有的進程,也可以查看進程的父進程,父進程符號為 PPID。
  • ps -ef | grep 特定服務:配合 grep 命令,查看特定進程的父進程。比如 ps -ef | grep sshd。
  • 終止進程 kill 和 killall
  • kill [選項] 進程號:通過進程號殺死進程。
  • killall 進程名稱:通過進程名稱殺死進程,也支持通配符。殺死該進程的同時,該進程下的子進程也會被殺死。
  • 常用選項:-9表示強制進程立即停止。
  • 常用實例
    • 踢掉某個非法登錄用戶:ps -aux | grep sshd 查看登錄用戶的進程號,后 kill 登錄用戶的進程號。
    • 終止遠程登錄服務 sshd,在適當時候再次重啟 sshd 服務:kill sshd對應的進程號,再運行 /bin/systemctl start sshd.service
    • 終止多個 gedit 編輯器:killall gedit。
    • 強制殺掉一個終端:kill -9 bash對應的進程號
  • 查看進程樹 pstree
  • pstree [選項]:可以更加直觀的來看進程信息。
  • 常用選項:-p 顯示進程的 PID,-u 顯示進程的所屬用戶。
  • pstree -p:樹狀的形式顯示進程的 PID。
  • pstree -u:樹狀的形式顯示進程的用戶。
  • 服務(service)管理

服務本質就是進程,但是是運行在后台的,通常都會監聽某個端口,等待其它程序的請求,比如(mysql、sshd、防火牆等),因此我們又稱為守護進程,是 Linux 中非常重要的知識點。

  • service 管理指令
    • service 服務名 [start | stop | restart | reload | status]
    • 在 CentOS 7.0 后 不再使用 service ,而是 systemctl(后面專門介紹)。
    • service 指令管理的服務在 /etc/init.d 查看,即 ls -l /etc/init.d 命令。
  • service 管理指令案例
    使用 service 指令,查看、關閉、啟動 network。
    • service network status
    • service network stop
    • service network start
  • 查看服務名
    • 方式一:使用 setup -> 系統服務 就可以查看(包括 service 和 systemctl),帶星號的是開機自啟動的服務。
    • 方式二:運行 ls -l /etc/init.d 只能查看 service 管理的服務。
  • 服務的運行級別
    Linux 系統有7種運行級別(runlevel):常用的是級別3和5。
    • 運行級別 0:系統停機狀態,系統默認運行級別不能設為0,否則不能正常啟動。
    • 運行級別 1:單用戶工作狀態,root 權限,用於系統維護,禁止遠程登陸。
    • 運行級別 2:多用戶狀態(沒有 NFS),不支持網絡。
    • 運行級別 3:完全的多用戶狀態(有 NFS),登陸后進入控制台命令行模式。
    • 運行級別 4:系統未使用,保留。
    • 運行級別 5:X11 控制台,登陸后進入圖形 GUI 模式
    • 運行級別 6:系統正常關閉並重啟,默認運行級別不能設為6,否則不能正常啟動。
  • CentOS 7后運行級別說明
    • 在 /etc/initab 進行了簡化,multi-user.target 等同於運行級別3,graphical.target 等同於運行級別5。
    • systemctl get-default:獲取當前的運行級別;
    • systemctl set-default multi-user.target:將默認運行級別設置為 mulit-user。
  • chkconfig 指令

通過 chkconfig 命令可以給每個服務的各個運行級別設置自啟動/關閉,此處的服務是指 service 指令管理的服務,在 /etc/init.d 查看,即 ls -l /etc/init.d 命令。
chkconfig 重新設置服務自啟動或關閉后,需要重啟機器才能生效。
注意:CentOS 7.0之后,很多服務使用 systemctl 管理。

  • 基本語法
    • chkconfig --list | grep 服務名
    • chkconfig 服務名 --list
    • chkconfig --level 5 服務名 on/off
  • 應用實例
    • 將 sshd 服務在運行級別5下設置為不自動啟動:chkconfig --level 5 sshd off
    • 顯示當前系統所有服務的各個運行級別的運行狀態:chkconfig --list
    • 將 network 服務在運行級別3下設置為不自動啟動:chkconfig --level 3 network off
  • systemctl 管理指令
  • 基本語法
    • systemctl [start | stop | restart | status] 服務名
    • service 指令管理的服務在 /usr/lib/systemd/system 查看,即 ls -l /usr/lib/systemd/system 命令。
  • systemctl 設置服務自啟動狀態
    • systemctl list-unit-files| grep 服務名:查看服務開機啟動狀態,使用 grep 進行過濾。
    • systemctl enable 服務名:設置服務開機自啟動。
    • systemctl disenable 服務名:關閉服務開機自啟動。
    • systemctl is-enable 服務名:查詢某個服務是否開機自啟動。
  • 查看服務名
    • 使用 ls -l /usr/lib/systemd/system 命令查看需要的服務名。
  • 服務運行級別
    • systemctl [start | stop] 服務名 一般在運行級別3和5執行,沒有再作具體區分。
  • 應用案例
    查看當前防火牆的狀況,關閉防火牆和重啟防火牆。
    • 使用 ls -l /usr/lib/systemd/system 命令查看防火牆服務名為 firewalld.service。
    • systemctl status firewalld
    • systemctl stop firewalld
    • systemctl start firewalld
  • 細節討論
    • 關閉或啟用防火牆后,立即生效。
    • 這種方式只是臨時生效,當重啟系統后,還是回歸以前對服務的設置。
    • 如果設置某個服務自啟動或關閉永久生效,要使用 systemctl [enable/disable] 服務名。
  • 打開或關閉指定端口

在真正的生產環境,往往需要將防火牆打開。但如果把防火牆打開,那么外部請求數據包就不能跟服務器監聽端口通訊。這時,需要打開指定的端口。

  • firewall 指令
    • 打開端口:firewall-cmd --permanent --add-port=端口號/協議
    • 關閉端口:firewall-cmd --permanent --remove-port=端口號/協議
    • 重新載入,才能生效:firewall-cmd --reload
    • 查詢端口是否開放:firewall-cmd --query-port=端口號/協議
    • 端口號和協議可以通過 netstat 進行監聽
  • 應用案例
    • 啟用防火牆,測試111端口能否 telnet,不能
    • 開放111端口:firewall-cmd --permanent --add-port=111/tcp;firewall-cmd --reload
    • 再次關閉111端口:firewall-cmd --permanent --remove-port=111/tcp;firewall-cmd --reload
  • 動態監控進程

top 與 ps 命令很相似。它們都用來顯示正在執行的進程。top 與 ps 最大的不同之處,在於 top 在執行一段時間可以更新正在運行的的進程。

  • 基本語法
    top [選項]
  • 選項說明
選項 含義
-d 指定每兩次屏幕信息刷新之間的時間間隔。當然用戶可以使用 s 交互命令來改變。
-i 使 top 不顯示任何閑置或者僵死進程。
-p 通過指定監控進程 ID 來僅僅監控某個進程的狀態。
  • 應用實例
    • 監視特定用戶:輸入 top 命令,查看執行的進程,然后輸入 u 回車,再輸入用戶名。
    • 終止指定的進程:輸入 top 命令,查看執行的進程,然后輸入 k 回車,再輸入要結束的進程 PID 號。
  • 監控網絡狀態
  • 查看系統網絡情況 netstat
    • netstat [選項]
    • netstat -anp:按一定順序排列顯示哪個進程在調用網絡端口
  • 應用案例
    • 查看服務名為 sshd 服務的信息:netstat -anp | grep sshd

第15章 Linux 實操篇-RPM 和 YUM

  • RPM 包的管理

一種用於互聯網下載包的打包及安裝工具,它包含在某些 Linux 發行版中。它生成具有.RPM 擴展名的文件。RPM 是 RedHat Package Manager(RedHat 軟件包管理工具)的縮寫,類似 Windows 的 setup.exe,這一文件格式名稱雖然打上了 RedHat 的標志,但理念是通用的。Linux 的發行版本都有采用(RedHat,CentOS等等),可以算是公認的行業標准了。

  • RPM 包名基本格式
    RPM 包名:firefox-45.0.1-1.el6.centos.x86_64.rpm
    • 名稱:firefox
    • 版本號:45.0.1-1
    • 適用操作系統:el6.centos.x86_64表示64位系統
    • 如果是 i686、i386表示32位系統,noarch 表示通用
  • RPM 包的其它查詢指令
    • rpm -qa:查詢所安裝的所有 rpm 軟件包
    • rpm -qa | more:分頁顯示
    • rpm -qa | grep 軟件包名:查詢所安裝的是否有該軟件包
    • rpm -qi 軟件包名:查詢軟件包信息
    • rpm -ql 軟件包名:查詢軟件包中的文件
    • rpm -qf 文件全路徑:查詢文件所屬的軟件包,如rpm -qf /etc/passwd
  • 卸載 RPM 包
    • rpm -e RPM 軟件包名:-e 代表 earse
  • 細節問題
    • 如果其它軟件包依賴於要卸載的軟件包,卸載時則會產生錯誤信息。
    • 如果就是要刪除這個 rpm 包,可以增加參數 --nodeps,就可以強制刪除,但是一般不推薦這樣做,因為依賴於該軟件包的程序可能無法運行。如:rpm -e --nodeps foo,帶上 --nodeps 就是強制刪除。
  • 安裝 RPM 包
    • rpm -ivh RPM 軟件包路徑:軟件包必須已下載到磁盤
    • 參數說明:i=install 安裝、v=verbose 提示、h=hash 進度條
  • YUM

YUM 是一個 Shell 前端軟件包管理器。基於 RPM 包管理,能夠從指定的服務器自動下載 RPM 包並且安裝,可以自動處理依賴性關系,並且一次安裝所有依賴的軟件包。使用 YUM 的前提是可以聯網。

  • YUM 的基本指令
    • 查詢 YUM 服務器是否有需要安裝的軟件:yum list | grep 軟件名
    • 安裝指定的 YUM 包:yum install 軟件名


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM