馬哥: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,包含的主要發行版分別如下:
- Debian
- Ubuntu
Linux mint - Knopix
- Ubuntu
- Slackware
- S.u.S.E
SLES-SuSE Linux Enterprise
OpenSuSE
- S.u.S.E
- Redhat
- RHEL-RedHat Enterprise Linux
CentOS-Community ENTerprise - Fedore Core
- RHEL-RedHat Enterprise Linux
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在同一個子網只會是下一跳路由