主流網(wǎng)站風(fēng)格精品成品網(wǎng)站入口
Day1:Linux發(fā)展史與安裝
一、Linux發(fā)展史
1、Linux前身-Unix
1968年 Multics項目
MIT、Bell實驗室、美國通用電氣有限公司走到了一起,致力于開發(fā)Multics項目。到后期由于開發(fā)進度不是很好,MIT和Bell實驗室相繼離開這個項目的開發(fā),最終導(dǎo)致項目擱淺。
1970年(Unix元年,時間戳) Unix誕生
當時在開發(fā)Multics項目的時候,實驗室中有一個開發(fā)成員開發(fā)了一款游戲(travel space:遨游太空),因為兩個實驗室相繼離開項目開發(fā),導(dǎo)致這名開發(fā)人員沒法玩游戲,后來他提議組織人員重新在Multics項目之上重新的開發(fā),也就出現(xiàn)了1970年的Unix。當時Unix操作系統(tǒng)是使用的匯編語言(機器語言)開發(fā)的。
1973年 用C語言重寫Unix
因為匯編語言有一個最大的局限性:對于計算機硬件過于依賴。導(dǎo)致移植性不好,所以后期在1973年使用了C語言對其進行重新開發(fā)。
1975年 Bell實驗室允許大學(xué)使用Unix。
1975年,bell實驗室允許大學(xué)使用Unix操作系統(tǒng)用于教學(xué)作用,而不允許用于商業(yè)用途。
2、Linux誕生
人物 Linus
Linux的開發(fā)作者,Linux之父,李納斯·托瓦茲。Linux誕生時是荷蘭在校大學(xué)生。
1991年 0.0.1版本
李納斯當時學(xué)校使用的就是Unix操作系統(tǒng),然后其對系統(tǒng)的底層代碼進行了修改,放到了學(xué)校為學(xué)生開放的網(wǎng)站上,原先他把文件命名寫成了Linus’s Unix,后期網(wǎng)絡(luò)管理發(fā)現(xiàn)之后覺得這個名字不好,自己手動的將名字改成Linux。隨后其他同學(xué)下載之后發(fā)現(xiàn)這個版本還是挺好用的,隨后都把自己代碼貢獻給李納斯。
1992年 0.0.2版本
1994年 1.0版本
2003年 2.6版本
上述所提及的版本號并不是分支版本,而是指Linux的內(nèi)核版本。
3、開源文化
Linux是開源的操作系統(tǒng)。所謂開源就是指開放源代碼。
人 物 Stallman 斯特曼,開源文化的倡導(dǎo)人。
1983年 GNU計劃
1985年 FSF基金會
1990年 Emacs、GCC(c語言的編譯器)、程序庫
1991年 Stallman去找Linus,商談讓Linux加入其開源計劃(GNU計劃)
1992年 GNU/Linux
4、Linux系統(tǒng)特點
開放性(開源)、多用戶、多任務(wù)、良好的用戶界面、優(yōu)異的性能與穩(wěn)定性
多用戶多任務(wù):
單用戶:一個用戶,在登錄計算機(操作系統(tǒng)),只能允許同時登錄一個用戶;
單任務(wù):一個任務(wù),允許用戶同時進行的操作任務(wù)數(shù)量;
多用戶:多個用戶,在登錄計算機(操作系統(tǒng)),允許同時登錄多個用戶進行操作;
多任務(wù):多個任務(wù),允許用戶同時進行多個操作任務(wù);
Windows屬于:單用戶、多任務(wù)。
Linux屬于:多用戶、多任務(wù)。
5、Linux分支
分支:Linux分支有很多,現(xiàn)在比較有名的ubuntu、debian、centos(Community Enterprise Operating System)、redhat、suse等等。
二、Linux系統(tǒng)的安裝
1、安裝方式
目前安裝操作系統(tǒng)方式有2種:真機安裝、虛擬機安裝。
真機安裝:使用真實的電腦進行安裝,像安裝windows操作系統(tǒng)一樣,真機安裝的結(jié)果就是替換掉當前的windows操作系統(tǒng);
虛擬機安裝:通過一些特定的手段,來進行模擬安裝,并不會影響當前計算機的真實操作系統(tǒng);
如果是學(xué)習(xí)或者測試使用,強烈建議使用虛擬機安裝方式。
2、虛擬機軟件(了解)
什么是虛擬機?
虛擬機,有些時候想模擬出一個真實的電腦環(huán)境,礙于使用真機安裝代價太大,因此而誕生的一款可以模擬操作系統(tǒng)運行的軟件。
虛擬機目前有2個比較有名的產(chǎn)品:vmware出品的vmware workstation、oracle 出品的virtual Box。
3、虛擬機的安裝
3.1、VMware Workstation的安裝
①打開安裝程序

②進行下一步開始安裝

③同意許可協(xié)議

④根據(jù)需要決定是否需要更改軟件的安裝位置

點擊下一步:

⑤用戶體驗設(shè)置
⑥快捷方式創(chuàng)建的步驟

⑦點擊安裝按鈕

⑧點擊完成
⑨最重要的地方,在安裝完之后需要檢查,檢查虛擬機軟件是否有安裝2個虛擬網(wǎng)卡

如果沒有這2個網(wǎng)卡的話,則會影響后期windows系統(tǒng)與虛擬機其中操作系統(tǒng)之間的相互通信(比如共享網(wǎng)絡(luò)、文件傳輸?shù)?#xff09;。
3.2、Virtual Box的安裝
①運行安裝程序

②點擊下一步
③選擇性更改安裝的位置
④安裝的選項設(shè)置
⑤斷網(wǎng)警告,點擊是即可
⑤點擊安裝按鈕
⑥完成
⑦檢查是否有對應(yīng)的虛擬網(wǎng)卡存在

兩個軟件安裝完成之后在桌面上都有對應(yīng)的快捷方式
4、Linux版本的選擇
版本選擇:CentOS 6.5 【鏡像一般都是xxx.iso文件】
問題:為什么不選擇最新版的7.x版本?
6.x目前依然是主流
6.x的各種系統(tǒng)操作模式是基礎(chǔ)
7.x實際上也支持大多數(shù)6.x的操作形式
官網(wǎng):https://www.centos.org/
從官網(wǎng)下載得到的鏡像文件
5、新建虛擬機
5.1、使用VMware Workstation(重點)
①點擊“文件”菜單,選擇“新建虛擬機…”選項,選擇“自定義”點擊下一步

②選擇兼容性,默認即可,直接下一步

③選擇鏡像文件的時候選擇“稍后….”,點擊下一步

④選擇需要安裝的操作系統(tǒng)

⑤選擇虛擬機的名稱(名稱將會后期出現(xiàn)在左側(cè))和設(shè)置虛擬系統(tǒng)的安裝位置

⑥cpu設(shè)置

⑦分配內(nèi)存

⑧選擇網(wǎng)絡(luò)類型,選擇nat即可
NAT:配置好之后windows即可和虛擬機進行互相通信,但是教室內(nèi)的其他同學(xué)是訪問不了的,只能自己可以訪問虛擬機中的操作系統(tǒng);
橋接:配置好之后其他同學(xué)也可以訪問你的虛擬機操作系統(tǒng);

⑨后續(xù)默認的步驟,直接下一步
⑩點擊完成
5.2、使用Virtual Box(了解)
①點擊左上角的新建按鈕
②選擇操作系統(tǒng),由于centos在列表中是沒有的,所以選擇centos對應(yīng)的主線redhat 32位
③選擇內(nèi)存大小
④創(chuàng)建磁盤,默認即可
⑤選擇磁盤類型,默認即可
⑥選擇磁盤大小的分配方式,方式為動態(tài)分配即可
⑦設(shè)置磁盤的位置和大小確認
6、Linux操作系統(tǒng)安裝
6.1、使用VMware workstation進行安裝
a. 由于之前沒有指定iso鏡像文件,因此此處需要先指定系統(tǒng)鏡像文件

b. 運行此虛擬機
注意:如果開機之后鼠標點進去虛擬機出不來,則可以按下組合快捷鍵“ctrl+alt”。
如果啟動之后出現(xiàn)類似提示框(不是錯誤框)則勾選不再提示,并且確定即可:
如果在啟動時候出現(xiàn)下述錯誤,則說明電腦沒有開啟cpu的虛擬化,如果需要開啟,則需要重啟計算機,并且在開啟的時候進入主板的BIOS設(shè)置開啟虛擬化,然后保存設(shè)置重啟電腦:
c. 選擇升級/安裝已經(jīng)存在的系統(tǒng)(通過↑/↓方向鍵)按下回車
d. 在檢測到光盤(disc)之后選擇跳過完整性檢測直接進行安裝
隨后提示不支持的硬件,忽略直接下一步
e. 點擊下一步
f. 選擇在安裝過程中使用的語言
g. 選擇鍵盤類型,美國式英語
h. 選擇存儲設(shè)備類型
i. 對磁盤進行空白盤的初始化操作,選擇“是,忽略所有的數(shù)據(jù)”
j. 設(shè)置網(wǎng)卡自動連接,依次應(yīng)用– 關(guān)閉– 下一步
k. 設(shè)置時區(qū),默認亞洲/上海
l. 設(shè)置密碼,設(shè)置好了之后下一步
m. 使用全部的磁盤空間來安裝Linux系統(tǒng),點擊下一步
n. 選擇安裝的Linux類型
o. 選擇開發(fā)– 開發(fā)工具,前面復(fù)選框√,點擊下一步
p. 等待軟件包的安裝
等待完成,點擊重新引導(dǎo)
q. 重新引導(dǎo)之后點擊“前進”
r. 在協(xié)議許可界面選擇同意,然后點擊前進
s. 創(chuàng)建普通用戶帳號(可選),然后點擊前進
t. 時間設(shè)置,設(shè)置好之后前進
u. 關(guān)于kdump,之后點擊完成
v. 登錄界面
如果需要使用非列出的用戶進行登錄則點擊其他,否則雙擊列出的用戶名即可,隨后輸入密碼。
w. 使用root帳號登錄之后的提示
x. 看到的桌面

6.2、使用virtual Box安裝Linux(了解)
a. 選擇需要安裝的系統(tǒng)鏡像
b. 啟動虛擬機
注意:如果鼠標在虛擬機中想退出到windows,則需要按下ctrl+alt組合鍵(空格右側(cè)的)
c. 后續(xù)全部操作按照上面6.1章節(jié)中的步驟繼續(xù)安裝即可。
PS6.3PS:ubuntu
安裝ubuntu也是一樣的操作,直接下一步下一步,內(nèi)存選2G、普通用戶磁盤空間選30/40G就差不多了。
7、終端
問題:在目前的桌面系統(tǒng)中,如果需要關(guān)機可以通過“系統(tǒng)”“關(guān)機”進行關(guān)機,那么后期服務(wù)器都是命令行模式的,屆時這種方式將不好用,那會要怎么關(guān)機呢?
答:可以通過命令行方式進行關(guān)機。命令的輸入需要在終端中進行輸入。
所謂終端,其實類似于windows下cmd命令行模式。在終端中可以輸入需要執(zhí)行的一些指令,同樣可以通過終端進行關(guān)機(注意:以后在工作中很少會去使用關(guān)機命令,會使用重啟比較多)。
終端的形式:

終端組成部分:

如何使用終端命令進行關(guān)機?
在Linux中關(guān)機命令有以下幾個:shutdown -h now(正常關(guān)機)、halt(關(guān)閉內(nèi)存)、init 0
8、使用VMware備份操作系統(tǒng)
在vm中備份方式有2種:快照、克隆。
快照:又稱還原點,就是保存在拍快照時候的系統(tǒng)的狀態(tài)(包含了所有的內(nèi)容),在后期的時候隨時可以恢復(fù)?!?span id="vxwlu0yf4" class="kdocs-bold" style="font-weight:bold;">側(cè)重在于短期備份,需要頻繁備份的時候可以使用快照,做快照的時候虛擬的操作系統(tǒng)一般處于開啟狀態(tài)】
①在菜單“虛擬機”-“快照”-“拍攝快照”
輸入相關(guān)信息,點擊拍攝快照
②搞事情
③使用快照恢復(fù)搞事情之前的狀態(tài)
路徑:虛擬機– 快照– 快照管理器
恢復(fù)好之后的狀態(tài):
克隆:就是復(fù)制的意思?!?span id="vxwlu0yf4" class="kdocs-bold" style="font-weight:bold;">側(cè)重長期備份,做克隆的時候是必須得關(guān)閉】
路徑:先關(guān)機– 右鍵需要克隆的虛擬機– 管理– 克隆
上述的名稱和位置與之前新建虛擬機的時候是一樣的含義。
等待克隆完成
克隆好的服務(wù)器相關(guān)密碼帳號等信息與被克隆的系統(tǒng)一致。
三、Linux系統(tǒng)的文件
1、文件與文件夾(目錄)
什么是文件?
一般都是一個獨立的東西,可以通過一些特定的工具進行打開,并且其中不能在包含除了文字以外的東西。例如:

什么是文件夾?
可以在其中包含其他文件的東西。

為什么先講文件?
1:日常運維工作中,有近一半以上的工作內(nèi)容精力其實都是對文件的操作。
2: Linux 本身也是一個基于文件形式表示的操作系統(tǒng)。
Linux一切皆文件。
①在windows是文件的,在Linux下同樣也是文件;
②在windows不是文件的,在Linux下也是以文件的形式存儲的;
日常學(xué)習(xí)中和日常工作中,對于文件的操作的都有哪些種類?
創(chuàng)建文件、編輯文件、保存文件、關(guān)閉文件、重命名文件、刪除文件、恢復(fù)文件。
2、Linux系統(tǒng)的文件目錄結(jié)構(gòu)

目錄結(jié)構(gòu):
Bin:全稱binary,含義是二進制。該目錄中存儲的都是一些二進制文件,文件都是可以被運行的。
Dev:該目錄中主要存放的是外接設(shè)備,例如盤、其他的光盤等。在其中的外接設(shè)備是不能直接被使用的,需要掛載(類似windows下的分配盤符)。
Etc:該目錄主要存儲一些配置文件。
Home:表示“家”,表示除了root用戶以外其他用戶的家目錄,類似于windows下的User/用戶目錄。
Proc:process,表示進程,該目錄中存儲的是Linux運行時候的進程。
Root:該目錄是root用戶自己的家目錄。
Sbin:全稱super binary,該目錄也是存儲一些可以被執(zhí)行的二進制文件,但是必須得有super權(quán)限的用戶才能執(zhí)行。
Tmp:表示“臨時”的,當系統(tǒng)運行時候產(chǎn)生的臨時文件會在這個目錄存著。
Usr:存放的是用戶自己安裝的軟件。類似于windows下的program files。
Var:存放的程序/系統(tǒng)的日志文件的目錄。
Mnt:當外接設(shè)備需要掛載的時候,就需要掛載到mnt目錄下。
Day2:Linux的基本指令
一、指令與選項
什么是Linux的指令?
指在Linux終端(命令行)中輸入的內(nèi)容就稱之為指令。

一個完整的指令的標準格式:Linux通用的格式
#指令主體(空格)[選項](空格)[操作對象]
一個指令可以包含多個選項
操作對象也可以是多個
例如:需要讓張三同學(xué)幫忙去樓下小賣鋪買一瓶農(nóng)夫山泉水和清風(fēng)餐巾紙,在這個指令中“買東西”是指令的主體,買的水和餐巾紙是操作的對象,農(nóng)夫山泉、清風(fēng)是操作的選項。
二、基礎(chǔ)指令(重點)
1、ls指令
含義:ls (list)
用法1:#ls
含義:列出當前工作目錄下的所有文件/文件夾的名稱

用法2:#ls 路徑
含義:列出指定路徑下的所有文件/文件夾的名稱
關(guān)于路徑(重要):
路徑可以分為兩種:相對路徑、絕對路徑。
相對路徑:相對首先得有一個參照物(一般就是當前的工作路徑);
相對路徑的寫法:在相對路徑中通常會用到2個符號“./”【表示當前目錄下】、“../”【上一級目錄下】。
絕對路徑:絕對路徑不需要參照物,直接從根“/”開始尋找對應(yīng)路徑;

