1. 程式人生 > >馬哥:linux雲端計算從入門到精通筆記

馬哥:linux雲端計算從入門到精通筆記

前言

Linux可安裝在各種計算機硬體裝置中,比如手機、平板電腦、路由器、視訊遊戲控制檯、臺式計算機、大型機和超級計算機。

網際網路Linux運維工作,以服務為中心,以穩定、安全、高效為三個基本點,確保公司的網際網路業務能夠7×24小時為使用者提供高質量的服務。運維的職責覆蓋了產品從設計到釋出、執行維護、變更升級及至下線的生命週期。

                                            運維團隊的工作分類

1-應用運維(SRE):應用運維負責線上服務的變更、服務狀態監控、服務容災和資料備份等工作,對服務進行例行排查、故障應急處理等工作,工作職責如下:設計評審、服務管理、資源管理、例行檢查、預案管理、資料備份。

2-系統運維(SYS):負責IDC、網路、CDN和基礎服務的建設(LVS、NTP、DNS);負責資產管理,伺服器選型、交付和維修,工作職責如下:IDC資料中心建設、網路建設、LVS負載均衡和SNAT建設、CDN規劃和建設、伺服器選型、交付和維護、核心選型和OS相關維護工作、資產管理、基礎服務建設。

3-資料庫運維(DBA):資料庫運維負責資料儲存方案設計、資料庫表設計、索引設計和SQL優化,對資料庫進行變更、監控、備份、高可用設計等工作,詳細的工作內容如下:設計評審、容量規劃、資料備份與災備、資料庫監控、資料庫安全、資料庫高可用和效能優化、自動化系統建設、運維研發、運維平臺、監控系統、自動化部署系統。

4-運維安全(SEC):運維安全負責網路、系統和業務等方面的安全加固工作,進行常規的安全掃描、滲透測試,進行安全工具和系統研發以及安全事件應急處理,工作內容如下:安全制度建立、安全培訓、風險評估、安全建設、安全合規、應急響應。

軟體和技能

運維平臺和工具包括:

  • Web伺服器:apache、tomcat、nginx、lighttpd

  • 監控:nagios、ganglia、cacti、zabbix

  • 自動部署:ansible、sshpt、salt

  • 配置管理:puppet、cfengine

  • 負載均衡:lvs、haproxy、nginx

  • 傳輸工具:scribe、flume

  • 備份工具:rsync、wget

  • 資料庫:mysql、oracle、sqlserver

  • 分散式平臺:hdfs、mapreduce、spark、storm、hive

  • 分散式資料庫:hbase、cassandra、redis、MongoDB

  • 容器:lxc、docker

  • 虛擬化:openstack、xen、kvm

  • 安全:kerberos、selinux、acl、iptables

  • 問題追查:netstat、top、tcpdump、last

新時代運維

傳統的運維該如何轉型呢?這裡給出一點小的建議: 大致需要學習下這四個部分:

  • 自動化運維(Ansible,Puppet,Saltstack等)
  • Devops(Docker,K8s,Jenkins,Jira等),
  • 雲服務技術(虛擬化、OpenStack、AWS及阿里雲各種產品服務架構等)
  • python

計算機的組成及其功能

馮.諾伊曼體系中,計算機有五大基本部件:控制器、運算器、儲存器、輸入裝置、輸出裝置。(電子專業學過,哈哈) 
實際應用中,計算機包括CPU(控制器和運算器)、儲存器(Memory記憶體和Disk外存)、Input輸入裝置、Output輸出裝置。

CPU由運算器、控制器、暫存器、快取、指令集組成。 

a、運算器是實現算術運算和邏輯運算的部件

Linux發行版有三大主流分支:Debian、Slackware、Redhat,包含的主要發行版分別如下:

  1. Debian 
    • Ubuntu 
      Linux mint
    • Knopix
  2. Slackware 
    • S.u.S.E 
      SLES-SuSE Linux Enterprise 
      OpenSuSE
  3. Redhat 
    • RHEL-RedHat Enterprise Linux 
      CentOS-Community ENTerprise
    • Fedore Core

Linux的哲學思想

