1. 程式人生 > 實用技巧 >09-常用指令(3)

09-常用指令(3)

網路配置

網路地址轉換 NAT

NAT 概述

  • 需要在專用網連線到網際網路的路由器上安裝 NAT 軟體。裝有 NAT 軟體的路由器叫作 NAT路由器,它至少有一個有效的外部全球IP地址
  • 所有使用本地地址的主機在和外界通訊時,都要在 NAT 路由器上將其本地地址轉換成全球 IP 地址,才能和網際網路連線

NAT 路由器工作原理


VMWare 配置 NAT

虛擬機器設定

每一個 VMnet* 相當於一個網路,虛擬機器如果想要上網,就設定成 VMnet 的網段內的 IP 地址。通過預設閘道器(也就是在宿主機中虛擬出來的網絡卡地址,它也在這個網段裡,也是該網段的預設閘道器),發給物理機,宿主機的虛擬網絡卡收到該資料報後,再將資料報源地址改為物理機的公網地址,最後向外轉發(就是 NAT 的過程)。

  • VMnet* 相當於你物理機裡的一個網段,上網的時候統統用物理機的公網地址替換了(NAT)
  • 要想讓虛擬機器上網,必須把物理機的網絡卡放入和虛擬機器一個網段,資料才能出去
  • 虛機若想訪問物理機的共享資源 / Ping,地址應該寫物理機虛擬網絡卡的地址而不是公網地址

虛擬網路編輯器

Linux 網路環境配置

自動獲取 IP

  • 說明:登陸後,通過介面的來設定自動獲取 IP
  • 特點:Linux 啟動後會自動獲取 IP,缺點是每次自動獲取的 IP 地址可能不一樣



指定固定 IP

說明:通過修改配置檔案 /etc/sysconfig/network-scripts/ifcfg-ens33 來指定 IP。

程序管理

基本介紹

  • 在 Linux 中,每個執行的程式(程式碼)都稱為一個"程序"。每一個程序都分配一個 ID 號。
  • 每一個程序,都會對應一個父程序,而這個父程序可以複製多個子程序。例如 www 伺服器。
  • 每個程序都可能以 2 種方式存在的:前臺與後臺
    • 前臺程序就是使用者目前的螢幕上可以進行操作的
    • 後臺程序則是實際在操作,但由於螢幕上無法看到的程序,通常使用後臺方式執行
  • 一般系統的服務都是以後臺程序的方式存在,而且都會常駐在系統中,直到關機才結束。

顯示系統執行的程序

  • 指令格式:ps –aux | grep xxx
  • 功能描述:是用來檢視目前系統中,有哪些正在執行,以及它們執行的狀況
  • 常用的引數有 aux,也可以不加任何引數
    • ps -a 顯示當前終端的所有程序資訊
    • ps -u 以使用者的格式顯示程序資訊
    • ps -x 顯示後臺程序執行的引數
  • 若只希望檢視 sshd 服務的程序狀況:ps -aux | grep sshd
  • 查詢結果的列名說明

檢視程序的父程序

  • 要求:以全格式顯示當前所有的程序,檢視程序的父程序
  • ps -ef 是以全格式顯示當前所有的程序。引數 -e 顯示所有程序,-f 表示"全格式"
  • 若只關心個別程序,可通過 ps -ef | grep xxx 對查詢結果進行過濾
  • 查詢結果的列名說明

檢視程序樹,可以更加直觀的來看程序資訊

  • 基本語法:pstree [選項]
  • 常用選項:
    • -p 顯示程序的 PID
    • -u 顯示程序的所屬使用者
  • 應用例項:
    • 以樹狀的形式顯示程序的 pid
    • 以樹狀的形式程序的使用者 id

終止程序

  • 基本介紹:若是某個程序執行一半需要停止時,或是已消了很大的系統資源時,此時可以考慮停止該程序。使用 kill 命令來完成此項任務。
  • 基本語法
    • kill [選項] 程序號:通過程序號殺死程序
    • killall 程序名稱:通過程序名稱殺死程序,也支援萬用字元,這在系統因負載過大而變得很慢時很有用
  • 常用選項:-9 表示強迫程序立即停止
  • 最佳實踐
    • 踢掉某個非法登入使用者
    • 終止遠端登入服務 sshd,在適當時候再次重啟 sshd 服務
    • 終止多個 gedit 編輯器:killall gedit
    • 強制殺掉一個終端

服務管理

簡述

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

systemctl

指令:systemctl [start | stop | restart | reload | status] 服務名

檢視當前防火牆的狀況,關閉防火牆和重啟防火牆

  • iptables 是 Linux 中對網路資料包進行處理的一個功能元件,就相當於防火牆,可以對經過的資料包進行處理,例如:資料包過濾、資料包轉發等等。iptables 其實是一堆規則,防火牆根據 iptables 裡的規則,對收到的網路資料包進行處理。iptables 裡的資料組織結構分為:表、鏈、規則。
  • iptables 在 CentOS 7 版本上需要自行安裝:yum install iptables-services
  • 檢查是否安裝成功
  • 啟動 iptables:systemctl start iptables.service
  • 有關命令
    systemctl start iptables #啟動
    systemctl status iptables #檢視執行狀態
    systemctl restart iptables.service #重啟
    systemctl stop iptables.service #停止
    systemctl enable iptables.service #設定開機啟動
    systemctl disable iptables.service #禁止開機啟動
    
  • 關閉或者啟用防火牆後,立即生效。[telnet 測試某個埠即可]
  • 這種方式只是臨時生效,當重啟系統後,還是迴歸以前對服務的設定。如果希望設定某個服務自啟動或關閉永久生效,要使用 chkconfig 指令