用法3:#ls 選項 路徑
含義:在列出指定路徑下的文件/文件夾的名稱,并以指定的格式進行顯示。
常見的語法:
#ls-l 路徑
#ls-la 路徑
選項解釋:
-l:表示list,表示以詳細列表的形式進行展示
-a:表示顯示所有的文件/文件夾(包含了隱藏文件/文件夾)

上述列表中的第一列字符表示文檔的類型,其中“-”表示改行對應(yīng)的文檔類型為文件,“d”表示文檔類型為文件夾。

在Linux中隱藏文檔一般都是以“.”開頭。
用法4:#ls -lh 路徑
含義:列出指定路徑下的所有文件/文件夾的名稱,以列表的形式并且在顯示文檔大小的時候以可讀性較高的形式顯示
參數(shù)含義:

2、pwd指令
用法:#pwd (print working directory,打印當前工作目錄)

3、cd指令
命令:#cd (change directory,改變目錄)
作用:用于切換當前的工作目錄的
語法:#cd 路徑
案例:當前在“/”下,需要使用絕對路徑切換到/usr/local。

案例:當前在/usr/local下,需要使用相對路徑切換目錄到home目錄下的Linux123用戶家目錄中去。

補充:
在Linux中有一個特殊的符號“~”,表示當前用戶的家目錄。
切換的方式:#cd ~

4、mkdir指令
指令:mkdir (make directory,創(chuàng)建目錄)
語法1:#mkdir 路徑 【路徑,可以是文件夾名稱也可以是包含名稱的一個完整路徑】
案例:在當前路徑下創(chuàng)建出目錄“yunweihenniux”

注意:ls列出的結(jié)果顏色說明,其中藍色的名稱表示文件夾,黑色的表示文件,綠色的其權(quán)限為擁有所有權(quán)限。
案例:在指定路徑下創(chuàng)建出一個文件夾“yunweihenniux”

語法2:#mkdir -p路徑
含義:當一次性創(chuàng)建多層不存在的目錄的時候,添加-p參數(shù),否則會報錯

語法3:#mkdir 路徑1 路徑2 路徑3 …. 【表示一次性創(chuàng)建多個目錄】

5、touch指令
指令:touch
作用:創(chuàng)建文件
語法:#touch 文件路徑 【路徑可以是直接的文件名也可以是路徑】
案例:使用touch來在當前路徑下創(chuàng)建一個文件,命名為Linux.txt

案例:使用touch來同時創(chuàng)建多個文件

案例:使用touch來在“Linux123”用戶的家目錄中創(chuàng)建文件,Linux.txt

6、cp指令
指令:cp (copy,復(fù)制)
作用:復(fù)制文件/文件夾到指定的位置
語法:#cp 被復(fù)制的文檔路徑 文檔被復(fù)制到的路徑
案例:使用cp命令來復(fù)制一個文件

注意:Linux在復(fù)制過程中是可以重新對新位置的文件進行重命名的,但是如果不是必須的需要,則建議保持前后名稱一致。
案例:使用cp命令來復(fù)制一個文件夾
注意:當使用cp命令進行文件夾復(fù)制操作的時候需要添加選項“-r”【-r表示遞歸復(fù)制】,否則目錄將被忽略

7、mv指令
指令:mv (move,移動,剪切)
作用:移動文檔到新的位置
語法:#mv 需要移動的文檔路徑 需要保存的位置路徑
確認:移動之后原始的文件還在不在原來的位置?原始文件是不在原始位置的
案例:使用mv命令移動一個文件

案例:使用mv命令移動一個文件夾

補充:在Linux中重命名的命令也是mv,語法和移動語法一樣。

8、rm指令
指令:rm (remove,移除、刪除)
作用:移除/刪除文檔
語法:#rm 選項需要移除的文檔路徑
選項:
-f:force,強制刪除,不提示是否刪除
-r:表示遞歸
案例:刪除一個文件

在刪除的時候如果不帶選項,會提示是否刪除,如果需要確認則輸入“y/yes”,否則輸入“n/no”按下回車。
注意:如果在刪除的時候不想頻繁的確認,則可以在指令中添加選項“-f”,表示force(強制)。

案例:刪除一個文件夾

注意:刪除一個目錄的時候需要做遞歸刪除,并且一般也不需要進行刪除確認詢問,所以移除目錄的時候一般需要使用-rf選項。
案例:刪除多個文檔

案例:要刪除一個目錄下有公共特性的文檔,例如都以Linux開頭

其中*稱之為通配符,意思表示任意的字符,Linux*,則表示只要文件以Linux開頭,后續(xù)字符則不管。
9、vim指令
指令:vim (vim是一款文本編輯器)
語法:#vim 文件的路徑
作用:打開一個文件(可以不存在,也可以存在)
案例:使用vim來打開文件
退出打開的文件:在沒有按下其他命令的時候,按下shift+英文冒號,輸入q,按下回車即可

10、輸出重定向
一般命令的輸出都會顯示在終端中,有些時候需要將一些命令的執(zhí)行結(jié)果想要保存到文件中進行后續(xù)的分析/統(tǒng)計,則這時候需要使用到的輸出重定向技術(shù)。
>:覆蓋輸出,會覆蓋掉原先的文件內(nèi)容
>>:追加輸出,不會覆蓋原始文件內(nèi)容,會在原始內(nèi)容末尾繼續(xù)添加
語法:#正常執(zhí)行的指令> / >> 文件的路徑
注意:文件可以不存在,不存在則新建
案例:使用覆蓋重定向,保存ls -la 的執(zhí)行結(jié)果,保存到當前目錄下的ls.txt

案例:使用追加重定向,保存ls -la的執(zhí)行結(jié)果到ls.txt中

11、cat指令
作用1:cat有直接打開一個文件的功能。
語法1:#cat 文件的路徑

作用2:cat還可以對文件進行合并
語法2:#cat 待合并的文件路徑1 待合并的文件路徑2 …. 文件路徑n > 合并之后的文件路徑
例如,合并3個文件,并存到一個文件中【配合輸出重定向使用】

三、進階指令(重點)
1、df指令
作用:查看磁盤的空間
語法:#df -h -h表示以可讀性較高的形式展示大小

2、free指令
作用:查看內(nèi)存使用情況
語法:#free -m -m表示以mb為單位查看

剩余的真實可以用的內(nèi)存為1665mb。
Swap:用于臨時內(nèi)存,當系統(tǒng)真實內(nèi)存不夠用的時候可以臨時使用磁盤空間來充當內(nèi)存。
3、head指令
作用:查看一個文件的前n行,如果不指定n,則默認顯示前10行。
語法:#head -n 文件路徑 【n表示數(shù)字】

4、tail指令
作用1:查看一個文件的未n行,如果n不指定默認顯示后10行
語法:#tail -n 文件的路徑 n同樣表示數(shù)字

作用2:可以通過tail指令來查看一個文件的動態(tài)變化內(nèi)容【變化的內(nèi)容不能是用戶手動增加的】
語法:#tail -f 文件路徑
該命令一般用于查看系統(tǒng)的日志比較多。
5、less指令
作用:查看文件,以較少的內(nèi)容進行輸出,按下輔助功能鍵(數(shù)字+回車、空格鍵+上下方向鍵)查看更多
語法:#less 需要查看的文件路徑

在退出的只需要按下q鍵即可。
6、wc指令
作用:統(tǒng)計文件內(nèi)容信息(包含行數(shù)、單詞數(shù)、字節(jié)數(shù))
語法:#wc -lwc 需要統(tǒng)計的文件路徑
-l:表示lines,行數(shù)
-w:表示words,單詞數(shù) 依照空格來判斷單詞數(shù)量
-c:表示bytes,字節(jié)數(shù)

7、date指令(重點)
作用:表示操作時間日期(讀取、設(shè)置)
語法1:#date 輸出的形式:2018年3月24日星期六15:54:28
語法2:#date +%F (等價于#date “+%Y-%m-%d” ) 輸出形式:2018-03-24
語法3:#date “+%F %T” 引號表示讓“年月日與時分秒”成為一個不可分割的整體
等價操作#date “+%Y-%m-%d%H:%M:%S”
輸出的形式:2018-03-24 16:01:00
語法4:獲取之前或者之后的某個時間(備份)
#date -d “-1 day” “+%Y-%m-%d %H:%M:%S”
符號的可選值:+(之后)或者- (之前)
單位的可選值:day(天)、month(月份)、year(年)
%F:表示完整的年月日
%T:表示完整的時分秒
%Y:表示四位年份
%m:表示兩位月份(帶前導(dǎo)0)
%d:表示日期(帶前導(dǎo)0)
%H:表示小時(帶前導(dǎo)0)
%M:表示分鐘(帶前導(dǎo)0)
%S:表示秒數(shù)(帶前導(dǎo)0)
8、cal指令
作用:用來操作日歷的
語法1:#cal 等價于 #cal -1 直接輸出當前月份的日歷
語法2:#cal -3 表示輸出上一個月+本月+下個月的日歷
語法3:#cal -y 年份 表示輸出某一個年份的日歷
9、clear/ctrl + L指令
作用:清除終端中已經(jīng)存在的命令和結(jié)果(信息)。
語法:clear 或者快捷鍵:ctrl + L
需要注意的是,該命令并不是真的清除了之前的信息,而是把之前的信息的隱藏到了最上面,通過滾動條繼續(xù)查看以前的信息。
10、管道(重要)
管道符:|
作用:管道一般可以用于“過濾”,“特殊”,“擴展處理”。
語法:管道不能單獨使用,必須需要配合前面所講的一些指令來一起使用,其作用主要是輔助作用。
①過濾案例(100%使用):需要通過管道查詢出根目錄下包含“y”字母的文檔名稱。
#ls /| grep y
針對上面這個命令說明:
①以管道作為分界線,前面的命令有個輸出,后面需要先輸入,然后再過濾,最后再輸出,通俗的講就是管道前面的輸出就是后面指令的輸入;
②grep指令:主要用于過濾
②特殊用法案例:通過管道的操作方法來實現(xiàn)less的等價效果(了解)
之前通過less查看一個文件,可以#less 路徑
現(xiàn)在通過管道還可以這么:#cat 路徑|less
③擴展處理:請使用學(xué)過的命令,來統(tǒng)計某個目錄下的文檔的總個數(shù)?
答:#ls / | wc -l
Day3:Linux的基本指令(2)
一、高級指令
1、hostname指令
作用:操作服務(wù)器的主機名(讀取、設(shè)置)
語法1:#hostname 含義:表示輸出完整的主機名
語法2:#hostname -f 含義:表示輸出當前主機名中的FQDN(全限定域名)

2、id指令
作用:查看一個用戶的一些基本信息(包含用戶id,用戶組id,附加組id…),該指令如果不指定用戶則默認當前用戶。
語法1:#id 默認顯示當前執(zhí)行該命令的用戶的基本信息
語法2:#id 用戶名 顯示指定用戶的基本信息

驗證上述信息是否正確?
驗證用戶信息:通過文件/etc/passwd
驗證用戶組信息:通過文件/etc/group

3、whoami指令
作用:“我是誰?”顯示當前登錄的用戶名,一般用于shell腳本,用于獲取當前操作的用戶名方便記錄日志。
語法:#whoami

4、ps -ef指令(重點)
指令:ps
作用:主要是查看服務(wù)器的進程信息
選項含義:
-e:等價于“-A”,表示列出全部的進程
-f:顯示全部的列(顯示全字段)
執(zhí)行結(jié)果:

列的含義:
UID:該進程執(zhí)行的用戶id;
PID:進程id;
PPID:該進程的父級進程id,如果一個程序的父級進程找不到,該程序的進程稱之為僵尸進程(parent process ID);
C:Cpu的占用率,其形式是百分數(shù);
STIME:進行的啟動時間;
TTY:終端設(shè)備,發(fā)起該進程的設(shè)備識別符號,如果顯示“?”則表示該進程并不是由終端設(shè)備發(fā)起;
TIME:進程的執(zhí)行時間;
CMD:該進程的名稱或者對應(yīng)的路徑;
案例:(100%使用的命令)在ps的結(jié)果中過濾出想要查看的進程狀態(tài)
#ps-ef|grep “進程名稱”

再例如查看火狐瀏覽器的進程:

5、top指令(重點)
作用:查看服務(wù)器的進程占的資源(100%使用)
語法:
進入命令:#top (動態(tài)顯示)
退出命令:按下q鍵
輸出的結(jié)果:

表頭含義:
PID:進程id;
USER:該進程對應(yīng)的用戶;
PR:優(yōu)先級;
VIRT:虛擬內(nèi)存;
RES:常駐內(nèi)存;
SHR:共享內(nèi)存;
計算一個進程實際使用的內(nèi)存 = 常駐內(nèi)存(RES)- 共享內(nèi)存(SHR)
S:表示進程的狀態(tài)status(sleeping,其中S表示睡眠,R表示運行);
%CPU:表示CPU的占用百分比;
%MEM:表示內(nèi)存的占用百分比;
TIME+:執(zhí)行的時間;
COMMAND:進程的名稱或者路徑;
在運行top的時候,可以按下方便的快捷鍵:
M:表示將結(jié)果按照內(nèi)存(MEM)從高到低進行降序排列;
P:表示將結(jié)果按照CPU使用率從高到低進行降序排列;
1:當服務(wù)器擁有多個cpu的時候可以使用“1”快捷鍵來切換是否展示顯示各個cpu的詳細信息;
6、du -sh指令
作用:查看目錄的真實大小
語法:#du -sh 目錄路徑
選項含義:
-s:summaries,只顯示匯總的大小
-h:表示以高可讀性的形式進行顯示
案例:統(tǒng)計“/root/yunweihenniux”目錄的實際大小

案例:統(tǒng)計“/etc”目錄實際大小

7、find指令
作用:用于查找文件(其參數(shù)有55個之多)
語法:#find 路徑范圍 選項 選項的值
選項:
-name:按照文檔名稱進行搜索(支持模糊搜索)
-type:按照文檔的類型進行搜索
文檔類型:“-”表示文件(在使用find的時候需要用f來替換),“d”表示文件夾
案例:使用find來搜索httpd.conf
#find / -name httpd.conf

案例:搜索etc目錄下所有的conf后綴文件
#find /etc -name *.conf

案例:使用find來搜索/etc/sane.d/目錄下所有的文件
#find /etc/sane.d/ -type f

案例:使用find來搜索/etc/目錄下所有的文件夾
#find /etc -type d

8、service指令(重點)
作用:用于控制一些軟件的服務(wù)啟動/停止/重啟
語法:#service 服務(wù)名 start/stop/restart
例如:需要啟動本機安裝的Apache(網(wǎng)站服務(wù)器軟件),其服務(wù)名httpd
#service httpd start

通過ps命令來檢查httpd服務(wù)是否啟動:

9、kill指令(重點)
作用:表示殺死進程 (當遇到僵尸進程或者出于某些原因需要關(guān)閉進程的時候)
語法:#kill 進程PID (語法需要配合ps一起使用)
案例:需要kill掉Apache的進程

與kill命令作用相似但是比kill更加好用的殺死進程的命令:killall
語法:#killall 進程名稱

10、ifconfig指令(重點)
作用:用于操作網(wǎng)卡相關(guān)的指令。
簡單語法:#ifconfig (獲取網(wǎng)卡信息)

Eth0表示Linux中的一個網(wǎng)卡,eth0是其名稱。Lo(loop,本地回還網(wǎng)卡,其ip地址一般都是127.0.0.1)也是一個網(wǎng)卡名稱。

注意:inet addr就是網(wǎng)卡的ip地址。
11、reboot指令
作用:重新啟動計算機
語法1:#reboot 重啟
語法2:#reboot -w 模擬重啟,但是不重啟(只寫關(guān)機與開機的日志信息)
12、shutdown指令
作用:關(guān)機 (慎用)
語法1:#shutdown -h now “關(guān)機提示” 或者 #shutdown -h 15:25 “關(guān)機提示”
案例:設(shè)置Linux系統(tǒng)關(guān)機時間在12:00

如果想要取消關(guān)機計劃的話,則可以按照以下方式去嘗試:
①針對于centos7.x之前的版本:ctrl+c
②針對于centos7.x(包含)之后的版本:#shutdown -c
除了shutdown關(guān)機以外,還有以下幾個關(guān)機命令:
#init0
#halt
#poweroff
13、uptime指令
作用:輸出計算機的持續(xù)在線時間(計算機從開機到現(xiàn)在運行的時間)
語法:#uptime