1. 一切皆檔案
把幾乎所有資源統統抽象為檔案形式,包括硬體裝置,甚至通訊介面等,便於統一管理和定義; 
對檔案的操作有:open,read,write,close,delete,create
2. 由眾多功能單一的程式組成
一個程式只做一件事,並且做好,保證了Linux核心的高效執行; 
3. 組合小程式完成複雜任務
通過連線多個簡單的程式實現複雜的功能; 
4. 儘量避免和使用者互動
更貼近程式設計,易於以程式設計的方式實現自動化任務; 
5. 使用文字檔案儲存配置資訊

修改配置資訊只需要任意一款文字編輯器就可以進行。

Linux系統的啟動過程可以分為5個階段

核心的引導    執行 init    系統初始化    建立終端     使用者登入系統

使用者的登入方式有三種:

  • (1)命令列登入
  • (2)ssh登入  
  • (3)圖形介面登入

正確的關機流程為:sync > shutdown > reboot > halt

不管是重啟系統還是關閉系統,首先要執行 sync 命令,把記憶體中的資料寫到磁碟中。

cache:為了解決讀磁碟的效率    buffer:為了解決寫磁碟的效率

linux系統為了提高讀寫磁碟的效率,會先將資料放在一塊buffer中。在寫磁碟時並不是立即將資料寫到磁碟中,而是先寫入這塊buffer中了。此時如果重啟系統,就可能造成資料丟失。

sync命令用來flush檔案系統buffer,這樣資料才會真正的寫到磁碟中,並且buffer才能夠釋放出來,flush就是用來清空buffer。sync命令會強制將資料寫入磁碟中,並釋放該資料對應的buffer,所以常常會在寫磁碟後輸入sync命令來將資料真正的寫入磁碟。

如果不去手動的輸入sync命令來真正的去寫磁碟,linux系統也會週期性的去sync資料。

shutdown 關機指令,你可以man shutdown 來看一下幫助文件。例如你可以執行如下命令關機:

shutdown –h 10 ‘This server will shutdown after 10 mins’ 這個命令告訴大家,計算機將在10分鐘
後關機,並且會顯示在登陸使用者的當前螢幕中。

Shutdown –h now 立馬關機

Shutdown –h 20:25 系統會在今天20:25關機

Shutdown –h +10 十分鐘後關機

Shutdown –r now 系統立馬重啟

Shutdown –r +10 系統十分鐘後重啟

reboot 就是重啟,等同於 shutdown –r now

Linux基礎教程之基礎命令總結

基本命令

清屏:clear 或者 ctrl+l

檢視記憶體(free)
檢視磁碟(df)
檢視cpu佔用率(top)
檢視核心版本(uname)

uname命令用於檢視系統核心與系統版本等資訊, windows是systeminfo

cat命令用於檢視純文字檔案(內容較少的)

more命令用於檢視純文字檔案(內容較多的)

less檢視課後退

ls命令  list 列出指定目錄下的內容

pwd命令   printing working directory 顯示當前工作目錄

cd 命令  change directory 切換目錄

cp命令 copy 用於複製原始檔或者目錄到

    -f:強制覆蓋目標檔案;

    -r, -R:遞迴複製目錄;

mkdir命令  建立目錄make directories

rm    刪除命令remove   ls刪除前可以用來看下

    -r  將引數中列出的全部目錄和子目錄均遞迴地刪除

注意:刪除命令是一個非常危險的操作,所有不用的檔案建議不要直接刪除,而是移動至某個專用目錄;(模擬回收站),過段時間後,非常明確肯定不要了再刪除。

許可權

(1)user (2)group (3)others三種身份啦! 那麼我們就可以藉由u, g, o來代表三種身份的許可權! a 則代表 all 亦即全部的身份!

加許可權

#  touch test1    // 建立 test1 檔案
# ls -al test1    // 檢視 test1 預設許可權
-rw-r--r-- 1 root root 0 Nov 15 10:32 test1
# chmod u=rwx,g=rx,o=r  test1    // 修改 test1 許可權
# ls -al test1
-rwxr-xr-- 1 root root 0 Nov 15 10:32 test1