檢視服務名

  1. 使用 setup → 系統服務 就可以看到
  2. 檢視 /etc/init.d/服務名稱

服務的執行級別

  • 檢視或者修改預設級別:vi /etc/inittab
  • Linux 有 7 種執行級別(RunLevel):常用的是級別 3 和 5
    • 執行級別0:系統停機狀態,系統預設執行級別不能設為 0,否則不能正常啟動
    • 執行級別1:單使用者工作狀態,root 許可權,用於系統維護,禁止遠端登陸
    • 執行級別2:多使用者狀態(沒有NFS),不支援網路
    • 執行級別3:完全的多使用者狀態(有NFS),登陸後進入控制檯命令列模式
    • 執行級別4:系統未使用,保留
    • 執行級別5:X11 控制檯,登陸後進入圖形 GUI 模式
    • 執行級別6:系統正常關閉並重啟,預設執行級別不能設為 6,否則不能正常啟動
  • 開機的流程說明
  • 如果不小心將預設的執行級別設定成 0 或者 7 ,怎麼處理?進入單使用者模式,修改成正常的即可

通過 chkconfig 命令可以給每個服務的各個執行級別設定自啟動/關閉。 chkconfig 重新設定服務後自啟動或關閉,需要重啟機器 reboot 才能生效。

  • chkconfig --list | grep xxx
  • chkconfig 服務名 --list
  • chkconfig --level 5 服務名 on/off
  1. 請顯示當前系統所有服務的各個執行級別的執行狀態 chkconfig --list
  2. 請檢視 sshd 服務的執行狀態 service sshd status
  3. 將 sshd 服務在執行級別 5 下設定為不自動啟動 chkconfig --level 5 sshd off
  4. 當執行級別為 5 時,關閉防火牆 chkconfig --level 5 iptables off
  5. 在所有執行級別下,關閉防火牆 chkconfig iptables off
  6. 在所有執行級別下,開啟防火牆 chkconfig iptables on

動態監控程序

  • 基本語法:top [選項]
  • 功能描述:top 與 ps 命令很相似。它們都用來顯示正在執行的程序。top 與 ps 最大的不同之處,在於 top 在執行一段時間可以更新正在執行的的程序。
  • 選項說明
  • 互動操作說明
  • 應用例項
    • 監視特定使用者
      • top:輸入此命令,按回車鍵,檢視執行的程序
      • u:然後輸入 u 回車,再輸入使用者名稱即可
    • 終止指定的程序
      • top:輸入此命令,按回車鍵,檢視執行的程序
      • k:然後輸入 k 回車,再輸入要結束的程序 ID 號
    • 指定系統狀態更新的時間(每隔10秒自動更新):top -d 10

監控網路狀態

netstat

  • 基本語法:netstat [選項]
  • 功能描述:檢視系統網路服務的情況
  • 選項說明
    • -an 按一定順序排列輸出
    • -p 顯示哪個程序在呼叫
  • 示例
    • 檢視系統所有的網路服務:netstat -anp | more
    • 檢視服務名為 sshd 的服務的資訊

ping

一種網路檢測檢測工具,它主要是用檢測遠端主機是否正常,或是兩部主機間的介質是否為斷、網線是否脫落或網絡卡故障。

RPM 包管理

簡述

一種用於網際網路下載包的打包及安裝工具,它包含在某些Linux分發版中。它生成具有 .RPM 副檔名的檔案。RPM 是 RedHat Package Manager(RedHat 軟體包管理工具)的縮寫,類似 Windows 的 setup.exe,這一檔案格式名稱雖然打上了 RedHat 的標誌,但理念是通用的。

Linux 的分發版本都有采用 (如 suse,redhat,centos ...),可以算是公認的行業標準了。

查詢 rpm

  • rpm 包的簡單查詢指令:rpm –qa | grep xx
  • rpm 包名基本格式
  • 其它查詢指令
    • rpm -qa | more 查詢所安裝的所有 rpm 軟體包
    • rpm -qi 軟體包名 查詢軟體包資訊
    • rpm -q 軟體包名 查詢軟體包是否安裝
    • rpm -ql 軟體包名 查詢軟體包中的檔案
    • rpm -qf 檔案全路徑名 查詢檔案所屬的軟體包

解除安裝 rpm

  • 基本語法:rpm -e RPM包的名稱
  • 細節討論
    • 如果其它軟體包依賴於您要解除安裝的軟體包,解除安裝時則會產生錯誤資訊。如:rpm -e foo
      removing these packages would break dependencies:foo is needed by bar-1.0-1
      
    • 如果我們就是要刪除 foo 這個 rpm 包,可以增加引數 --nodeps,就可以強制刪除,但是一般不推薦這樣做,因為依賴於該軟體包的程式可能無法執行。如:rpm -e --nodeps foo

安裝 rpm

  • 基本語法:rpm -ivh RPM包全路徑名稱
  • 引數說明
    • i=install 安裝
    • v=verbose 提示
    • h=hash 進度條
  • 以安裝 Firefox 為例,需要先找到 rpm 包:掛載當初安裝 Linux 的 ISO 檔案

YUM

  • Yum 是一個 Shell 前端軟體包管理器。基於 RPM 包管理,能夠從指定的伺服器自動下載 RPM 包並且安裝(要求聯網),可以自動處理依賴性關係,並且一次安裝所有依賴的軟體包。
  • yum 的基本指令
    • 查詢 yum 伺服器是否有需要安裝的軟體:yum list | grep xxx
    • 安裝指定的 yum 包:yum install xxx
  • 示例:使用 yum 的方式來安裝 Firefox