14、uname指令
作用:獲取計算機操作系統(tǒng)相關(guān)信息
語法1:#uname 獲取操作系統(tǒng)的類型
語法2:#uname -a all,表示獲取全部的系統(tǒng)信息(類型、全部主機名、內(nèi)核版本、發(fā)布時間、開源計劃)

15、netstat -tnlp指令
作用:查看網(wǎng)絡(luò)連接狀態(tài)
語法:#netstat -tnlp

選項說明:
-t:表示只列出tcp協(xié)議的連接;
-n:表示將地址從字母組合轉(zhuǎn)化成ip地址,將協(xié)議轉(zhuǎn)化成端口號來顯示;
-l:表示過濾出“state(狀態(tài))”列中其值為LISTEN(監(jiān)聽)的連接;
-p:表示顯示發(fā)起連接的進程pid和進程名稱;
16、man指令
作用:manual,手冊(包含了Linux中全部命令手冊,英文)
語法:#man 命令 (退出按下q鍵)
案例:通過man命令查詢cp指令的用法
#man cp
二、練習(xí)題
1、如何通過命令行重啟linux操作系統(tǒng)? #reboot
2、如何在命令行中快速刪除光標前/后的內(nèi)容? 前:ctrl + u 后:ctrl + k
3、如何刪除/tmp下所有A開頭的文件? #rm-f /tmp/A*
4、系統(tǒng)重要文件需要備份,如何把/etc/passwd備份到/tmp目錄下?
#cp /etc/passwd /tmp/
5、如何查看系統(tǒng)最后創(chuàng)建的3個用戶?
#tail -3 /etc/passwd
6、什么命令可以統(tǒng)計當前系統(tǒng)中一共有多少賬戶?
#wc -l /etc/passwd #cat /etc/passwd|wc -l
7、如何創(chuàng)建/tmp/test.conf文件?
#touch /tmp/test.conf
8、如何通過vim編輯打開/tmp/test.conf?
#vim /tmp/test.conf
9、如何查看/etc/passwd的頭3行和尾3行?
#head -3 /etc/passwd
#tail -3 /etc/passwd
10、如何一次性創(chuàng)建目錄/text/1/2/3/4?
#mkdir -p /text/1/2/3/4
11、如何最快的返回到當前賬戶的家目錄?
#cd ~ #cd
12、如何查看/etc所占的磁盤空間?
#du -sh /etc
13、如何刪除/tmp下所有的文件?
#rm -rf /tmp/*
14、嘗試啟動Apache的服務(wù),并且檢查是否啟動成功。
#service httpd start
#ps -ef|grep httpd
15、使用已學(xué)命令殺死Apache的進程。
#killall httpd
Day4:編輯器之神——vim編輯器
一、vi介紹
Vi編輯器是所有Unix及Linux系統(tǒng)下標準的編輯器,類似于windows系統(tǒng)下的notepad(記事本)編輯器,由于在Unix及Linux系統(tǒng)的任何版本,Vi編輯器是完全相同的,因此可以在其他任何介紹vi的地方都能進一步了解它,Vi也是Linux中最基本的文本編輯器,學(xué)會它后,我們將在Linux的世界里暢行無阻,尤其是在終端中。
關(guān)于vim:
vi和vim都是Linux中的編輯器,不同的是,vim比較高級,可以視為vi的升級版本。vi使用于文本編輯,但是vim更適用于coding(寫代碼的)。
Vim重點是光標的移動,模式切換,刪除,查找,替換,復(fù)制,粘貼,撤銷命令的使用。
二、vim三種模式(重點)
Vim中存在三種模式(大眾的認知):命令模式、編輯模式(輸入模式)、末行模式(尾行模式)。
命令模式:在該模式下是不能對文件直接編輯,可以輸入快捷鍵進行一些操作(刪除行,復(fù)制行,移動光標,粘貼等等)【打開文件之后默認進入的模式】;
編輯模式:在該模式下可以對文件的內(nèi)容進行編輯;
末行模式:可以在末行輸入命令來對文件進行操作(搜索、替換、保存、退出、撤銷、高亮等等);
Vim的打開文件的方式(4種,要求掌握的就前三種):
#vim 文件路徑 作用:打開指定的文件
#vim +數(shù)字 文件的路徑 作用:打開指定的文件,并且將光標移動到指定行
#vim +/關(guān)鍵詞 文件的路徑 作用:打開指定的文件,并且高亮顯示關(guān)鍵詞
#vim 文件路徑1 文件路徑2 文件路徑3 作用:同時打開多個文件
重點:先復(fù)制出一個/etc/passwd文件,復(fù)制當前家目錄下(千萬不要在etc下直接修改!!!)

后續(xù)一切vim命令都是基于/root/passwd文件進行操作。
退出方式:輸入:q按下回車即可

三、命令模式
注意:該模式是打開文件的第一個看到的模式(打開文件即可進入)
1、光標移動
①光標移動到行首
按鍵:shift + 6 或^(T字母上面的6,不要按小鍵盤的6)
②光標移動到行尾
按鍵:shift + 4 或$(R字母的左上角的4,不是小鍵盤的4)
③光標移動到首行
按鍵:gg
④光標移動到末行
按鍵:G
⑤翻屏
向上翻屏:按鍵ctrl + b (before) 或 PgUp
向下翻屏:按鍵ctrl + f (after) 或 PgDn
2、復(fù)制操作
①復(fù)制光標所在行
按鍵:yy
粘貼:在想要粘貼的地方按下p鍵
②以光標所在行為準(包含當前行),向下復(fù)制指定的行數(shù)
按鍵:數(shù)字yy
③可視化復(fù)制
按鍵:ctrl + v(可視塊)或V(可視行)或v(可視),然后按下↑↓←→方向鍵來選中需要復(fù)制的區(qū)塊,按下y鍵進行復(fù)制,最后按下p鍵粘貼
3、剪切/刪除
①剪切/刪除光標所在行
按鍵:dd (刪除之后下一行上移)
注意:dd嚴格意義上說是剪切命令,但是如果剪切了不粘貼就是刪除的效果。
②剪切/刪除光標所在行為準(包含當前行),向下刪除/剪切指定的行
按鍵:數(shù)字dd (刪除之后下一行上移)
③剪切/刪除光標所在的當前行之后的內(nèi)容,但是刪除之后下一行不上移
按鍵:D (刪除之后當前行會變成空白行)
④可視化刪除
按鍵:ctrl + v(可視塊)或V(可視行)或v(可視),上下左右移動,按下D表示刪除選中行,d表示刪選中塊
4、撤銷/恢復(fù)
撤銷:輸入:u (不屬于命令模式) 或者 u (undo)
恢復(fù):ctrl + r 恢復(fù)(取消)之前的撤銷操作
5、擴展1:光標的快速移動
①快速將光標移動到指定的行
按鍵:數(shù)字G
②以當前光標為準向上/向下移動n行
按鍵:數(shù)字↑,數(shù)字↓
③以當前光標為準向左/向右移動n字符
按鍵:數(shù)字←,數(shù)字→
④末行模式下的快速移動方式:移動到指定的行
按鍵:輸入英文“:”,其后輸入行數(shù)數(shù)字,按下回車
四、模式間的切換(重點)

五、末行模式
進入方式:由命令模式進入,按下“:”或者“/(表示查找)”即可進入
退出方式:
a.按下esc
b.連按2次esc鍵
c.刪除末行全部輸入字符
①保存操作(write)
輸入:“:w” 保存文件
輸入:“:w 路徑” 另存為
②退出(quit)
輸入:“:q” 退出文件
③保存并退出
輸入:“:wq” 保存并且退出
④強制(!)
輸入:“:q!” 表示強制退出,剛才做的修改操作不做保存
⑤調(diào)用外部命令(了解)
輸入:“:!外部命令”
例如:

當外部命令執(zhí)行結(jié)束之后按下任意鍵回到vim編輯器打開的內(nèi)容

⑥搜索/查找
輸入:“/關(guān)鍵詞”
例如:我想在passwd文件中搜索“sbin”關(guān)鍵詞

在搜索結(jié)果中切換上/下一個結(jié)果:N/n (next)
如果需要取消高亮,則需要輸入:“:nohl”【no highlight】
⑦替換
:s/搜索的關(guān)鍵詞/新的內(nèi)容 替換光標所在行的第一處符合條件的內(nèi)容
:s/搜索的關(guān)鍵詞/新的內(nèi)容/g 替換光標所在行的全部符合條件的內(nèi)容
:%s/搜索的關(guān)鍵詞/新的內(nèi)容 替換整個文檔中每行第一個符合條件的內(nèi)容
:%s/搜索的關(guān)鍵詞/新的內(nèi)容/g 替換整個文檔的符合條件的內(nèi)容
%表示整個文件
g表示全局(global)
⑧顯示行號(臨時)
輸入:“:set nu”[number]
如果想取消顯示,則輸入:“:set nonu”
⑨擴展2:使用vim同時打開多個文件,在末行模式下進行切換文件
查看當前已經(jīng)打開的文件名稱:“:files”

在%a的位置有2種顯示可能
%a:a=active,表示當前正在打開的文件;
#:表示上一個打開的文件
切換文件的方式:
a. 如果需要指定切換文件的名稱,則可以輸入:“:open 已經(jīng)打開的文件名”

b. 可以通過其他命令來切換上一個文件/下一個文件
輸入:“:bn”切換到下一個文件(back next)
輸入:“:bp”切換到上一個文件(back prev)
六、編輯模式

重點看前2個進入方式:i(insert)、a(after)。
退出方式:按下esc鍵
七、實用功能
1、代碼著色

案例:首先創(chuàng)建簡單的c語言程序

如何控制著色顯示與否?
顯示:“:syntax on” syn
tax:語法
關(guān)閉顯示:“:syntax off”
2、vim中計算器的使用
當在編輯文件的時候突然需要使用計算器去計算一些公式,則此時需要用計算器,但是需要退出,vim自身集成了一個簡易的計算器。
a. 進入編輯模式
b. 按下按鍵“ctrl + R”,然后輸入“=”,此時光標會變到最后一行
c. 輸入需要計算的內(nèi)容,按下回車

八、擴展(3)
1、vim的配置(重點)
Vim是一款編輯器,編輯器也是有配置文件的。
Vim配置有三種情況:
a.在文件打開的時候在末行模式下輸入的配置(臨時的)
b.個人配置文件(~/.vimrc,如果沒有可以自行新建)
c.全局配置文件(vim自帶,/etc/vimrc)
①新建好個人配置文件之后進入編輯
②在配置文件中進行配置
比如顯示行號:set nu

配置好之后vim打開文件就會永遠顯示行號
問題:如果某個配置項,在個人配置文件與全局配置文件產(chǎn)生沖突的時候應(yīng)該以誰為準?
測試步驟:在兩個配置文件中針對同一個配置項設(shè)置不同的值
①先在全局的配置中設(shè)置不顯示行號,在個人的配置文件中設(shè)置顯示行號,觀察結(jié)果
最后顯示行號:說明以個人為準
②先在全局中配置顯示行號,在個人中設(shè)置不顯示行號,觀察結(jié)果
最后的顯示是不顯示行號,說明以個人為準
結(jié)論:如果針對同一個配置項,個人配置文件中存在,則以個人配置文件為準,如果個人配置文件中不存在這一項,則以全局配置文件為準。
2、異常退出
什么是異常退出:在編輯文件之后并沒有正常的去wq(保存退出),而是遇到突然關(guān)閉終端或者斷電的情況,則會顯示下面的效果,這個情況稱之為異常退出:

解決辦法:將交換文件(在編程過程中產(chǎn)生的臨時文件)刪除掉即可
#rm -f.passwd.swp

3、別名機制(實用)
作用:相當于創(chuàng)建一些屬于自己的自定義命令
例如:在windows下有cls命令,在Linux下可能因為沒有這個命令而不習(xí)慣清屏。現(xiàn)在可以通過別名機制來解決這個問題,可以自己創(chuàng)造出cls命令
別名機制依靠一個別名映射文件:~/.bashrc
#vim ~/.bashrc

注意:如果想新創(chuàng)造的命令生效,必須要重新登錄當前用戶。
4、退出方式
回顧:之前vim中退出編輯的文件可以使用“:q”或者“:wq”。
除了上面的這個語法之外,vim還支持另外一個保存退出方法“:x”。
說明:
①“:x”在文件沒有修改的情況下,表示直接退出,在文件修改的情況下表示保存并退出;
②如果文件沒有被修改,但是使用wq進行退出的話,則文件的修改時間會被更新;但是如果文件沒有被修改,使用x進行退出的話,則文件修改時間不會被更新的;主要是會混淆用戶對文件的修改時間的認定。
因此建議以后使用“:x”來進行對文件的保存退出。
但是:不要使用X,不要使用X,不要使用X,X表示對文件進行加密操作。
九、作業(yè)
1、參考作業(yè)文件“httpd-vhosts.conf”的描述;
2、使用別名機制,創(chuàng)建出一個快捷命令“kj”,要求實現(xiàn)按下“kj”回車之后能夠?qū)崿F(xiàn):
統(tǒng)計出Apache的服務(wù)進程數(shù)量。
Day5:Linux自有服務(wù)(1)
自有服務(wù),即不需要用戶獨立去安裝的軟件的服務(wù),而是當系統(tǒng)安裝好之后就可以直接使用的服務(wù)(內(nèi)置)。
一、運行模式
運行模式也可以稱之為運行級別。
在linux中存在一個進程:init (initialize,初始化),進程id是1。
查看進程:#ps -ef|grep init

該進程存在一個對應(yīng)的配置文件:inittab(系統(tǒng)運行級別配置文件,位置/etc/inittab)
文件的主要內(nèi)容:

根據(jù)上述的描述,可以得知,Centos6.5中存在7中運行級別/模式。
0 — 表示關(guān)機級別(不要將默認的運行級別設(shè)置成這個值)
1 — 單用戶模式
2 — 多用戶模式,不帶NFS(Network File Syetem)
3 — 多用戶模式,完全的多用戶模式(不帶桌面的,純命令行模式)
4 — 沒有被使用的模式(被保留模式)
5 — X11,完整的圖形化界面模式
6 — 表示重啟級別(不要將默認的運行級別設(shè)置成這個值)
與該級別相關(guān)的幾個命令:
#init 0 表示關(guān)機
#init 3 表示切換到不帶桌面的模式
#init 5 切換到圖形界面
#init 6 重啟電腦
注意:init指令需要超級管理員的權(quán)限,普通用戶無法執(zhí)行。
這些命令其實都是調(diào)用的init進程,將數(shù)字(運行級別)傳遞給進程,進程去讀配置文件執(zhí)行對應(yīng)的操作。
①切換到純命令行模式下(臨時切換,重啟之后又恢復(fù))
#init 3

切換之后需要輸入用戶名和密碼,在輸入密碼的時候沒有“*”提示輸入,只要自己確認輸入的密碼沒有錯誤,按下回車即可。
②回到桌面模式
#init 5
③設(shè)置模式永久為命令行模式

將/etc/inittab文件中的initdefault值設(shè)置成3,然后重啟操作系統(tǒng)。
二、用戶與用戶組管理(重點)
Linux系統(tǒng)是一個多用戶多任務(wù)的操作系統(tǒng),任何一個要使用系統(tǒng)資源的用戶,都必須首先向系統(tǒng)管理員申請一個賬號,然后以這個賬號的身份進入系統(tǒng)。
用戶的賬號一方面可以幫助系統(tǒng)管理員對使用系統(tǒng)的用戶進行跟蹤,并控制他們對系統(tǒng)資源的訪問;另一方面也可以幫助用戶組織文件,并為用戶提供安全性保護。
每個用戶賬號都擁有一個惟一的用戶名和各自的密碼。
用戶在登錄時鍵入正確的用戶名和密碼后,就能夠進入系統(tǒng)和自己的主目錄。
要想實現(xiàn)用戶賬號的管理,要完成的工作主要有如下幾個方面:
用戶賬號的添加、刪除、修改以及用戶密碼的管理。
用戶組的管理。
注意三個文件:
/etc/passwd 存儲用戶的關(guān)鍵信息
/etc/group 存儲用戶組的關(guān)鍵信息
/etc/shadow 存儲用戶的密碼信息
1、用戶管理
①添加用戶
常用語法:#useradd 選項用戶名
常用選項:
-g:表示指定用戶的用戶主組,選項的值可以是用戶組的id,也可以是組名
-G:表示指定用戶的用戶附加組,選項的值可以是用戶組的id,也可以是組名
-u:uid,用戶的id(用戶的標識符),系統(tǒng)默認會從500之后按順序分配uid,如果不想使用系統(tǒng)分配的,可以通過該選項自定義【類似于騰訊QQ的自選靚號情況】
-ccomment:添加注釋
案例:創(chuàng)建用戶zhangsan,不帶任何選項

