第5章 Linux 實操篇-遠程登錄到 Linux 服務器
- 遠程登錄 Linux-Xshell6
- Xshell6:https://www.netsarang.com/en/free-for-home-school/
- 在 Linux 服務器上,使用 ipconfig 命令查看 IP 地址。
- 遠程上傳下載文件-Xftp6
- Xftp:https://www.netsarang.com/en/free-for-home-school/
- 在 Linux 服務器上,使用 ipconfig 命令查看 IP 地址。
第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 軟件名