減去許可權:

<span style="color:#880000">#  chmod  a-x test1</span>

關機

shutdnow -h -now馬上關機   shutdnow  +30   :30分鐘後關機

文字檢視類命令

cat命令  concatenate檢視文字檔案內容

tac與cat命令剛好相反,檔案內容從最後一行開始顯示,可以看出 tac 是 cat 的倒著寫!

less命令   翻屏檢視檔案

    less file

more命令  從頭到尾檢視檔案,不可以回頭,不是很好用

  • less 與 more 類似,但是比 more 更好的是,他可以往前翻頁!
  • head 只看頭幾行
  • tail 只看尾巴幾行

head命令   顯示檔案的前n行,預設是顯示前十行

    語法格式:head [引數]… [檔案]…

    -c<位元組> 顯示位元組數。  head  -c 50 /etc/rc.d/init.d/functions 顯示前50位元組,要是改為-50.則顯示檔案後50位元組。

    -n<行數> 顯示的行數。顯示檔案的前50行:head  -50 /etc/rc.d/init.d/functions

 stat命令:顯示檔案和檔案的系統熟性,包括檔名,大小,時間戳等資訊,通俗地說就像我們看到windows右鍵,檔案屬性看到的資訊類似。

網路相關類

ifconfig  或ip addr list  檢視活動介面的ip地址

ss命令  ss是Socket Statistics的縮寫。顧名思義,ss命令可以用來獲取socket統計資訊,它可以顯示和netstat類似的內容。但ss的優勢在於它能夠顯示更多更詳細的有關TCP和連線狀態的資訊,而且比netstat更快速更高效。

    例如檢視22埠狀態 :ss  -tnl

搜尋和查詢類

file命令  檢視檔案內容型別

type命令  判斷一個命令是外部命令還是內部命令

    語法格式 type  COMMAND

help命令 用於shell內部命令的幫助資訊

    語法格式 help COMMAND

man  命令   幫助手冊

    語法格式 man COMMAND

tty  顯示當前終端   虛擬終端tty,centos7啟動後預設有6個tty1–tty6,alt+F1-F6鍵切換

偽終端是pty

echo命令  列印或輸出內容,查詢變數值,常用於程式設計

第二部分

檔案管理類命令大全

1.  mkdir – make directories,建立目錄

2.  rmdir – remove empty directories, 刪除空目錄,非空則無法刪除  雞肋

3. mv – move,移動或重新命名檔案

6. rm – remove,刪除檔案或目錄

許可權管理

r(read):可讀取 w(write):可寫入 x(execute):可執行     r:4 w:2 x:1

更改屬主屬組許可權命令

chown:改變檔案所屬的使用者組。

chgrp:改變檔案的所有者。

chmod:改變檔案的許可權。

三種身份用user=u;group=g;others=o

1、chmod a=rwx
2、chmod g=rwx,u=rwx,a=rwx
3、chmod g+w,o+w

正則表示式小白讀本

正則表示式分兩類

  • 基本正則表示式
  • 擴充套件正則表示式(正則表示式的優化版,元字元的表達更簡潔,更方便。)

在Linux中,正則表示式通常會配合文字過濾工具grep使用。 grep的功能強大,且簡單粗暴。

shell指令碼使用入門

1、程式設計基礎

  •   程式:指令+資料   演算法+資料結構
  •   程式程式設計風格:

過程式:以指令為中心,資料服務於指令

                        物件式:以資料為中心,指令服務於資料

  •   shell程式:提供了程式設計能力,解釋執行

2、程式的執行方式

  •         計算機:執行二進位制指令
  •         程式語言:

                    低階:彙編

                    高階:

                             編譯:高階語言– >編譯器–> 目的碼

                                     C,C++,C#,Go

                             解釋:高階語言–> 直譯器–> 機器程式碼

                                shell,perl , python , JAVA

                                JavaScript , ruby ,PHP

3、程式設計基本概念

  •        程式設計邏輯處理方式:

                 順序執行

                 迴圈執行

  •        shell程式設計 :過程式、解釋執行

                 程式語言的基本結構:

                   各種系統命令的組合

                   資料儲存:變數、陣列

                         表示式:a+b

                   語句:if