驗證是否成功:
a.驗證/etc/passwd的最后一行,查看是否有zhangsan的信息;
b.驗證是否存在家目錄(在Centos下創(chuàng)建好用戶之后隨之產(chǎn)生一個同名家目錄);
擴展:認識passwd文件

用戶名:密碼:用戶ID:用戶組ID:注釋:家目錄:解釋器shell
用戶名:創(chuàng)建新用戶名稱,后期登錄的時候需要輸入;
密碼:此密碼位置一般情況都是“x”,表示密碼的占位;
用戶ID:用戶的識別符;
用戶組ID:該用戶所屬的主組ID;
注釋:解釋該用戶是做什么用的;
家目錄:用戶登錄進入系統(tǒng)之后默認的位置;
解釋器shell:等待用戶進入系統(tǒng)之后,用戶輸入指令之后,該解釋器會收集用戶輸入的指令,傳遞給內(nèi)核處理;
注意:在不添加選項的時候,執(zhí)行useradd之后會執(zhí)行一系列的操作
a. 創(chuàng)建同名的家目錄;
b. 創(chuàng)建同名的用戶組;
案例:添加選項,創(chuàng)建用戶lisi,讓lisi屬于501主組,附加組500,自選靚號666。



注意:查看用戶的主組可以查看passwd文件,查看附加組可以查看group文件。
②修改用戶
常用語法:#usermod 選項用戶名
Usermod:user modify,用戶修改
常用選項:
-g:表示指定用戶的用戶主組,選項的值可以是用戶組的id,也可以是組名
-G:表示指定用戶的用戶附加組,選項的值可以是用戶組的id,也可以是組名
-u:uid,用戶的id(用戶的標識符),系統(tǒng)默認會從500之后按順序分配uid,如果不想使用系統(tǒng)分配的,可以通過該選項自定義【類似于騰訊QQ的自選靚號情況】
-l:修改用戶名
案例:修改zhangsan用戶主組為500,附加組改為501
#usermod -g 500 -G 501 zhangsan
案例:修改zhangsan用戶用戶名,改為wangerma
#usermod -l 新的用戶名 舊的用戶名
#usermod -l wangerma zhangsan
③設(shè)置密碼
Linux不允許沒有密碼的用戶登錄到系統(tǒng),因此前面創(chuàng)建的用戶目前都處于鎖定狀態(tài),需要設(shè)置密碼之后才能登錄計算機。
常用語法:#passwd 用戶名
案例:設(shè)置wangerma用戶的密碼

在設(shè)置密碼的時候也是沒有任何輸入提示的,放心輸入,確保兩次輸入的密碼一致,按下回車即可。
也可以使用弱密碼,但是不建議,否則會看到以下的提示:

設(shè)置密碼之后shadow文件中的體現(xiàn):能夠看出lisi用戶沒有密碼的。

在設(shè)置用戶密碼之后可以登錄帳號,例如此處需要登錄wangerma
切換用戶命令:#su [用戶名] (switchuser)
如果用戶名不指定則表示切換到root用戶。

切換用戶需要注意的事項:
a. 從root往普通用戶切換不需要密碼,但是反之則需要root密碼;
b. 切換用戶之后前后的工作路徑是不變的;
c. 普通用戶沒有辦法訪問root用戶家目錄,但是反之則可以;
④刪除用戶
常用語法:#userdel 選項用戶名
Userdel:user delete(用戶刪除)
常用選項:
-r:表示刪除用戶的同時,刪除其家目錄;
案例:刪除wangerma用戶

注意:已經(jīng)登錄的wangerma用戶刪除的時候提示刪除失敗,但是沒有登錄的lisi用戶可以正常刪除。
解決辦法:簡單粗暴,kill對應(yīng)用戶的全部進程

提示:所有跟用戶操作的命令(除passwd外)只有root超級管理員有權(quán)限執(zhí)行。
2、用戶組管理
每個用戶都有一個用戶組,系統(tǒng)可以對一個用戶組中的所有用戶進行集中管理。不同Linux 系統(tǒng)對用戶組的規(guī)定有所不同,如Linux下的用戶屬于與它同名的用戶組,這個用戶組在創(chuàng)建用戶時同時創(chuàng)建。
用戶組的管理涉及用戶組的添加、刪除和修改。組的增加、刪除和修改實際上就是對/etc/group文件的更新。

文件結(jié)構(gòu):
用戶組名:密碼:用戶組ID:組內(nèi)用戶名
密碼:X表示占位符,雖然用戶組可以設(shè)置密碼,但是絕大部分的情況下不設(shè)置密碼;
組內(nèi)用戶名:表示附加組是該組的用戶名稱;
①用戶組添加
常用語法:#groupadd 選項用戶組名
常用選項:
-g:類似用戶添加里的“-u”,-g表示選擇自己設(shè)置一個自定義的用戶組ID數(shù)字,如果自己不指定,則默認從500之后遞增;
案例:使用groupadd指令創(chuàng)建一個新的用戶組,命名為Administrators

②用戶組編輯
常用語法:#groupmod 選項用戶組名
常用選項:
-g:類似用戶修改里的“-u”,-g表示選擇自己設(shè)置一個自定義的用戶組ID數(shù)字
-n:類似于用戶修改“-l”,表示設(shè)置新的用戶組的名稱
案例:修改Administrators用戶組,將組ID從502改成520,將名稱改為admins

③用戶組刪除
常用語法:#groupdel 用戶組名

注意:當如果需要刪除一個組,但是這個組是某個用戶的主組時,則不允許刪除;如果確實需要刪除,則先從組內(nèi)移出所有用戶。

三、網(wǎng)絡(luò)設(shè)置
首先知道網(wǎng)卡配置文件位置:/etc/sysconfig/network-scripts

在目錄中網(wǎng)卡的配置文件命名格式:ifcfg-網(wǎng)卡名稱

ONBOOT:是否開機啟動
BOOTPROTO:ip地址分配方式,DHCP表示動態(tài)主機分配協(xié)議
HWADDR:硬件地址,MAC地址
如果后續(xù)需要重啟網(wǎng)卡怎么去操作呢?
#servicenetwork restart

在有的分支版本中可能沒有service命令來快速操作服務(wù),但是有一個共性的目錄:/etc/init.d
這個目錄中放著很對服務(wù)的快捷方式。
此處重啟網(wǎng)卡命令還可以使用:
#/etc/init.d/networkrestart

擴展1:如果修改網(wǎng)卡的配置文件,但是配置文件的目錄層次很深,此時可以在淺的目錄中創(chuàng)建一個快捷方式(軟連接),方便以后去查找
#ln -s 原始文件的路徑 快捷方式的路徑

通過ls -l可以列出如下的效果:

其中,文件類型位置的“l(fā)”表示其類型為link(連接類型),后面的“->”指向的是原始文件路徑。
擴展2:如何去重啟單個網(wǎng)卡?
停止某個網(wǎng)卡:#ifdown 網(wǎng)卡名
開啟某個網(wǎng)卡:#ifup 網(wǎng)卡名
例如:需要停止-啟動(重啟)eth0網(wǎng)卡,則可以輸入
#ifdown eth0
#ifup eth0
提示:在實際工作的時候不要隨意禁網(wǎng)卡。
四、ssh服務(wù)(重點)
ssh(secure shell,安全外殼協(xié)議),該協(xié)議有2個常用的作用:遠程連接協(xié)議、遠程文件傳輸協(xié)議。
協(xié)議使用端口號:默認是22
可以是被修改的,如果需要修改,則需要修改ssh服務(wù)的配置文件:
#/etc/ssh/ssh_config

端口號可以修改,但是得注意2個事項:
a. 注意范圍,端口范圍是從0-65535;
b. 不能使用別的服務(wù)已經(jīng)占用的端口;
服務(wù)啟動/停止/重啟
#service sshd start/stop/restart
#/etc/init.d/sshd start/stop/restart

1、遠程終端
終端工具主要幫助運維人員連接遠程的服務(wù)器,常見終端工具有:Xshell、secureCRT、Putty等。以putty為例:
①獲取服務(wù)器ip地址,可以通過ifconfig命令進行查看,然后順手測試ip的連接相通性

②打開putty,輸入相關(guān)的信息

③在彈出key確認的時候點擊“是”,以后不會再提示

④輸入登錄信息

2、SSH服務(wù)文件傳輸
可視化的界面?zhèn)鬏敼ぞ?#xff1a;Filezilla
安裝好之后可以查看到桌面圖標:

①選擇“文件”- “站點管理器(Ctrl + S)”

②點擊“文件”菜單下方的“▽”選擇需要連接的服務(wù)器,連接好之后的效果

③從本地windows上傳文件到linux中方式
支持直接拖拽文件,也可以右鍵本地需要上傳的文件,然后點選“上傳”即可

④下載linux文件到本地
支持服務(wù)器文件直接拖拽到本地,也可以在右側(cè)窗口選擇需要下載的文件,右鍵,點選“下載”。
擴展3:通過命令行工具來傳輸文件/文件夾
工具:PSCP.exe(必須通過cmd命令行打開),為了使用方便可以將其放到環(huán)境變量目錄中
如果不清楚哪些路徑是環(huán)境變量路徑,只需要將其放到C:/Windows目錄下即可。

用法:
a. pscp 選項 用戶名@linux主機地址:資源路徑 windows本地的地址 (下載到win)
b. pscp 選項 資源路徑 用戶名@linux主機地址:遠程路徑 (上傳到linux)
c.pscp 選項 -ls 用戶名@linux主機地址(列出遠程路徑下結(jié)構(gòu))
①下載到本地windows
要求將遠程linux服務(wù)器下的/etc整個目錄下載到本地E:\tmp下
#pscp -r root@192.168.21.128:/etc E:\tmp
在CMD中輸入之后輸入密碼


②上傳文件到linux
將“E:\coursedocs\運維學(xué)科\北京運維01期\01-基礎(chǔ)班\20180329_Linux自有服務(wù)”所有的內(nèi)容傳輸?shù)絣inux下root用戶的家目錄
#pscp -r “E:\coursedocs\運維學(xué)科\北京運維01期\01-基礎(chǔ)班\20180329_Linux自有服務(wù)” root@192.168.21.128:/root

五、作業(yè)
1、能夠分別使用Filezilla和PSCP工具傳輸給定文件到“/usr/src/data”目錄下,如目錄不存在則自行創(chuàng)建。
Day6:Linux自有服務(wù)(2)
自有服務(wù),即不需要用戶獨立去安裝的軟件的服務(wù),而是當系統(tǒng)安裝好之后就可以直接使用的服務(wù)(內(nèi)置)。
一、設(shè)置主機名
回顧:
#hostname
#hostname -f FQDN(全限定域名)
①臨時設(shè)置主機名(立竿見影),需要切換用戶使之生效
#hostname 設(shè)置的主機名

②永久設(shè)置主機名(需要重啟)
先找到一個文件
/etc/sysconfig/network 【主機名的配置文件】

修改其中的HOSTNAME為自己需要設(shè)置的永久主機名

③修改linux服務(wù)器的hosts文件,將yunwei指向本地(設(shè)置FQDN)
Hosts文件的位置:/etc/hosts

問題:不設(shè)置FQDN會怎么樣?
①很多開源服務(wù)器軟件(例如Apache)則無法啟動,或出現(xiàn)報錯;
②方便記憶,看到主機名對其作用有一個初步判斷;
③如果不設(shè)置則會影響本地的域名的解析(本地訪問);
二、chkconfig
作用:相當于windows下“安全衛(wèi)士”、“電腦管家”之類的安全輔助工具提供“開機啟動項”的一個管理服務(wù)。
在linux下不是所有的軟件安裝完成之后都有開機啟動服務(wù),有的可能需要自己去添加。除此之外還可以查看和刪除。
①開機啟動服務(wù)查詢
#chkconfig --list

其中0-6表示各個啟動級別
例如:以httpd為例,其3級別為關(guān)閉(off),則表示其在3啟動形式下默認開機不啟動
5對應(yīng)的也是關(guān)閉,則表示其在桌面環(huán)境下也是開機不啟動。
再例如:kdump服務(wù),在2,3,4,5的級別下默認開機啟動的,其他級別下默認開機不啟動
②刪除服務(wù)
#chkconfig --del 服務(wù)名
例如刪除httpd服務(wù)

③添加開機啟動服務(wù)
#chkconfig --add 服務(wù)名 【必須要保證服務(wù)正常運行,才可以添加】

④設(shè)置服務(wù)在某個級別下開機啟動/不啟動【重點命令】
#chkconfig--level 連在一起的啟動級別服務(wù)名on/off
案例:設(shè)置httpd服務(wù)在3,5級別下默認開機啟動

案例:設(shè)置httpd服務(wù)在5的級別下默認開機不啟動

三、ntp服務(wù)
作用:ntp主要是用于對計算機的時間同步管理操作。
時間是對服務(wù)器來說是很重要的,一般很多網(wǎng)站都需要讀取服務(wù)器時間來記錄相關(guān)信息,如果時間不準,則可能造成很大的影響。
例如:當前虛擬機里的linux時間就是不準確的

同時服務(wù)器時間方式有2個:一次性同步(手動同步)、通過服務(wù)自動同步。
上游的概念:

①一次性同步時間(簡單)
#ntpdate時間服務(wù)器的域名或ip地址
Ip地址查看可以訪問:http://www.ntp.org.cn/pool.php

②設(shè)置時間同步服務(wù)
服務(wù)名:ntpd
啟動ntpd服務(wù)
#servicentpd start 或者 /etc/init.d/ntpd start

設(shè)置ntpd服務(wù)開機啟動:
# chkconfig --list|grep ntpd
# chkconfig --level 35 ntpd on

四、防火墻服務(wù)
防火墻:防范一些網(wǎng)絡(luò)攻擊。有軟件防火墻、硬件防火墻之分。

防火墻選擇讓請求通過,從而保證網(wǎng)絡(luò)安全性。
在當前的centos6.5中防火墻有一個名稱:iptables【7.x中默認使用的是firewalld】
①查看iptables是否開機啟動

②iptables服務(wù)啟動/重啟/關(guān)閉
#service iptables start/restart/stop
/etc/init.d/iptables start /restart/stop
③查看iptables的狀態(tài)(規(guī)則)
]# service iptables status
如果iptables沒有啟動,則提示服務(wù)沒啟動,如果已經(jīng)啟動,則顯示防火墻的相關(guān)的規(guī)則信息

④查看規(guī)則的命令
#iptables -L -n
含義:
-L:表示列出規(guī)則
-n:表示將單詞表達形式改成數(shù)字形式顯示
⑤簡單設(shè)置防火墻規(guī)則
例如,需要允許80端口通過防火墻,則規(guī)則可以用以下的命令來設(shè)置
#iptables -I INPUT -p tcp --dport 80 -j ACCEPT #允許訪問80端口
Iptables:主命令
-I:表示將規(guī)則放到最前面
-A:add,添加規(guī)則(最后)
INPUT:進站請求【出站output】
-p:protocol,指定協(xié)議(icmp/tcp/udp)
--dport:指定端口號
-j:指定行為結(jié)果,允許(accept)/禁止(reject)/丟棄(drop)

添加完成之后需要保存操作:
/etc/init.d/iptables save

測試80端口訪問:

五、rpm管理(重點)
作用:rpm的作用類似于windows上的電腦管家中“軟件管理”、安全衛(wèi)士里面“軟件管家”等產(chǎn)品,主要作用是對linux服務(wù)器上的軟件包進行對應(yīng)管理操作,管理分為:查詢、卸載、安裝。
①查詢某個軟件的安裝情況
#rpm-qa|grep 關(guān)鍵詞
選項:
-q:查詢,query
-a:全部,all
案例:查詢linux上是否安裝firefox

案例:查詢是否安裝qq

②卸載某個軟件
#rpm -e 軟件的名稱

火狐卸載的時候是沒有依賴關(guān)系的,所以可以直接卸載。
但是在卸載Apache的時候提示無法卸載:

當存在依賴關(guān)系的時候又不想去解決這個問題的時候可以:
#rpm -e軟件包名--nodeps

③軟件的安裝
要想裝軟件,和windows下一樣,先得找到安裝包。
軟件包的獲得方式:
a.去官網(wǎng)去下載;
b.不介意老版本的話,可以從光盤(或者鏡像文件)中讀取;
此處以光盤文件為例:
查看塊狀設(shè)備的信息:
#lsblk (list block devices) 查看塊狀設(shè)備的信息

Name:名稱
Size:設(shè)備大小
Type:類型
MountPoint:掛載點(類似windows下盤符)
擴展:光盤的掛載和解掛
a. 解掛操作
命令:umount
語法:#umount 當前設(shè)備的掛載點(路徑)

此時,相當于U盤在windows上已經(jīng)被彈出了,但是沒有拔下電腦USB接口。
b. 掛載光盤
命令:mount
語法:#mount 設(shè)備原始地址 要掛載的位置路徑
設(shè)備原始地址:地址統(tǒng)一都在/dev下,然后根據(jù)大小確定具體name值,拼湊在一起組成原始地址,例如當前:“/dev/sr0”
要掛載的位置路徑:掛載目錄一般都在mnt下,也可以在mnt下建目錄,此處以“/mnt/dvd”為例

安裝軟件的命令:
#rpm -ivh 軟件包完整名稱
選項:
-i:install,安裝
-v:顯示進度條
-h:表示以“#”形式顯示進度條

六、cron/crontab計劃任務(wù)(重點)
作用:操作系統(tǒng)不可能24小時都有人在操作,有些時候想在指定的時間點去執(zhí)行任務(wù)(例如:每天夜里2點去重新啟動Apache),此時不可能真有人每天夜里2點去執(zhí)行命令,此時可以交給計劃任務(wù)程序去執(zhí)行操作。
語法:#crontab 選項
常用選項:
-l:list,列出指定用戶的計劃任務(wù)列表
-e:edit,編輯指定用戶的計劃任務(wù)列表
-u:user,指定的用戶名,如果不指定,則表示當前用戶
-r:remove,刪除指定用戶的計劃任務(wù)列表
①列出

②編輯計劃任務(wù)(重點)
計劃任務(wù)的規(guī)則語法格式,以行為單位,一行則為一個計劃:
分 時 日 月 周 需要執(zhí)行的命令
例如:如果想要每天的0點0分執(zhí)行reboot指令,則可以寫成
0 0 * * * reboot
取值范圍:
分:0~59
時:0~23
日:1~31
月:1~12
周:0~7,0和7表示星期天
四個符號:
*:表示取值范圍中的每一個數(shù)字
-:做連續(xù)區(qū)間表達式的,要想表示1~7,則可以寫成:1-7
/:表示每多少個,例如:想每10分鐘一次,則可以在分的位置寫:*/10
,:表示多個取值,比如想在1點,2點6點執(zhí)行,則可以在時的位置寫:1,2,6
問題1:每月1、10、22日的4:45重啟network服務(wù)
45 4 1,10,22 * * service network restart
問題2:每周六、周日的1:10重啟network服務(wù)
10 1 * * 6,0 service network restart
問題3:每天18:00至23:00之間每隔30分鐘重啟network服務(wù)
*/30 18-23 * * * service network restart
問題4:每隔兩天的上午8點到11點的第3和第15分鐘執(zhí)行一次重啟
3,15 8-11 */2 * * reboot
案例:真實測試案例,每1分鐘往root家目錄中的RT.txt中輸入當前的時間信息,為了看到效果使用追加輸出
計劃任務(wù):*/1 * * * * ls ~>>/root/RT.txt
Crontab權(quán)限問題:本身是任何用戶都可以創(chuàng)建自己的計劃任務(wù)。
但是超級管理員可以通過配置來設(shè)置某些用戶不允許設(shè)置計劃任務(wù):
配置文件位于(黑名單):
/etc/cron.deny 里面寫用戶名,一行一個


還有一個配置文件:(白名單)
/etc/cron.allow (本身不存在,自己創(chuàng)建)
注意:白名單優(yōu)先級高于黑名單,如果一個用戶同時存在兩個名單文件中,則會被默認允許創(chuàng)建計劃任務(wù)。
Day7:Linux的權(quán)限管理操作
Linux的權(quán)限操作與用戶、用戶組是兄弟操作。
一、權(quán)限概述
總述:Linux系統(tǒng)一般將文件可存/取訪問的身份分為3個類別:owner、group、others,且3種身份各有read、write、execute等權(quán)限。
1、權(quán)限介紹
什么是權(quán)限?
在多用戶(可以不同時)計算機系統(tǒng)的管理中,權(quán)限是指某個特定的用戶具有特定的系統(tǒng)資源使用權(quán)力,像是文件夾、特定系統(tǒng)指令的使用或存儲量的限制。
在Linux中分別有讀、寫、執(zhí)行權(quán)限:
讀權(quán)限:
對于文件夾來說,讀權(quán)限影響用戶是否能夠列出目錄結(jié)構(gòu)
對于文件來說,讀權(quán)限影響用戶是否可以查看文件內(nèi)容
寫權(quán)限:
對文件夾來說,寫權(quán)限影響用戶是否可以在文件夾下“創(chuàng)建/刪除/復(fù)制到/移動到”文檔
對于文件來說,寫權(quán)限影響用戶是否可以編輯文件內(nèi)容
執(zhí)行權(quán)限:
一般都是對于文件來說,特別腳本文件。
2、身份介紹
Owner身份(文件所有者,默認為文檔的創(chuàng)建者)
由于Linux是多用戶、多任務(wù)的操作系統(tǒng),因此可能常常有多人同時在某臺主機上工作,但每個人均可在主機上設(shè)置文件的權(quán)限,讓其成為個人的“私密文件”,即個人所有者。因為設(shè)置了適當?shù)奈募?quán)限,除本人(文件所有者)之外的用戶無法查看文件內(nèi)容。
例如某個MM給你發(fā)了一封Email情書,你將情書轉(zhuǎn)為文件之后存檔在自己的主文件夾中。為了不讓別人看到情書的內(nèi)容,你就能利用所有者的身份去設(shè)置文件的適當權(quán)限,這樣,即使你的情敵想偷看你的情書內(nèi)容也是做不到的。
Group身份(與文件所有者同組的用戶)
與文件所有者同組最有用的功能就體現(xiàn)在多個團隊在同一臺主機上開發(fā)資源的時候。例如主機上有A、B兩個團體,A中有a1,a2,a3三個成員,B中有b1,b2兩個成員,這兩個團體要共同完成一份報告F。由于設(shè)置了適當?shù)臋?quán)限,A、B團體中的成員都能互相修改對方的數(shù)據(jù),但是團體C的成員則不能修改F的內(nèi)容,甚至連查看的權(quán)限都沒有。同時,團體的成員也能設(shè)置自己的私密文件,讓團隊的其它成員也讀取不了文件數(shù)據(jù)。在Linux中,每個賬戶支持多個用戶組。如用戶a1、b1即可屬于A用戶組,也能屬于B用戶組【主組和附加組】。
Others身份(其他人,相對于所有者)
這個是個相對概念。打個比方,大明、二明、小明一家三兄弟住在一間房,房產(chǎn)證上的登記者是大明(owner所有者),那么,大明一家就是一個用戶組,這個組有大明、二明、小明三個成員;另外有個人叫張三,和他們?nèi)龥]有關(guān)系,那么這個張三就是其他人了。
同時,大明、二明、小明有各自的房間,三者雖然能自由進出各自的房間,但是小明不能讓大明看到自己的情書、日記等,這就是文件所有者(用戶)的意義。
Root用戶(超級用戶)
在Linux中,還有一個神一樣存在的用戶,這就是root用戶,因為在所有用戶中它擁有最大的權(quán)限,所以管理著普通用戶。
3、Linux的權(quán)限介紹
要設(shè)置權(quán)限,就需要知道文件的一些基本屬性和權(quán)限的分配規(guī)則。在Linux中,ls命令常用來查看文件的屬性,用于顯示文件的文件名和相關(guān)屬性。
#ls -l路徑 【ls -l 等價于 ll】

標紅的部分就是Linux的文檔權(quán)限屬性信息。
Linux中存在用戶、用戶組和其他人概念,各自有不同的權(quán)限,對于一個文檔來說,其權(quán)限具體分配如下:

十位字符表示含義:
第1位:表示文檔類型,取值常見的有“d表示文件夾”、“-表示文件”、“l(fā)表示軟連接”、“s表示套接字”等等;
第2-4位:表示文檔所有者的權(quán)限情況,第2位表示讀權(quán)限的情況,取值有r、-;第3位表示寫權(quán)限的情況,w表示可寫,-表示不可寫,第4位表示執(zhí)行權(quán)限的情況,取值有x、-。
第5-7位:表示與所有者同在一個組的用戶的權(quán)限情況,第5位表示讀權(quán)限的情況,取值有r、-;第6位表示寫權(quán)限的情況,w表示可寫,-表示不可寫,第7位表示執(zhí)行權(quán)限的情況,取值有x、-。
第8-10位:表示除了上面的前2部分的用戶之外的其他用戶的權(quán)限情況,第8位表示讀權(quán)限的情況,取值有r、-;第9位表示寫權(quán)限的情況,w表示可寫,-表示不可寫,第10位表示執(zhí)行權(quán)限的情況,取值有x、-。
權(quán)限分配中,均是rwx的三個參數(shù)組合,且位置順序不會變化。沒有對應(yīng)權(quán)限就用–代替。
例如:以下一個文檔權(quán)限是怎么樣的?

a. 其是文件夾類型
b. 所有者:擁有全部權(quán)限(讀寫執(zhí)行)
c. 同組用戶:可讀、可執(zhí)行
d. 其他用戶:可讀、可執(zhí)行
二、權(quán)限設(shè)置
語法:#chmod 選項 權(quán)限模式 文檔
注意事項:
常用選項:
-R:遞歸設(shè)置權(quán)限 (當文檔類型為文件夾的時候)
權(quán)限模式:就是該文檔需要設(shè)置的權(quán)限信息
文檔:可以是文件,也可以是文件夾,可以是相對路徑也可以是絕對路徑。
注意點:如果想要給文檔設(shè)置權(quán)限,操作者要么是root用戶,要么就是文檔的所有者。
1、字母形式

給誰設(shè)置:
u:表示所有者身份owner(user)
g:表示給所有者同組用戶設(shè)置(group)
o:表示others,給其他用戶設(shè)置權(quán)限
a:表示all,給所有人(包含ugo部分)設(shè)置權(quán)限
如果在設(shè)置權(quán)限的時候不指定給誰設(shè)置,則默認給所有用戶設(shè)置
權(quán)限字符:
r:讀
w:寫
x:表示執(zhí)行
-:表示沒有權(quán)限
權(quán)限分配方式:
+:表示給具體的用戶新增權(quán)限(相對當前)
-:表示刪除用戶的權(quán)限(相對當前)
=:表示將權(quán)限設(shè)置成具體的值(注重結(jié)果)【賦值】
例如:需要給anaconda-ks.cfg文件(-rw-------.)設(shè)置權(quán)限,要求所有者擁有全部的權(quán)限,同組用戶擁有讀和執(zhí)行權(quán)限,其他用戶只讀權(quán)限。
答案:
①#chmod u+x,g+rx,o+r anaconda-ks.cfg

②#chmod u=rwx,g=rx,o=r anaconda-ks.cfg

提示:當文檔擁有執(zhí)行權(quán)限(任意部分),則其顏色在終端中是綠色。
#chmodug=rwx 形式,如果有兩部分權(quán)限一樣則可以合在一起寫的
例如:如果anaconda-ks.cfg文件什么權(quán)限都沒有,可以使用root用戶設(shè)置所有人都有執(zhí)行權(quán)限,則可以寫成
①#chmod +x anaconda-ks.cfg
②#chmod a=x anaconda-ks.cfg
③#chmod a+x anaconda-ks.cfg
2、數(shù)字形式
經(jīng)常會在一些技術(shù)性的網(wǎng)頁上看到類似于#chmod 777 a.txt 這樣的一個權(quán)限,這種形式稱之為數(shù)字形式權(quán)限(777)。
讀:r 4
寫:w 2
執(zhí)行:x 1
沒有任何權(quán)限:0

例如:需要給anaconda-ks.cfg設(shè)置權(quán)限,權(quán)限要求所有者擁有全部權(quán)限,同組用戶擁有讀執(zhí)行權(quán)限,其他用戶只讀。
全部權(quán)限(u):讀+寫+執(zhí)行=4+2+1=7
讀和執(zhí)行(g):讀+執(zhí)行=4+1=5
讀權(quán)限(o):讀=4
由上得知權(quán)限為:754
#chmod 754 anaconda-ks.cfg

面試題:用超級管理員設(shè)置文檔的權(quán)限命令是#chmod-R 731 aaa,請問這個命令有沒有什么不合理的地方?
擁有者:7=4+2+1=讀+寫+執(zhí)行
同組用戶:3=2+1=寫+執(zhí)行
其他用戶:1=1=執(zhí)行
注意:在寫權(quán)限的時候千萬不要設(shè)置類似于上面的這種“奇葩權(quán)限”。如果一個權(quán)限數(shù)字中但凡出現(xiàn)2與3的數(shù)字,則該權(quán)限有不合理的情況。
3、注意事項
使用root用戶創(chuàng)建一個文件夾(/oo),權(quán)限默認,權(quán)限如下:

需要在oo目錄下創(chuàng)建文件(oo/xx.txt),需要給777權(quán)限:

切換到test用戶(不是文檔所有者,也不是同組用戶,屬于other部分):
問題1:test用戶是否可以打開oo/xx.txt文件?【能打開】
問題2:test用戶是否可以編輯oo/xx.txt文件?【可以】
問題3:test用戶是否可以刪除oo/xx.txt文件?【不可以,同樣還不允許創(chuàng)建文件/文件夾、移動文件、重命名文件】

在Linux中,如果要刪除一個文件,不是看文件有沒有對應(yīng)的權(quán)限,而是看文件所在的目錄是否有寫權(quán)限,如果有才可以刪除。
三、屬主與屬組設(shè)置
屬主:所屬的用戶(文件的主人)
屬組:所屬的用戶組

前面的那個root就是屬主
后面的那個root就是屬組
這兩項信息在文檔創(chuàng)建的時候會使用創(chuàng)建者的信息(用戶名、用戶所屬的主組名稱)。
如果有時候去刪除某個用戶,則該用戶對應(yīng)的文檔的屬主和屬組信息就需要去修改。
1、chown(重點)
作用:更改文檔的所屬用戶
語法:#chown -R username文檔路徑
案例:將剛才root用戶創(chuàng)建的oo目錄,所有者更改為test
#chown test oo/

2、chgrp(了解)
作用:更改文檔的所屬用戶組
語法:#chgrp -R groupname 文檔的路徑
案例:將剛才root用戶創(chuàng)建的oo目錄,所有者更改為test,并且將所屬用戶組也改為test
#chgrp test oo/

思考,如何通過一個命令實現(xiàn)既可以更改所屬的用戶,也可以修改所屬的用戶組呢?
答:可以實現(xiàn)的,通過chown命令
語法:#chown -R username:groupname 文檔路徑
案例:要求只使用chown指令,將oo目錄的所屬用戶和用戶組改回成root,并且包含其子目錄