4、shell指令碼基礎

  •       shell指令碼:

                包含一些命令或宣告,並符合一定格式的文字檔案

  •       格式要求:首行shebang機制

                #!/bin/bash

                # ! /usr/bin/python

                #!/usr/bin/perl

  •       shell指令碼的用途有:

                >   自動化常用命令

                >   執行系統管理和故障排除

                >   建立簡單的應用程式

                >   處理文字或檔案

  • 強型別:變數不經過強制轉換,它永遠是這個資料型別,不允許隱式的型別轉換。一般定義變數時必須指定型別參與運算必須符合型別要求;呼叫未宣告變數會產生錯誤     如  java,c#
  • 弱型別:語言的執行時會隱式做資料型別轉換。無須指定型別,預設均為字元型;

          參與運算會自動進行隱式型別轉換;變數無須事先定義可直接呼叫  python

Linux包管理:rpm/yum/編譯安裝

程式包管理器:

將編譯好的應用程式的各個組成檔案打包成一個或幾個程式包檔案,從而更方便地實現程式包的安裝、升級、解除安裝和查詢等管理操作

磁碟分割槽

       優點:

           1、隔離系統和程式  安全

           2、安裝多個0S

           3、提高修復速度

           4、實現磁碟空間配額限制

           5、優化I/O效能


乙太網的網路接頭:分為交叉和直連RJ-45,又因為每條芯線的對應不同,而分為568A和568B接頭,這兩款芯線內部的順序為:

補腦:Dos 攻擊 Ping –f 10.1.250.95 –s 65507泛洪  傳送大量資料包給該ip,檢視網絡卡利用率會很高,DDOS 成千上萬臺計算機給指定計算機發送大量資料包

 ARP網路地址解析協議        RARP反向網路地址解析協議

        當我們想要了解某個IP配置於哪張乙太網卡上面,我們主機會對整個區域網傳送出ARP資料包,對方接收到ARP資料包後就會返回他們的MAC給我們,知道對方的網絡卡地址後就可以傳遞資料了,當ARP協議取得目標IP與它的網絡卡卡號後,就會將其記錄到ARPtable(記憶體中)中記錄20分鐘,linux中對應命令 arp –n.

ACK:為1代表這人資料包為響應資料包。

SYN:為1代表傳送端希望雙方建立同步連線,表示主動連線對方

FIN:為1代表傳送結束。

        192.168.0.0/255.255.255.0就是屬於網路地址,

        192.168.0.255/255.255.255.0 就屬於廣播地址

         Host_ID同時為0表示網路地址(Network_IP)

         Net_ID同時為1表示廣播地址(BroadcastIP)

IPV4中兩種IP類別:

            Public IP:公共IP,經由InterNIC統一規劃的IP,只有這種IP才可連結到Internet

            Private IP:私有IP或保留IP,不能直接連上Internet的IP,主要用於區域網絡內的主機連結規劃

私有IP網段:

                      Class A:10.0.0.0/8~10.255.255.255/8      移動  

                      Class B:172.16.0.0/16~172.31.255.255/16    CIDR格式:172.16.0.0/12   學校

                      Class C:192.168.0.0/24~192.168.255.255/24  CIDR格式:192.168.0.0/16  家裡

              由於這三段Class的IP是預留使用的,所以並不能直接作為Internet上面的連線使用,否則會導致到處都有相同的IP。

A.B.C.D/n,表示32位IP地址的前n位與A.B.C.D的前n位相同。比如192.168.1.0/24,所有前24位與192.168.1.0相同的都是這個網段的IP,由於IP地址8位一分組,24位就是前三段,也就是192.168.1.x。符合規範的這段連續的IP段就叫做一個子網。這種子網的表示方法叫做CIDR。

路由的功能:跨網路通訊時選擇傳輸路徑。(閘道器)    路由器(router):可以轉發不是發給自己的 IP 包的裝置

答:這個認知其實是不成立的,我覺得這更多的是一種誤解。

閘道器沒必要和你的IP在一個子網。和你IP在同一個子網只會是下一跳路由