四、擴展(1)
問題:reboot、shutdown、init、halt、user管理,在普通用戶身份上都是操作不了,但是有些特殊的情況下又需要有執(zhí)行權(quán)限。又不可能讓root用戶把自己的密碼告訴普通用戶,這個問題該怎么解決?
該問題是可以被解決的,可以使用sudo(switch user do)命令來進行權(quán)限設(shè)置。Sudo可以讓管理員(root)事先定義某些特殊命令誰可以執(zhí)行。
默認sudo中是沒有除root之外用戶的規(guī)則,要想使用則先配置sudo。
Sudo配置文件:/etc/sudoers

a. 配置sudo文件請使用“#visudo”,打開之后其使用方法和vim一致
b. 配置普通用戶的權(quán)限

Root表示用戶名,如果是用戶組,則可以寫成“%組名”
ALL:表示允許登錄的主機(地址白名單)
(ALL):表示以誰的身份執(zhí)行,ALL表示root身份
ALL:表示當前用戶可以執(zhí)行的命令,多個命令可以使用“,”分割
案例:本身test用戶不能添加用戶,要求使用sudo配置,將其設(shè)置為可以添加用戶,并且可以修改密碼(但是不能修改root用戶密碼)。
注意:在寫sudo規(guī)則的時候不建議寫直接形式的命令,而是寫命令的完整路徑。
路徑可以使用which命令來查看
語法:#which 指令名稱



在添加好對應(yīng)的規(guī)則之后就可以切換用戶,切換到普通用戶test,再去執(zhí)行:

此時要想使用剛才的規(guī)則,則以以下命令進行:
#sudo 需要執(zhí)行的指令

在輸入sudo指令之后需要輸入當前的用戶密碼進行確認的操作(不是root用戶密碼),輸入之后在接下來5分鐘內(nèi)再次執(zhí)行sudo指令不需要密碼。
特別注意:此處按照案例要求,不能讓test用戶修改root密碼,因此規(guī)則還需要調(diào)整,不然其可以修改root密碼的:
禁止修改root密碼的配置(先允許全部,再拒絕root密碼設(shè)置):/usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root

補充:在普通用戶下怎么查看自己具有哪些特殊權(quán)限呢?
#sudo -l

最后:sudo不是任何Linux分支都有的命令,常見centos與ubuntu都存在sudo命令。
作業(yè):給普通用戶設(shè)置一個關(guān)機命令執(zhí)行權(quán)限。
Day8:Linux的網(wǎng)絡(luò)基礎(chǔ)
一、網(wǎng)絡(luò)相關(guān)概述
1、網(wǎng)絡(luò)發(fā)展
信息傳遞
遠古時期,人們就通過簡單的語言、壁畫等方式交換信息
千百年來,人們一直在用語言、圖符、鐘鼓、煙火、竹簡、紙書等傳遞信息
古代人的烽火狼煙、飛鴿傳信、驛馬郵遞
現(xiàn)代社會中,交通警的指揮手語、航海中的旗語等
這些信息傳遞的基本方式都是依靠人的視覺與聽覺
電的產(chǎn)生
1831年,法拉第制出了世界上最早的第一臺發(fā)電機
1866年,德國人西門子(Siemens)制成世界上第一臺大功率發(fā)電機
1837年,美國人塞繆樂·莫樂斯成功地研制出世界上第一臺電磁式電報機
1844年5月24日,莫樂斯在國會大廈聯(lián)邦最高法院會議廳進行了“用莫爾斯電碼”發(fā)出了人類歷史上的第一份電報,從而實現(xiàn)了長途電報通信
網(wǎng)絡(luò)誕生
1957年,前蘇聯(lián)發(fā)射了第一顆人造衛(wèi)星,震驚了美國
1958年美國成立了國防部高級研究計劃署(ARPA,Advanced Research Projects Agency),應(yīng)對冷戰(zhàn)形勢,ARPA是一個管理機構(gòu),沒有實驗室和科學(xué)家
1969年,ARPANET(阿帕網(wǎng))開始聯(lián)機,因此1969年被稱為Internet元年
網(wǎng)絡(luò)分類(記憶)
局域網(wǎng)(Local Area Network,LAN)是指范圍在幾百米到十幾公里內(nèi)辦公樓群或校園內(nèi)的計算機相互連接所構(gòu)成的計算機網(wǎng)絡(luò)。
城域網(wǎng)(Metropolitan Area Network,MAN)所采用的技術(shù)基本上與局域網(wǎng)相類似,只是規(guī)模上要大一些。城域網(wǎng)既可以覆蓋相距不遠的幾棟辦公樓,也可以覆蓋一個城。
廣域網(wǎng)(Wide Area Network,WAN)通??缃雍艽蟮奈锢矸秶?#xff0c;如一個國家。
除了上述的劃分,網(wǎng)絡(luò)還可以按照所有者分為公網(wǎng)、私網(wǎng)是兩種Internet的接入方式。公網(wǎng)接入方式:上網(wǎng)的計算機得到的IP地址是Internet上的非保留地址,公網(wǎng)的計算機和Internet上的其他計算機可隨意互相訪問。私網(wǎng)則反之。
2、ip地址(重點記憶)
IP是英文Internet Protocol的縮寫,意思是“網(wǎng)絡(luò)之間互連的協(xié)議”,也就是為計算機網(wǎng)絡(luò)相互連接進行通信而設(shè)計的協(xié)議。
IP地址類型分為:公有地址、私有地址。
公有地址
公有地址(Public address)由Inter NIC(InternetNetwork Information Center因特網(wǎng)信息中心)負責(zé)。這些IP地址分配給注冊并向Inter NIC提出申請的組織機構(gòu)。通過它直接訪問因特網(wǎng)。
私有地址(重點)
私有地址(Private address)屬于非注冊地址,專門為組織機構(gòu)內(nèi)部使用。以下列出留用的內(nèi)部私有地址:
A類 10.0.0.0--10.255.255.255
B類 172.16.0.0--172.31.255.255
C類192.168.0.0--192.168.255.255
IP地址按類型可以分為三類:
類別 | 最大網(wǎng)絡(luò)數(shù) | IP地址范圍 | 最大主機數(shù) | 私有IP地址范圍 |
A | 126(2^7-2) | 1.0.0.0-127.255.255.255 | 16777214 | 10.0.0.0-10.255.255.255 |
B | 16384(2^14) | 128.0.0.0-191.255.255.255 | 65534 | 172.16.0.0-172.31.255.255 |
C | 2097152(2^21) | 192.0.0.0-223.255.255.255 | 254 | 192.168.0.0-192.168.255.255 |
網(wǎng)絡(luò)運維相關(guān)技能:ip分類、子網(wǎng)劃分、劃分vlan、ACL、綜合布線、各種Serve的搭建。
127.0.0.1 本機ip
3、網(wǎng)卡

網(wǎng)卡是一個網(wǎng)絡(luò)組件,屬于硬件范疇,主要負責(zé)計算機之間數(shù)據(jù)的封裝和解封。
MAC地址:網(wǎng)卡的物理地址,網(wǎng)卡設(shè)備的編號,默認情況是全球唯一的(16進制)。

與IP地址的區(qū)別:
長度不同。IP地址為32位,MAC地址為48位。
分配依據(jù)不同。
網(wǎng)絡(luò)尋址方式不同。OSI參考模型,ip地址是基于第三層工作(網(wǎng)絡(luò)層),mac地址是第二層(數(shù)據(jù)鏈路層)
4、網(wǎng)線
網(wǎng)線是連接局域網(wǎng)必不可少的。在局域網(wǎng)中常見的網(wǎng)線主要有雙絞線(RJ45接口)、銅軸電纜、光纜三種。
5、交換機
交換機(Switch)意為“開關(guān)”,是一種用于電(光)信號轉(zhuǎn)發(fā)的網(wǎng)絡(luò)設(shè)備,交換機它可以為接入交換機的任意兩個網(wǎng)絡(luò)節(jié)點提供獨享的電信號通路。

目前,交換機品牌比較有名的是:華為、華三(h3c)、思科、銳捷。
6、路由器
路由器(Router)又稱網(wǎng)關(guān)設(shè)備(Gateway)是用于連接多個邏輯上分開、相對獨立的網(wǎng)絡(luò)。


7、拓撲結(jié)構(gòu)圖(擴展)
所謂“拓撲”就是把實體抽象成與其大小、形狀無關(guān)的“點”,而把連接實體的線路抽象成“線”,進而以圖的形式來表示這些點與線之間關(guān)系的方法,其目的在于研究這些點、線之間的相連關(guān)系。表示點和線之間關(guān)系的圖被稱為拓撲結(jié)構(gòu)圖。
常見的幾種拓撲結(jié)構(gòu)圖:






二、網(wǎng)絡(luò)相關(guān)命令
1、ping
作用:檢測當前主機與目標主機之間的連通性(不是100%準確,有的服務(wù)器是禁ping)
語法:#ping 主機地址(ip地址、主機名、域名等)
例如:測試和baidu.com之間的連通性。

該命令可以跨平臺,windows下也可以使用,語法一致。(區(qū)別在于Linux下默認一直發(fā)送,windows下默認發(fā)送4個數(shù)據(jù)包)

2、netstat
作用:表示查看網(wǎng)絡(luò)的連接信息
語法:#netstat -tnlp (-t:tcp協(xié)議,-n:將字母轉(zhuǎn)化成數(shù)字,-l:列出狀態(tài)為監(jiān)聽,-p:顯示進程相關(guān)信息)
#netstat -an (-a:表示全部,-n:將字母轉(zhuǎn)化為數(shù)字)
TCP/IP協(xié)議需要使用這個命令。
3、traceroute
作用:查找當前主機與目標主機之間所有的網(wǎng)關(guān)(路由器,會給沿途各個路由器發(fā)送icmp數(shù)據(jù)包,路由器可能會不給響應(yīng))。
該命令不是內(nèi)置命令,需要安裝,但是目前的已經(jīng)安裝好了(之前選了開發(fā)工具)。
語法:#traceroute 主機地址

類似于查看快遞的跟蹤路由:

擴展:在windows下也有類似的命令:tracert 主機地址

在線工具網(wǎng)址:http://tool.chinaz.com
4、arp
地址解析協(xié)議,即ARP(Address Resolution Protocol),是根據(jù)IP地址獲取(MAC)物理地址的協(xié)議。

當一個主機發(fā)送數(shù)據(jù)時,首先查看本機MAC地址緩存中有沒有目標主機的MAC地址, 如果有就使用緩存中的結(jié)果;如果沒有,ARP協(xié)議就會發(fā)出一個廣播包,該廣播包要求查詢目標主機IP地址對應(yīng)的MAC地址,擁有該IP地址的主機會發(fā)出回應(yīng),回應(yīng)中包括了目標主機的MAC地址,這樣發(fā)送方就得到了目標主機的MAC地址。如果目標主機不在本地子網(wǎng)中,則ARP解析到的MAC地址是默認網(wǎng)關(guān)的MAC地址。
常用語法:#arp -a 查看本地緩存mac表
#arp -d 主機地址 刪除指定的緩存記錄

該命令在windows下同樣適用。
5、tcpdump(了解)
作用:抓包,抓取數(shù)據(jù)表
常用語法:
#tcpdump協(xié)議 port 端口
#tcpdump協(xié)議 port 端口 host 地址
#tcpdump-i 網(wǎng)卡設(shè)備名
查看22端口(ssh)的數(shù)據(jù)包:

00:09:17.xxxx 監(jiān)聽數(shù)據(jù)的時分秒
IP:使用的協(xié)議類型
192.168.21.1 數(shù)據(jù)包的一個方向(來自)
> 數(shù)據(jù)的流向
192.168.21.136 數(shù)據(jù)包的另外一個方向(到達)
三、項目上線流程(必須掌握)
1、服務(wù)器選配購買
項目上線服務(wù)器必須是外網(wǎng)服務(wù)器。
一般服務(wù)器有2種情況:購買真實服務(wù)器、購買云服務(wù)器。
購買真實服務(wù)器一次性成本過高,所以現(xiàn)在基本都是選擇云服務(wù)器。
云服務(wù)的廠商:阿里云、騰訊云、知道創(chuàng)宇(加速樂)、華為云、盛大云、新浪云(sae)、亞馬遜云等等。
以后以阿里云為例:
官網(wǎng):http://www.aliyun.com
①打開阿里云官網(wǎng),選擇產(chǎn)品中的“云服務(wù)器ECS”

在頁面上點擊“立即購買”:

②選擇具體的配置






安全組需要先在控制面板中創(chuàng)建,創(chuàng)建好之后才能在這里進行選擇(安全組類似于防火墻,可以設(shè)置相關(guān)規(guī)則):


進入后臺查看信息:

需要重置密碼的話,則可以選擇右側(cè)“更多”選擇“重置密碼”,然后重啟服務(wù)器,最后可以通過遠程終端連接服務(wù)器:

2、域名購買
①在首頁產(chǎn)品中找到域名注冊

域名注冊得先查看是否可以注冊:

選擇需要的域名:

確認購買信息:

購買之后就可以在后臺控制面板中去查看域名情況。
3、域名備案
備案:當申請域名的人要想在國內(nèi)使用域名,則需要向當?shù)氐耐ㄐ殴芾砭?#xff08;省級)去申請報備。
備案前提:想要使用境內(nèi)服務(wù)器的話,則必須得備案。
在管理后臺點擊“ICP備案系統(tǒng)”

點擊新增主體備案:
填寫完基本信息之后點擊增加網(wǎng)站:

備案服務(wù)號可以在控制臺頂部去獲取:

申請到備案服務(wù)號之后填寫繼續(xù):

會讓用戶下載一個圖片:網(wǎng)站真實性核驗單
下載打印,填寫好上傳到阿里云備案系統(tǒng)中。
后面等待初審,初審?fù)ㄟ^之后繼續(xù)下一步(初審時間一般1天即可)
拍照
上傳照片
等待管局審核(到這個步驟基本是已經(jīng)通過,審核周期一般是15個工作日)。
等待審核通過,就會收到工信部發(fā)送的短信與郵件通知,郵件中有備案號和備案密碼(備案密碼用于注銷備案)。
4、域名解析
點擊“解析”

解析:將域名綁定到一個服務(wù)器地址的操作
DNS:domain name server,用于將域名轉(zhuǎn)化成ip地址的服務(wù)器。

點擊右上角的添加記錄:
選擇記錄:

例如:需要將www.linux123.xyz解析到之前購買的云主機上,則解析可以設(shè)置如下:

解析之后可以通過在線ping命令檢測效果:

5、配置生產(chǎn)環(huán)境(最后1天)
6、上傳代碼
此時需要使用上傳工具:pscp,filezilla。
和之前使用的方式一樣。
Day9:Shell基礎(chǔ)
一、關(guān)于shell
1、什么是shell
什么是shell?
Shell(外殼)是一個用 C 語言編寫的程序,它是用戶使用 Linux 的橋梁。Shell 既是一種命令語言,又是一種程序設(shè)計語言。
Shell 是指一種應(yīng)用程序,這個應(yīng)用程序提供了一個界面,用戶通過這個界面訪問操作系統(tǒng)內(nèi)核的服務(wù)。
什么是腳本?
腳本簡單地說就是一條條的文字命令,這些文字命令是可以看到的(如可以用記事本打開查看、編輯)。
常見的腳本:JavaScript(JS,前端),VBScript,ASP,JSP,PHP(后端),SQL(數(shù)據(jù)庫操作語言),Perl,Shell,python,Ruby,JavaFX,Lua等。
為什么要學(xué)習(xí)和使用shell?
Shell屬于內(nèi)置的腳本
程序開發(fā)的效率非常高,依賴于功能強大的命令可以迅速地完成開發(fā)任務(wù)(批處理)
語法簡單,代碼寫起來比較輕松,簡單易學(xué)
常見的shell種類?
在linux中有很多類型的shell,不同的shell具備不同的功能,shell還決定了腳本中函數(shù)的語法,Linux中默認的shell是/bin/bash(重點),流行的shell有ash、bash、ksh、csh、zsh等,不同的shell都有自己的特點以及用途。
csh
C shell 使用的是“類C”語法,csh是具有C語言風(fēng)格的一種shell,其內(nèi)部命令有52個,較為龐大。目前使用的并不多,已經(jīng)被/bin/tcsh所取代。
ksh
Korn shell 的語法與 Bourne shell 相同,同時具備了 C shell的易用特點。許多安裝腳本都使用 ksh ,ksh有42條內(nèi)部命令,與bash相比有一定的限制性。
tcsh
tcsh是csh的增強版,與 C shell 完全兼容。
sh
是一個快捷方式,已經(jīng)被/bin/bash所取代。
nologin
指用戶不能登錄
zsh
目前Linux里最龐大的一種shell:zsh。它有84個內(nèi)部命令,使用起來也比較復(fù)雜。一般情況下,不會使用該shell。
bash
大多數(shù)Linux系統(tǒng)默認使用的shell,bash shell 是 Bourne shell 的一個免費版本,它是最早的 Unix shell,bash還有一個特點,可以通過help命令來查看幫助。包含的功能幾乎可以涵蓋shell所具有的功能,所以一般的shell腳本都會指定它為執(zhí)行路徑。
2、shell入門
編寫規(guī)范:
代碼規(guī)范:
#!/bin/bash [指定告知系統(tǒng)當前這個腳本要使用的shell解釋器]
Shell相關(guān)指令
文件命名規(guī)范:
文件名.sh .sh是linux下bash shell 的默認后綴
使用流程:
①創(chuàng)建.sh文件 touch/vim
②編寫shell代碼
③執(zhí)行shell腳本 腳本必須得有執(zhí)行權(quán)限
案例1:創(chuàng)建test.sh,實現(xiàn)第一個shell腳本程序,輸出hello world.
輸出命令:#echo 123
注意:輸出的內(nèi)容如果包含字母和符號(不包含變量),則需要用引號包括起來。如果是純數(shù)字可以包也可以不包。


注意,這里在運行時一定要寫成 ./test.sh,而不是 test.sh,運行其它二進制的程序也一樣,直接寫 test.sh,Linux 系統(tǒng)會去 PATH(環(huán)境變量) 里尋找有沒有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 里,你的當前目錄通常不在 PATH 里,所以寫成 test.sh 是會找不到命令的,要用 ./test.sh 告訴系統(tǒng)說,就在當前目錄找。
案例2:使用root用戶帳號創(chuàng)建并執(zhí)行test2.sh,實現(xiàn)創(chuàng)建一個shelltest用戶,并在其家目錄中新建文件try.html。

腳本執(zhí)行的另外一個方式:/bin/bash 腳本的路徑(了解)

#
Shell腳本分為簡單的寫法(簡單命令的堆積)和復(fù)雜寫法(程序的設(shè)計)
二、shell進階(重點)
1、變量(重點)
1.1、變量的含義
a. 什么是量
量就是數(shù)據(jù).
b. 什么是變量
數(shù)據(jù)可以發(fā)生改變就是變量.
在一個腳本周期內(nèi),其值可以發(fā)生改變的量就是變量.
c. 什么叫做一個腳本周期
一個腳本周期我們可以簡單的理解為當前的shell文件
變量是shell中不可或缺的一部分,也是最基礎(chǔ)、最重要的組成部分。
1.2、變量的定義與使用(重點)
變量,先定義后使用。
定義形如:class_name="yunwe "
使用形如:echo $class_name
變量就是由2部分組成,一個是變量名(左邊),另外一部分是變量的值(右邊)
變量名和變量值是什么關(guān)系??
變量名和變量值是使用和被使用關(guān)系; 我們的變量名來使用變量值;
在使用變量的時候一定需要在變量名前面添加一個$符號,該要求在其他語言中也存在的(例如php)。
變量名的規(guī)范
注意,變量名后面的等號左右不能有空格,這可能和你熟悉的所有編程語言都不一樣。同時,變量名的命名須遵循如下規(guī)則:
命名只能使用英文字母,數(shù)字和下劃線,首個字符不能以數(shù)字開頭。
中間不能有空格,可以使用下劃線“_”。
不能使用標點符號。
不能使用bash里的關(guān)鍵字(可用help命令查看保留關(guān)鍵字)。
問題:以下哪個shell變量名是合法的?
A. var B.?var C. user*name D.echo
案例1:使用變量改寫入門腳本中的第1個shell腳本。


關(guān)于單雙引號的問題:
雙引號能夠識別變量,雙引號能夠?qū)崿F(xiàn)轉(zhuǎn)義(類似于“\*”)
單引號是不能識別變量,只會原樣輸出,單引號是不能轉(zhuǎn)義的
案例2:定義一個變量,輸出當前時間,要求格式為“年-月-日時:分:秒”。

注意:反引號(esc鍵下方的那個鍵),當在腳本中需要執(zhí)行一些指令并且將執(zhí)行的結(jié)果賦給變量的時候需要使用“反引號”。

1.3、只讀變量(了解)
語法:readonly 變量名
案例:定義變量a并且其值為10,隨后設(shè)置其為只讀變量,再去嘗試重新賦值


1.4、接收用戶輸入(重點)
語法:read -p 提示信息 變量名
案例:編寫一個腳本test6.sh,要求執(zhí)行之后提示用戶輸入文件的名稱(路徑),然后自動為用戶創(chuàng)建該文件


1.5、刪除變量(了解)
語法:unset 變量名
案例:定義變量b=20,再輸出b的值,隨后刪除b,最后再輸出下b


2、條件判斷語句
老婆給當程序員的老公打電話:下班順路買一斤包子帶回來,如果看到賣西瓜的,買一個。當晚,程序員老公手捧一個包子進了家門…老婆怒道:你怎么就買了一個包子?!老公答曰:因為看到了賣西瓜的。
把程序員老婆的話當作一段需求分析一下吧。買一斤包子是一個確定無疑的需求項,無論后面是什么情況什么條件,前面這一斤包子是肯定要買的。看到賣西瓜的是一個條件判斷,后面“買一個”是一個模糊不清的需求項,買一個什么呢?需求里沒說啊??蛻舭堰@個當作開發(fā)人員默認了解的內(nèi)容了??墒亲鳛橐粋€成熟合格的程序員,該老婆的丈夫應(yīng)該馬上跟進確認需求“買一個什么?”,要不然程序可怎么寫呢?所以笑話里該程序員是不合格的,起碼是不積極不負責(zé)的。在沒有明確需求的情況下,他只能按照自己的理解來完成工作了。那比較可能的結(jié)果就有如下幾種:
1 看到賣西瓜的,買一個西瓜
如果看到賣西瓜的
那么
買一個西瓜
否則
買一斤包子
2 看到賣西瓜的,買一個包子
如果看到賣西瓜的
那么
買一個包子
3 看到賣西瓜的,買一個賣西瓜的
4 看到賣西瓜的,買一個老婆一直想買的東西
5 看到賣西瓜的,隨便買一個東西
上述1和2下面的條件漢字描述稱之為“偽代碼”,也是屬于條件表達式的語法。
語法1(一個條件):
ifcondition
then
command1
command2
...
fi
單行寫法(一般在命令行中執(zhí)行的時候):if [condition ]; then command; fi
語法2(兩個條件):
ifcondition
then
command1
command2
...
else
command
fi
語法3(多個條件):
ifcondition1
then
command1
elifcondition2
then
command2
else
commandN
fi
3、運算符
在shell中,運算符和其他編程腳本語言一樣,常見的有算數(shù)運算符、關(guān)系運算符、
邏輯運算符、字符串運算符、文件測試運算符等
3.1、算數(shù)運算符
下表列出了常用的算術(shù)運算符,假定變量 a 為 10,變量 b 為 20:
運算符 | 說明 | 舉例 |
+ | 加法 | `expr $a + $b` 結(jié)果為 30。 |
- | 減法 | `expr $a - $b` 結(jié)果為 -10。 |
* | 乘法 | `expr $a \* $b` 結(jié)果為 200。 |
/ | 除法 | `expr $b / $a` 結(jié)果為 2。 |
% | 取余 | `expr $b % $a` 結(jié)果為 0。 |
= | 賦值 | a=$b 將把變量 b 的值賦給 a。 |
== | 相等。用于比較兩個數(shù)字,相同則返回 true(真)。 | [ $a == $b ] 返回 false(假)。 |
!= | 不相等。用于比較兩個數(shù)字,不相同則返回 true。 | [ $a != $b ] 返回 true。 |
注意:條件表達式要放在方括號之間,并且要有空格,例如: [$a==$b] 是錯誤的,必須寫成 [ $a == $b ]。
原生bash不支持簡單的數(shù)學(xué)運算,但是可以通過其他命令來實現(xiàn),例如 awk 和 expr,expr 最常用。
expr 是一款表達式計算工具,使用它能完成表達式的求值操作。
例如,兩個數(shù)相加(注意使用的是反引號 ` 而不是單引號'):
#!/bin/bash
val=`expr2 + 2`
echo"兩數(shù)之和為 : $val"
兩點注意:
表達式和運算符之間要有空格,例如 2+2 是不對的,必須寫成 2 + 2,這與我們熟悉的大多數(shù)編程語言不一樣。
完整的表達式要被 ` ` 包含,注意這個字符不是常用的單引號,在 Esc 鍵下邊。


3.2、關(guān)系運算符
關(guān)系運算符只支持數(shù)字,不支持字符串,除非字符串的值是數(shù)字。
下表列出了常用的關(guān)系運算符,假定變量 a 為 10,變量 b 為 20:
運算符 | 說明 | 舉例 |
-eq | 檢測兩個數(shù)是否相等,相等返回 true。 | [ $a -eq $b ] 返回 false。 |
-ne | 檢測兩個數(shù)是否相等,不相等返回 true。 | [ $a -ne $b ] 返回 true。 |
-gt | 檢測左邊的數(shù)是否大于右邊的,如果是,則返回 true。 | [ $a -gt $b ] 返回 false。 |
-lt | 檢測左邊的數(shù)是否小于右邊的,如果是,則返回 true。 | [ $a -lt $b ] 返回 true。 |
-ge | 檢測左邊的數(shù)是否大于等于右邊的,如果是,則返回 true。 | [ $a -ge $b ] 返回 false。 |
-le | 檢測左邊的數(shù)是否小于等于右邊的,如果是,則返回 true。 | [ $a -le $b ] 返回 true。 |
-eq:equal
-ne:not equal
-gt:great than
-lt:less than
-ge:great than or equal
-le:less than or equal
案例:使用a=10,b=20來實現(xiàn)本案例


課堂作業(yè):
寫一個腳本,判斷當前輸入的用戶是否存在。如果存在則提示“用戶存在”否則提示“用戶不存在”。

3.3、邏輯運算符
下表列出了常用的布爾運算符,假定變量 a 為 10,變量 b 為 20:
運算符 | 說明 | 舉例 |
! | 非運算,表達式為 true 則返回 false,否則返回 true。 | [ ! false ] 返回 true。 |
-o | 或(或者)運算,有一個表達式為 true 則返回 true。 | [ $a -lt 20 -o $b -gt 100 ] 返回 true。 |
-a | 與(并且)運算,兩個表達式都為 true 才返回 true。 | [ $a -lt 20 -a $b -gt 100 ] 返回 false。 |
或運算:一個為真即為真,全部為假才是假
與運算:一個為假即為假,全部為真才是真

3.4、字符串運算符
下表列出了常用的字符串運算符,假定變量 a 為 "abc",變量 b 為 "efg":
運算符 | 說明 | 舉例 |
= | 檢測兩個字符串是否相等,相等返回 true。 | [ $a = $b ] 返回 false。 |
!= | 檢測兩個字符串是否相等,不相等返回 true。 | [ $a != $b ] 返回 true。 |
-z | 檢測字符串長度是否為0,為0返回 true。 | [ -z $a ] 返回 false。 |
-n | 檢測字符串長度是否為0,不為0返回 true。 | [ -n $a ] 返回 true。 |
str | 檢測字符串是否為空,不為空返回 true。 | [ $a ] 返回 true。 |
案例:將上述的語法驗證下

3.5、文件測試運算符(重點)
文件測試運算符用于檢測 Unix/Linux 文件的各種屬性。
屬性檢測描述如下:
操作符 | 說明 | 舉例 |
-b file | 檢測文件是否是塊設(shè)備文件,如果是,則返回 true。 | [ -b $file ] 返回 false。 |
-c file | 檢測文件是否是字符設(shè)備文件,如果是,則返回 true。 | [ -c $file ] 返回 false。 |
-d file | 檢測文件是否是目錄,如果是,則返回 true。 | [ -d $file ] 返回 false。 |
-f file | 檢測文件是否是普通文件(既不是目錄,也不是設(shè)備文件),如果是,則返回 true。 | [ -f $file ] 返回 true。 |
-g file | 檢測文件是否設(shè)置了 SGID 位,如果是,則返回 true。 | [ -g $file ] 返回 false。 |
-k file | 檢測文件是否設(shè)置了粘著位(Sticky Bit),如果是,則返回 true。 | [ -k $file ] 返回 false。 |
-p file | 檢測文件是否是有名管道,如果是,則返回 true。 | [ -p $file ] 返回 false。 |
-u file | 檢測文件是否設(shè)置了 SUID 位,如果是,則返回 true。 | [ -u $file ] 返回 false。 |
-r file | 檢測文件是否可讀,如果是,則返回 true。 | [ -r $file ] 返回 true。 |
-w file | 檢測文件是否可寫,如果是,則返回 true。 | [ -w $file ] 返回 true。 |
-x file | 檢測文件是否可執(zhí)行,如果是,則返回 true。 | [ -x $file ] 返回 true。 |
-s file | 檢測文件是否為空(文件大小是否大于0),不為空返回 true。 | [ -s $file ] 返回 true。 |
-e file | 檢測文件(包括目錄)是否存在,如果是,則返回 true。 | [ -e $file ] 返回 true。 |
案例:測試上述標綠色的效果

注意:權(quán)限幾個判斷,如果只有一個部分符合,則認為是有權(quán)限的。
4、shell腳本附帶選項(重點)
問題描述:在linux shell中如何處理tail -10 access.log這樣的命令行選項?
步驟:
調(diào)用tail指令
系統(tǒng)把后續(xù)選項傳遞給tail
Tail先去打開指定的文件
取出最后10行
問題:自己寫的shell是否也可以像內(nèi)置命令一樣傳遞一些選項呢?
答:可以的,傳遞方式與上述的描述是一樣的,關(guān)鍵是怎么接收。例如:
傳遞:
#./test.sh a b c
接收:
在腳本中可以用“$1”來表示a,“$2”來表示b,以此類推。
接收可以用“$”加上選項對應(yīng)的序號即可。
測試:編寫test14.sh,傳遞a,b,c,輸出其值

其實$1、$2是變量。
練習(xí):創(chuàng)建自定義指令“user”,可以直接執(zhí)行,要求該指令具備以下語法和功能:
a.#user -add 用戶名 【添加用戶】
b.#user -del 用戶名 【刪除用戶及其家目錄】

同時題目中要求是指令,所以可以再去添加個別名:

三、作業(yè)
1、嘗試寫一個shell的簡易計算器功能,實現(xiàn)加減乘除。
2、作業(yè):使用-e文件測試運算符,改寫“1.4接收用戶輸入”的案例,在創(chuàng)建文件的時候需要先判斷是否存在,如果存在則提示用戶并且不執(zhí)行創(chuàng)建操作,如果不存在則創(chuàng)建。
3、嘗試創(chuàng)建一個shell腳本,該腳本要求可以類似于“touch”指令一樣,能夠使用“touch 文件路徑”的形式進行創(chuàng)建文件操作,并且要求創(chuàng)建好的文件權(quán)限默認為755。
Day10:MySQL基礎(chǔ)
一、關(guān)于數(shù)據(jù)庫
1、什么是數(shù)據(jù)庫

如果一個項目是動態(tài)(內(nèi)容會變化的,網(wǎng)頁后綴.jsp、.php、.shtml等)內(nèi)容的話,則數(shù)據(jù)庫是必不可少的一個環(huán)節(jié)。
2、MySQL簡介
MySQL是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL AB 公司開發(fā),2008年被Sun公司收購,目前屬于 Oracle 旗下產(chǎn)品。MySQL 是最流行的數(shù)據(jù)庫管理系統(tǒng)之一,在 WEB 應(yīng)用方面,MySQL是最好的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫管理系統(tǒng)) 應(yīng)用軟件。其和php是黃金搭檔(LAMP/LNMP)。
3、常見的其他數(shù)據(jù)庫軟件
目前市場上還有:Oracle(重量級的數(shù)據(jù)庫)、MS SQL Server(微軟)、Access(微軟)、PostgreSQL、DB2、Mariadb(MySQL分支,完全兼容MySQL)。
二、MySQL的安裝與初始化
操作之前先確保計算機時間準確。
1、Linux下的軟件安裝方式(初步)
a. 源碼包(建議)
優(yōu)點
開源,如果有足夠的能力,可以修改源代碼
編譯安裝,更加適合自己的系統(tǒng),穩(wěn)定高效
缺點
安裝步驟較多,容易出錯
編譯過程時間較長
案例:使用源碼編譯安裝方式安裝ncurses(一種常用的終端庫)
擴展:解包
常用語法:
#tar -zxvf *.tar.gz (大多數(shù))
#tar -jxvf *.tar.bz2
選項含義:
-z或--gzip或--ungzip:通過gzip指令處理文件;
-x或--extract或--get:從文件中還原文件;
-v:顯示操作過程;
-f或--file:指定一個文件;
-j:支持bzip2解壓文件;
①先將軟件包傳遞到服務(wù)器上“/usr/local/src”

②解壓需要安裝的源碼包
# tar -zxvf ncurses-6.1.tar.gz

③切換到源碼文件夾,然后執(zhí)行后續(xù)操作
配置(config/configure/bootstrap)→編譯(make/bootstrapd)→安裝(make install/bootstrapdinstall)
配置操作主要是指定軟件的安裝目錄、需要的依賴在什么地方、指定不需要可選依賴、配置文件的路徑、通用數(shù)據(jù)存儲位置等等。
指定安裝的路徑:--prefix=路徑
需要依賴的路徑:--with-PACKAGE名=[包所在的路徑]
不需要依賴:--without-PACHAGE名
# ./configure --prefix=/usr/local/ncurses

# make

# make install

成功之后查看目錄(可選):

b. 二進制包(rpm)
優(yōu)點: 包管理系統(tǒng)簡單,只需要幾個命令就可以實現(xiàn)包的安裝,升級,查詢和卸載
缺點: 經(jīng)過編譯,不再可以看到源代碼
回顧rpm相關(guān)指令:
#rpm -qa|grep 關(guān)鍵詞
#rpm -e 關(guān)鍵詞[--nodeps]
#rpm -ivh 完整名稱
#rpm -Uvh 完整名稱
#rpm -qf 文件路徑 【查詢指定文件屬于哪個包】

案例:使用二進制包安裝lynx(一款純命令行的瀏覽器)
在光盤中就有這個包

例如查看百度:#lynx --dump www.baidu.com
c. yum等傻瓜式安裝
優(yōu)點: 安裝簡單,快捷
缺點: 完全喪失了自定義性
注意:如果不更改軟件來源的情況下,是需要聯(lián)網(wǎng)才能使用yum的。
常用的yum指令:
#yum list [installed] 列出當前已經(jīng)裝的和可以裝的軟件(全部)
#yum search 名 搜索指定的關(guān)鍵詞的包
#yum [-y] install 包名 安裝指定的包(-y表示允許不再確認)
#yum [-y] update [包名] 更新指定的包,不指定包則更新全部軟件
#yum [-y] remove 包名 卸載指定的包
案例:使用yum指令卸載火狐瀏覽器
#yum remove firefox

案例:使用yum指令安裝火狐瀏覽器
#yum install firefox
2、安裝MySQL(重點)
注:此處安裝以yum安裝為例
2.1、MySQL安裝
#yum install mysql-server

完成的:

2.2、MySQL初始化
#service mysqld start

查看端口號(默認端口號3306):

# mysql_secure_installation
Entercurrent password for root (enter for none):請輸入當前root用戶的密碼,如果沒有按回車,注意此root并非linux的root用戶。
Setroot password?是否設(shè)置root密碼?
需要設(shè)置的密碼:qhabOfhlluB9
Removeanonymous users?是否移除匿名用戶,選擇移除(Y)
Disallowroot login remotely?是否不允許root遠程登錄(默認不允許)
Removetest database and access to it?是否移除測試數(shù)據(jù)庫(建議先不移除)
Reloadprivilege tables now?是否重新加載權(quán)限表(當我們更改了mysql用戶相關(guān)的信息之后建議去重載權(quán)限)

2.3、MySQL的啟動控制
語法:service mysqldstart/stop/restart
進入mysql的方式:
#mysql -u用戶名 -p
退出MySQL到linux命令行:
mysql> exit
2.4、默認目錄/文件位置(了解)
數(shù)據(jù)庫存儲目錄:/var/lib/mysql
配置文件:/etc/my.cnf

三、MySQL的基本操作(難點)
1、名詞介紹
以Excel文件舉例:
數(shù)據(jù)庫:可以看作是整個excel文件。
數(shù)據(jù)表:可以看作是一個excel文件中的工作表。
行(記錄):可以看作是一個工作表中的一行
列(字段):可以看作是一個工作表總的一列
2、庫操作(重點)
以下命令在MySQL終端命令行中執(zhí)行(大小寫均可):
SHOW DATABASES; 顯示當前MySQL中全部的數(shù)據(jù)庫
CREATE DATABASE 庫名; 創(chuàng)建數(shù)據(jù)庫
DROP DATABASE 庫名; 刪除數(shù)據(jù)庫
USE 庫名; 切換數(shù)據(jù)庫
Show databases效果

創(chuàng)建數(shù)據(jù)庫:創(chuàng)建yunwei數(shù)據(jù)庫

刪除數(shù)據(jù)庫:刪除yunwei數(shù)據(jù)庫

切換數(shù)據(jù)庫:切換到test數(shù)據(jù)庫

3、表操作
SHOW TABLES; 顯示當前數(shù)據(jù)庫中所有的表名(必須先use數(shù)據(jù)庫)
CREATE TABLE 表名稱 在當前數(shù)據(jù)庫下創(chuàng)建數(shù)據(jù)表
(
列名稱1 數(shù)據(jù)類型[NOT NULL AUTO_INCREMENT],
列名稱2 數(shù)據(jù)類型,
列名稱3 數(shù)據(jù)類型,
....,
PRIMARY KEY(主鍵字段名)
);
常見的數(shù)據(jù)類型:int(整型)、char(定長字符)、varchar(不定長字符)。
主鍵一般就是序號所在的那一列(主鍵不能重復(fù))。
DESC 表名; 描述一個數(shù)據(jù)表(查看表結(jié)構(gòu))
DROP TABLE [IF EXISTS] 表名; 刪除一個數(shù)據(jù)表
案例:使用上述的語法
查看所有的數(shù)據(jù)表

創(chuàng)建數(shù)據(jù)表(去test庫中創(chuàng)建)
要求:表名xg,要求有字段如下:
Id字段,11位整型,不為空,自增,主鍵
Username字段,varchar類型,20長度
Password字段,char類型,32長度
SQL(standard query language)語句:
Create table xg(
Idint(11) not null auto_increment,
Usernamevarchar(20),
Passwordchar(32),
Primary key(id)
);

查看表結(jié)構(gòu):

刪除數(shù)據(jù)表:

4、記錄/字段操作(重點)
4.1、增加記錄
語法1:INSERT INTO 表名稱 VALUES (值1, 值2,....);
語法2:INSERT INTO 表名稱 (列1, 列2,...) VALUES (值1, 值2,....);
案例:往數(shù)據(jù)表xg表中新增一個記錄username為zhangsan,password為123456(加密結(jié)果E10ADC3949BA59ABBE56E057F20F883E)
Sql語句:
insert into xg (username,password) v alues(‘zhangsan’,’E10ADC3949BA59ABBE56E057F20F883E’)

要求前面的列名與值要一一對應(yīng)。
4.2、更新記錄
語法:UPDATE 表名稱 SET 列名稱1 = 新值1,列名稱2 = 新值2… WHERE 列名稱 = 某值;
案例:使用更新語句更新id大于等于2的記錄,將其密碼改為:25F9E794323B453885F5181F1B624D0B
SQL語句:
Update xg set password = ‘25F9E794323B453885F5181F1B624D0B’where id >= 2;

以后在執(zhí)行影響行數(shù)的sql操作的時候一定需要注意條件是否寫錯或者漏寫。
4.3、查詢記錄
SELECT列名稱1,列名稱2… FROM 表名稱WHERE 條件;
SELECT * FROM 表名稱WHERE 條件;
案例:查詢剛才新增的記錄
只查詢用戶名和密碼,并且是id=2的:
Select username,password from xg where id =2;

查詢?nèi)?#xff1a;
Select * from xg;

4.4、刪除記錄
DELETEFROM 表名稱 WHERE列名稱 =值;
案例:刪除id為2的記錄
Delete from xg where id = 2;

5、備份與還原(重點)
5.1、備份(導(dǎo)出)
全量備份(數(shù)據(jù)+結(jié)構(gòu)):#mysqldump -uroot-p123456 -A > 備份文件路徑
指定庫備份(數(shù)據(jù)+結(jié)構(gòu)):# mysqldump-uroot -p123456 庫名 > 備份文件路徑
多個庫備份(數(shù)據(jù)+結(jié)構(gòu)):# mysqldump -uroot -p123456 --databases db1db2 > 備份文件路徑
案例:備份整個庫
# mysqldump -uroot -pqhabOfhlluB9 -A >/root/sql_201804061609.sql

案例:每1分鐘自動備份1次test數(shù)據(jù)庫

計劃任務(wù)編寫:

等待幾分鐘觀察目錄情況:

5.2、還原(導(dǎo)入)
還原部分分(1)mysql命令行source方法和 (2)系統(tǒng)命令行方法
1.還原全部數(shù)據(jù)庫:
(1) mysql命令行:mysql> source 備份文件路徑
(2) 系統(tǒng)命令行:#mysql -uroot -p123456 < 備份文件路徑
2.還原單個數(shù)據(jù)庫(需指定數(shù)據(jù)庫)
(1) mysql> use 庫名
mysql> source 備份文件路徑
(2) #mysql -uroot -p123456 庫名< 備份文件路徑
3.還原單個數(shù)據(jù)庫的多個表(需指定數(shù)據(jù)庫)
(1) mysql> use 庫名
mysql> source 備份文件路徑
(2) mysql -uroot -p123456 庫名< 備份文件路徑
4.還原多個數(shù)據(jù)庫,(一個備份文件里有多個數(shù)據(jù)庫的備份,此時不需要指定數(shù)據(jù)庫)
(1) mysql命令行:mysql> source 備份文件路徑
(2) 系統(tǒng)命令行: mysql -uroot -p123456 < 備份文件路徑
案例1:人為刪除xg表(模擬數(shù)據(jù)表丟失),然后通過最后一次備份還原數(shù)據(jù)表。
先刪除數(shù)據(jù)表

還原操作:

案例2:需要還原sql文件到test庫(mobile.sql 31萬條數(shù)據(jù))

設(shè)置Mysql連接字符集:
Mysql>set names utf8; 【三碼一致,服務(wù)器端+傳輸過程中+客戶端】

四、擴展
1、mysql的遠程管理工具
分為兩大類:B/S架構(gòu)、C/S架構(gòu)。
B/S:B是指瀏覽器,S是指服務(wù)器。例如:百度搜索應(yīng)用就屬于BS架構(gòu)軟件。
C/S:C是指客戶端,S是指服務(wù)器。例如:QQ、電腦端微信等應(yīng)用程序都是CS架構(gòu)。
在BS中,mysql有個典型的管理工具:PMA(phpMyAdmin)

CS中比較典型的軟件:navicat、mysql workbrach

要解決的問題:允許mysql遠程登錄

a. 先進入數(shù)據(jù)庫選擇mysql數(shù)據(jù)庫;
b. 執(zhí)行sql語句:select host,user fromuser;

c. 將其中的一個記錄的host值改為“%”,表示可以允許任何地方登錄

d. 刷新權(quán)限表或者重啟mysql
刷新權(quán)限:mysql> flushprivileges;

e. navicat登錄成功

五、作業(yè)
1、導(dǎo)入sql文件(mobile.sql)到test數(shù)據(jù)庫,并使用該數(shù)據(jù)表進行數(shù)據(jù)的增刪改查練習(xí)。
2、請編寫一個簡單的shell腳本,文件名為autoBakup.sh,并寫出計劃任務(wù)指令,能夠?qū)崿F(xiàn)每天0點整自動備份整個MySQL數(shù)據(jù)庫。
Day11:Yum項目上線實戰(zhàn) (網(wǎng)站運維)
一、編譯安裝與卸載Nginx
Nginx:是一款比較流行的web服務(wù)器軟件,類似于Apache。

1、安裝nginx
①下載nginx
下載地址:https://nginx.org/en/download.html
使用在服務(wù)器端下載的方式進行下載(此處不使用filezilla):
#wget 地址
例如當前需要下載nginx到“/usr/local/src”
#wget https://nginx.org/download/nginx-1.13.11.tar.gz


②解壓nginx安裝包
# tar -zxvf nginx-1.13.11.tar.gz
③進入nginx解壓目錄
開始進行配置、編譯、安裝操作
在配置時候報錯:沒有PCRE庫

直接yum安裝pcre-devel:
#yum installpcre-devel

報錯缺少zlib庫:

直接使用yum安裝zlib庫:
#yum installzlib-devel

還需要自己去下載一個zlib的源碼包,然后解壓出來:


最終的nginx配置命令:
#./configure--prefix=/usr/local/nginx --with-pcre --with-zlib=/usr/local/src/zlib-1.2.11
開始安裝:
#make

最后安裝:
#make install

安裝好的目錄:

④運行nginx
先停止Apache,然后再運行nginx

#/usr/local/nginx/sbin/nginx 【啟動命令】
#/usr/local/nginx/sbin/nginx-s reload 【重載,重載配置文件】
啟動效果:

⑤了解:卸載編譯安裝的軟件
#rm -rf 軟件的安裝目錄
注意:卸載一個編譯安裝的軟件的時候必須先停止。
二、關(guān)于LAMP
LAMP:Linux + Apache+ MySQL + PHP LAMP架構(gòu)(組合)
LNMP:Linux + Nginx + MySQL + php-fpm LNMP架構(gòu)(組合)
LNMPA:Linux + Nginx + MySQL + PHP + Apache Nginx代理方式



三、LAMP環(huán)境部署
首先登錄控制臺獲取需要連接的主機ip地址:

后續(xù)可以進行遠程登錄。

在整個LAMP中需要自己安裝的也就只有Apache +PHP + Mysql。后續(xù)以yum為例。
1、PHP與Apache的安裝
#yuminstall php 【在安裝好php的同時會一起順帶安裝Apache】

啟動Apache:#service httpd start

此處會有一個警告,無法確定主機的FQDN,如果需要處理,則需要修改Apache的配置文件(/etc/httpd/conf/httpd.conf)
# vim /etc/httpd/conf/httpd.conf
在文件中搜索“ServerName”

將前面的“#”去除,保存退出,重啟apache

測試訪問,在地址欄中輸入ip地址直接訪問(關(guān)閉防火墻):

測試php是否可以運行(默認的Apache站點目錄:/var/www/html):
創(chuàng)建一個index.php文件

運行php看到頁面:

2、MySQL的安裝與初始化
#yum install mysql-server

初始化操作:
#service mysqld start 【啟動】

# mysql_secure_installation

測試進行命令行登錄:
#mysql -uroot -p
如果需要遠程登錄則需要修改登錄主機:

重啟MYSQL或者刷新權(quán)限:
Mysql> flush privileges;

阿里云上的安全組端口放行:

使用navicat進行登錄:

3、項目上線
解壓項目包,將upload其中的內(nèi)容上傳到服務(wù)器站點目錄(/var/www/html)

①使用filezilla上傳需要的代碼文件
②傳完之后打開網(wǎng)站的首頁,會運行DZ的安裝向?qū)?/p>
a. 選擇同意協(xié)議

b. 賦予指定目錄寫權(quán)限

# chmod 777 -R /var/www/html

#yum install php-mysqli

重啟Apache:

重啟之后保證所有的配置項都是綠色的勾才可以下一步。
c. 選擇DZ的安裝方式

d. 填寫數(shù)據(jù)庫與管理員的信息

e. 安裝完成

f. 首頁
