Linux
Linux基本介紹
LInux中內(nèi)核版 和 發(fā)行版本的關(guān)系
內(nèi)核:只提供操作系統(tǒng)的基本功能和特性,如內(nèi)存管理,進(jìn)程調(diào)度,文件管理等等。
Linux內(nèi)核: https://www.kernel.org/
發(fā)行版:基于linus維護(hù)的linux內(nèi)核,是由一些廠商集成了漂亮易用的桌面和常用的軟件而發(fā)布的商品。
- 即是 內(nèi)核 + 軟件 + 工具 + 可完全安裝程序
常見(jiàn)的發(fā)行版
ReaHat
應(yīng)該稱為Redhat系列,包括RHEL(Redhat Enterprise Linux,也就是所謂的Redhat Advance Server,收費(fèi)版本)、Fedora Core(由原來(lái)的Redhat桌面版本發(fā)展而來(lái),免費(fèi)版本)、CentOS(RHEL的社區(qū)克隆版本,免費(fèi))。Redhat應(yīng)該說(shuō)是在國(guó)內(nèi)使用人群最多 的Linux版本,甚至有人將Redhat等同于Linux,而有些老鳥更是只用這一個(gè)版本的Linux。所以這個(gè)版本的特點(diǎn)就是使用人群數(shù)量大,資料非 常多,言下之意就是如果你有什么不明白的地方,很容易找到人來(lái)問(wèn),而且網(wǎng)上的一般Linux教程都是以Redhat為例來(lái)講解的。
Debian
幾大基礎(chǔ)發(fā)行版之一,Ubuntu就是基于Debian的。它的基本有如下特點(diǎn):
-
Free,最符合開(kāi)源精神的發(fā)行版。默認(rèn)不包含任何專有驅(qū)動(dòng)
-
不求新,但求穩(wěn)。軟件包通常選擇比較穩(wěn)定的版本而不是最新的版本
-
系統(tǒng)的開(kāi)發(fā)維護(hù)完全是由社區(qū)驅(qū)動(dòng)的
-
APT軟件包管理
-
圖形化安裝方式對(duì)新手友好
Ubuntu
國(guó)內(nèi)乃至全球熱門的Linux發(fā)行版。也是各種推薦入門Linux愛(ài)好者安裝的一個(gè)Linux發(fā)行版。它的特點(diǎn)主要有以下:
-
安裝簡(jiǎn)單
-
Unity 3D圖形界面,比較華麗(因人而異)
-
對(duì)一些專有驅(qū)動(dòng)支持比較好,例如顯卡驅(qū)動(dòng)
-
社區(qū)比較活躍,幾乎遇到的問(wèn)題都可以找到答案
CentOS
現(xiàn)在是大名鼎鼎的RedHat Linux的社區(qū)版(可以說(shuō)是剔除了專有代碼的RedHat),其特點(diǎn)就是相當(dāng)相當(dāng)?shù)姆€(wěn)定,版本更新緊跟RedHat。非常適合作為服務(wù)器操作系統(tǒng)使用。
Linux 系統(tǒng)目錄結(jié)構(gòu)
/- 根
每一個(gè)文件和目錄從根目錄開(kāi)始。
只有root用戶具有該目錄下的寫權(quán)限。請(qǐng)注意,/root是root用戶的主目錄,這與/不一樣
/bin中 - 用戶二進(jìn)制文件
包含二進(jìn)制可執(zhí)行文件。
在單用戶模式下,你需要使用的常見(jiàn)Linux命令都位于此目錄下。系統(tǒng)的所有用戶使用的命令都設(shè)在這里。
例如:ps、ls、ping、grep、cp
/sbin目錄 - 系統(tǒng)二進(jìn)制文件
就像/bin,/sbin同樣也包含二進(jìn)制可執(zhí)行文件。
但是,在這個(gè)目錄下的linux命令通常由系統(tǒng)管理員使用,對(duì)系統(tǒng)進(jìn)行維護(hù)。例如:iptables、reboot、fdisk、ifconfig、swapon命令
/etc - 配置文件
包含所有程序所需的配置文件。
也包含了用于啟動(dòng)/停止單個(gè)程序的啟動(dòng)和關(guān)閉shell腳本。例如:/etc/resolv.conf、/etc/logrotate.conf
hosts:設(shè)備名稱(或域名)到ip地址的解析,相當(dāng)于本地存在的dns功能。
/dev - 設(shè)備文件
包含設(shè)備文件。
這些包括終端設(shè)備、USB或連接到系統(tǒng)的任何設(shè)備。例如:/dev/tty#### /dev/usbmon0
/proc - 進(jìn)程信息
包含系統(tǒng)進(jìn)程的相關(guān)信息。
這是一個(gè)虛擬的文件系統(tǒng),包含有關(guān)正在運(yùn)行的進(jìn)程的信息。例如:/proc/{pid}目錄中包含的與特定pid相關(guān)的信息。
這是一個(gè)虛擬的文件系統(tǒng),系統(tǒng)資源以文本信息形式存在。例如:/proc/uptime
/var - 變量文件
var代表變量文件。
這個(gè)目錄下可以找到內(nèi)容可能增長(zhǎng)的文件。
這包括 - 系統(tǒng)日志文件(/var/log);包和數(shù)據(jù)庫(kù)文件(/var/lib);電子郵件(/var/mail);打印隊(duì)列(/var/spool);鎖文件(/var/lock);多次重新啟動(dòng)需要的臨時(shí)文件(/var/tmp);
/tmp - 臨時(shí)文件
包含系統(tǒng)和用戶創(chuàng)建的臨時(shí)文件。
當(dāng)系統(tǒng)重新啟動(dòng)時(shí),這個(gè)目錄下的文件都將被刪除。
/usr - 用戶程序
包含二進(jìn)制文件、庫(kù)文件、文檔和二級(jí)程序的源代碼。
/usr/bin中包含用戶程序的二進(jìn)制文件。如果你在/bin中找不到用戶二進(jìn)制文件,到/usr/bin目錄看看。例如:at、awk、cc、less、scp。
/usr/sbin中包含系統(tǒng)管理員的二進(jìn)制文件。如果你在/sbin中找不到系統(tǒng)二進(jìn)制文件,到/usr/sbin目錄看看。例如:atd、cron、sshd、useradd、userdel。
/usr/lib中包含了/usr/bin和/usr/sbin用到的庫(kù)。
/usr/local中包含了從源安裝的用戶程序。例如,當(dāng)你從源安裝Apache,它會(huì)在/usr/local/apache2中。
/home - HOME目錄
所有用戶用home目錄來(lái)存儲(chǔ)他們的個(gè)人檔案。
例如:/home/john、/home/nikita
/boot - 引導(dǎo)加載程序文件
包含引導(dǎo)加載程序相關(guān)的文件。
內(nèi)核的initrd、vmlinux、grub文件位于/boot下。
例如:initrd.img-2.6.32-24-generic、vmlinuz-2.6.32-24-generic
/lib - 系統(tǒng)庫(kù)
包含支持位于/bin和/sbin下的二進(jìn)制文件的庫(kù)文件.
庫(kù)文件名為 ld或lib.so.*
例如:ld-2.11.1.so,libncurses.so.5.7
/opt - 可選的附加應(yīng)用程序
opt代表可選的。
包含從個(gè)別廠商的附加應(yīng)用程序。
附加應(yīng)用程序應(yīng)該安裝在/opt/或者/opt/的子目錄下。
/mnt - 掛載目錄
臨時(shí)安裝目錄,系統(tǒng)管理員可以掛載文件系統(tǒng)。
/media - 可移動(dòng)媒體設(shè)備
用于掛載可移動(dòng)設(shè)備的臨時(shí)目錄。
舉例來(lái)說(shuō),掛載CD-ROM的/media/cdrom,掛載軟盤驅(qū)動(dòng)器的/media/floppy;
/srv - 服務(wù)數(shù)據(jù)
srv代表服務(wù)。
包含服務(wù)器特定服務(wù)相關(guān)的數(shù)據(jù)。
例如,/srv/cvs包含cvs相關(guān)的數(shù)據(jù)。
Linxu 安裝
Linux安裝流程
下一步->Accept 下一步->去掉 下一步->下一步->序列號(hào)
若缺少虛擬網(wǎng)卡VMware1和VMware8缺失,自救方法如下:
方法1:版本出問(wèn)題,使用更高級(jí)的VMware17
方法2:安裝插件cc.exe(一般無(wú)用)
方法3:軟件內(nèi)部的虛擬網(wǎng)絡(luò)編輯器,點(diǎn)擊還原默認(rèn)設(shè)置?或添加網(wǎng)絡(luò)(E)(一定概率成功)
方法4:部分電腦出現(xiàn)有道云和VMware沖突,卸載有道云
Linux部署環(huán)境流程
配置鏡像CentOS-7.x
典型(小白)自定義(高手)->稍后安裝操作系統(tǒng)->Linux CentOS 7 64位
->重命名CentOS7_base 默認(rèn)位置更改->設(shè)置最大磁盤20G(初始3G)->finished
重點(diǎn)配置->編輯虛擬機(jī)設(shè)置
配置內(nèi)存大?。?2G->8G、16G->4G、8G->2G
配置處理器數(shù)量:默認(rèn)單核,多核操作非高性能電腦不使用
配置鏡像CD/DVD:點(diǎn)擊使用ISO映像文件,找鏡像的位置
配置網(wǎng)絡(luò)適配器:默認(rèn)NAT模式
后四項(xiàng)刪除僅剩顯示器,節(jié)約硬盤提高性能
Linux啟動(dòng)部署流程
選擇語(yǔ)言:English(排除部分軟件不支持中文的問(wèn)題)
選擇時(shí)區(qū):選擇中國(guó)地圖部分,默認(rèn)且僅有Shanghai
System:配置網(wǎng)絡(luò)信息(重點(diǎn):不配置則無(wú)法連網(wǎng))
-
開(kāi)啟網(wǎng)卡按鈕:點(diǎn)擊OFF->ON,截圖網(wǎng)絡(luò)數(shù)據(jù)
-
注意點(diǎn):不能把ON點(diǎn)回去,否則該虛擬機(jī)無(wú)法再次連網(wǎng)
配置密碼root password:admin、默認(rèn)賬號(hào)為root
VM網(wǎng)絡(luò)配置
VM三種連接方式
橋接模式
優(yōu)點(diǎn):VMWare虛擬出來(lái)的操作系統(tǒng)就像是局域網(wǎng)中的一臺(tái)獨(dú)立的主機(jī),虛擬系統(tǒng)可以和外部系統(tǒng)直接通訊,外網(wǎng)和內(nèi)網(wǎng)互通
缺點(diǎn):容易導(dǎo)致IP沖突,網(wǎng)段限制
橋接模式是跟物理機(jī)在同一個(gè)網(wǎng)段,并且和物理機(jī)用的同一個(gè)路由器。主機(jī)網(wǎng)卡通過(guò)虛擬網(wǎng)橋連接到虛擬機(jī)交換機(jī),交換機(jī)內(nèi)部再映射到內(nèi)部的網(wǎng)絡(luò),虛擬機(jī)直接占用主機(jī)的網(wǎng)段
NAT模式(網(wǎng)絡(luò)地址轉(zhuǎn)換模式)
優(yōu)點(diǎn):避免了IP因?yàn)榫W(wǎng)絡(luò)地址不夠造成的沖突
缺點(diǎn):只能內(nèi)網(wǎng)到外網(wǎng),外網(wǎng)到內(nèi)網(wǎng)需要配置
原理:允許一個(gè)整體機(jī)構(gòu)以一個(gè)公用IP地址出現(xiàn)在Internet上,即把內(nèi)部私有網(wǎng)絡(luò)地址翻譯成合法網(wǎng)絡(luò)IP地址的技術(shù)。它是一種把內(nèi)部私有網(wǎng)絡(luò)地址(IP地址)翻譯成合法網(wǎng)絡(luò)IP地址的技術(shù)。
因?yàn)镮P數(shù)據(jù)段由于字節(jié)數(shù)目一定,所以資源是有限的,如果為每一個(gè)設(shè)備分配一個(gè)IP地址,那么極其消耗IP資源,所以NAT起到的作用是,對(duì)外只暴露一個(gè)IP地址,當(dāng)有內(nèi)部連接要通訊的時(shí)候,通過(guò)NAT將內(nèi)網(wǎng)IP轉(zhuǎn)換成對(duì)外的IP,充當(dāng)了網(wǎng)關(guān)的作用。
NAT模式有個(gè)單獨(dú)的路由器,且不同于物理機(jī)的網(wǎng)段,
NAT模式顯示通過(guò)自己的路由器,再找到物理機(jī)的路由器,來(lái)和物理機(jī)進(jìn)行通信的。
這里可以提示一下,一般路由器的默認(rèn)地址是第一位(1)或者最后一位(254)
但是這里NAT模式的網(wǎng)段為什么要從2開(kāi)始呢?
假定以下條件
- 物理機(jī)
- IP 192.168.1.3
- 子網(wǎng)掩碼 255.255.255.0
- 默認(rèn)網(wǎng)關(guān) 192.168.1.1
- 虛擬機(jī)
- IP 192.168.100.10
- 子網(wǎng)掩碼 255.255.255.0
- 默認(rèn)網(wǎng)關(guān) 192.168.100.2
- 首選DNS服務(wù)器:192.168.1.1
NAT的路由器把物理機(jī)的路由器192.168.1.1標(biāo)記成192.168.100.1
這樣NAT的路由器的192.168.100.2去找192.168.100.1的時(shí)候,實(shí)際去找的是192.168.1.1??衫斫鉃槲锢頇C(jī)映射到物理機(jī)的路由器
物理機(jī)IP 物理機(jī)路由器 NAT路由器 虛擬機(jī)IP
192.168.1.3 --> 192.168.1.1 --> 192.168.100.2 --> 192.168.100.10
NAT配置過(guò)程
- 打開(kāi)VMware的“編輯”,然后打開(kāi)“虛擬網(wǎng)絡(luò)編輯器”點(diǎn)擊“更改設(shè)置”
- 點(diǎn)擊NAT模式,選擇NAT模式。然后填寫子網(wǎng)IP192.168.x.0 x就是我們可以隨便選擇的網(wǎng)段,范圍1~254,這里我選的100。即是192.168.100.0
- 既然我們知道了不能從1開(kāi)始,那么就要去手動(dòng)設(shè)置一下。點(diǎn)擊NAT模式,將網(wǎng)關(guān)IP修改為192.168.100.x,x的范圍[2,254]
NAT模式、橋接模式的區(qū)別
NAT模式概述
NAT是“Network Address Translation”的縮寫,中文意思是“網(wǎng)絡(luò)地址轉(zhuǎn)換”,它允許一個(gè)整體機(jī)構(gòu)以一個(gè)公用IP(Internet Protocol)地址出現(xiàn)在Internet上。顧名思義,它是一種把內(nèi)部私有網(wǎng)絡(luò)地址(IP地址)翻譯成合法網(wǎng)絡(luò)IP地址的技術(shù)。
為什么要這樣干呢?因?yàn)镮P數(shù)據(jù)段由于字節(jié)數(shù)目一定,所以資源是有限的,如果為每一個(gè)設(shè)備分配一個(gè)IP地址,那么極其消耗IP資源,所以NAT起到的作用是,對(duì)外只暴露一個(gè)IP地址,當(dāng)有內(nèi)部連接要通訊的時(shí)候,通過(guò)NAT將內(nèi)網(wǎng)IP轉(zhuǎn)換成對(duì)外的IP,充當(dāng)了網(wǎng)關(guān)的作用。
NAT在外部公網(wǎng)(internet)上正常使用可以使多臺(tái)計(jì)算機(jī)共享Internet連接。
通過(guò)這種方法,申請(qǐng)一個(gè)合法IP地址,就把整個(gè)局域網(wǎng)中的計(jì)算機(jī)通過(guò)NAT接入到了Internet中。
這時(shí)NAT屏蔽了內(nèi)部網(wǎng)絡(luò),所有內(nèi)部網(wǎng)計(jì)算機(jī)對(duì)于公共網(wǎng)絡(luò)來(lái)說(shuō)是不可見(jiàn)的,
而內(nèi)部網(wǎng)計(jì)算機(jī)用戶通常不會(huì)意識(shí)到NAT的存在。這里提到的內(nèi)部地址,
是指在內(nèi)部網(wǎng)絡(luò)中分配給節(jié)點(diǎn)的私有IP地址,這個(gè)地址只能在內(nèi)部網(wǎng)絡(luò)中使用,
不能被路由(一種網(wǎng)絡(luò)技術(shù),可以實(shí)現(xiàn)不同路徑轉(zhuǎn)發(fā))。
路由
默認(rèn)網(wǎng)關(guān):指的是數(shù)據(jù)流從本地網(wǎng)絡(luò)路由至遠(yuǎn)端設(shè)備的目的地。
IP地址中專門保留了三個(gè)區(qū)域作為私有地址,其地址范圍如下:
10.0.0.0/8:10.0.0.0~10.255.255.255
172.16.0.0/12:172.16.0.0~172.31.255.255
192.168.0.0/16:192.168.0.0~192.168.255.255
NAT將這些無(wú)法在互聯(lián)網(wǎng)上使用的保留IP地址翻譯成可以在互聯(lián)網(wǎng)上使用的合法IP地址。
而全局地址是指合法的IP地址,它是由NIC(網(wǎng)絡(luò)信息中心)或者ISP(網(wǎng)絡(luò)服務(wù)提供商,比如常說(shuō)的中國(guó)移動(dòng)、中國(guó)電信)分配的地址,
對(duì)外代表一個(gè)或多個(gè)內(nèi)部局部地址,是全球統(tǒng)一的可尋址的地址。
NAT技術(shù)類型
- NAT有三種類型:
- 靜態(tài)NAT(Static NAT):設(shè)置起來(lái)最為簡(jiǎn)單和最容易實(shí)現(xiàn)的一種。內(nèi)部網(wǎng)絡(luò)中的每個(gè)主機(jī)都被永久映射成外部網(wǎng)絡(luò)中的某個(gè)合法的地址
- 動(dòng)態(tài)地址NAT(Pooled NAT):動(dòng)態(tài)地址NAT則是在外部網(wǎng)絡(luò)中定義了一系列的合法地址,采用動(dòng)態(tài)分配的方法映射到內(nèi)部網(wǎng)絡(luò)。類似連接池的原理。
- 網(wǎng)絡(luò)地址端口轉(zhuǎn)換NAPT(Port-Level NAT):NAPT則是把內(nèi)部地址映射到外部網(wǎng)絡(luò)的一個(gè)IP地址的不同端口上
動(dòng)態(tài)地址NAT:只是轉(zhuǎn)換IP地址,它為每一個(gè)內(nèi)部的IP地址分配一個(gè)臨時(shí)的外部IP地址,主要應(yīng)用于撥號(hào),對(duì)于頻繁的遠(yuǎn)程聯(lián)接也可以采用動(dòng)態(tài)NAT。當(dāng)遠(yuǎn)程用戶聯(lián)接上之后,動(dòng)態(tài)地址NAT就會(huì)分配給他一個(gè)IP地址,用戶斷開(kāi)時(shí),這個(gè)IP地址就會(huì)被釋放而留待以后使用。
網(wǎng)絡(luò)地址端口轉(zhuǎn)換NAT:NAPT普遍應(yīng)用于接入設(shè)備中,它可以將中小型的網(wǎng)絡(luò)隱藏在一個(gè)合法的IP地址后面。NAPT與動(dòng)態(tài)地址NAT不同,它將內(nèi)部連接映射到外部網(wǎng)絡(luò)中的一個(gè)單獨(dú)的IP地址上,同時(shí)在該地址上加上一個(gè)由NAT設(shè)備選定的TCP端口號(hào)。
NAT模式總結(jié)
家用路由器一般都是NAT模式,內(nèi)網(wǎng)用戶默認(rèn)都是192.168.1.x網(wǎng)段,而路由器充當(dāng)默認(rèn)網(wǎng)關(guān)的角色,所有內(nèi)網(wǎng)發(fā)出的包都將經(jīng)過(guò)路由器,路由器在公網(wǎng)有唯一的IP,所有的包經(jīng)過(guò)路由器修改其源IP都改為了公網(wǎng)IP了,并且會(huì)隨機(jī)映射一個(gè)對(duì)外端口。當(dāng)應(yīng)答回到路由器時(shí),路由器會(huì)根據(jù)此前的映射關(guān)系,將目標(biāo)IP和PORT改為原先發(fā)送請(qǐng)求的內(nèi)網(wǎng)用戶的IP和PORT,這樣對(duì)于內(nèi)網(wǎng)用戶來(lái)說(shuō)是感知不到路由器的存在的,大家共用路由器的對(duì)外IP訪問(wèn)外網(wǎng)。當(dāng)然,因?yàn)榇蠹叶荚趦?nèi)網(wǎng)同一個(gè)網(wǎng)段(路由器基于DHCP分配),所以內(nèi)網(wǎng)用戶互相通訊也沒(méi)有問(wèn)題。
橋接模式
橋接模式下,VMWare虛擬出來(lái)的操作系統(tǒng)就像是局域網(wǎng)中的一臺(tái)獨(dú)立的主機(jī),它可以訪問(wèn)網(wǎng)內(nèi)任何一臺(tái)機(jī)器。 在橋接模式下,你需要手工為虛擬系統(tǒng)配置IP地址、子網(wǎng)掩碼,而且還要和宿主機(jī)器處于同一網(wǎng)段,這樣虛擬系統(tǒng)才能和宿主機(jī)器進(jìn)行通信。同時(shí),由 于這個(gè)虛擬系統(tǒng)是局域網(wǎng)中的一個(gè)獨(dú)立的主機(jī)系統(tǒng),那么就可以手工配置它的TCP/IP配置信息,以實(shí)現(xiàn)通過(guò)局域網(wǎng)的網(wǎng)關(guān)或路由器訪問(wèn)互聯(lián)網(wǎng)。
使用橋接模式的虛擬系統(tǒng)和宿主機(jī)器的關(guān)系,就像連接在同一個(gè)Hub上的兩臺(tái)電腦。想讓它們相互通訊,你就需要為虛擬系統(tǒng)配置IP地址和子網(wǎng)掩碼,否則就無(wú)法通信。
主機(jī)模式
獨(dú)立系統(tǒng),所有的虛擬系統(tǒng)可以相互通信,但虛擬系統(tǒng)和真實(shí)網(wǎng)絡(luò)是隔離開(kāi)的。虛擬系統(tǒng)和真實(shí)網(wǎng)絡(luò)可以相互通信,相當(dāng)于兩臺(tái)機(jī)器通過(guò)雙絞線互連;虛擬網(wǎng)絡(luò)是一個(gè)全封閉的網(wǎng)絡(luò),唯一能夠訪問(wèn)的就是主機(jī),不同于NAT的地方就是主機(jī)模式?jīng)]有NAT服務(wù),故虛擬網(wǎng)絡(luò)不能連接到Internet。
補(bǔ)充命令
cal 日歷
date 日期
幫助指令
獲取指令幫助、配置文件幫助和編程幫助等信息
man [命令或配置文件]
獲取shell內(nèi)置命令的幫助信息
help 命令
查看用戶登錄信息
w 用戶名
w root
命令輸出:
- USER : 登陸的用戶名
- TTY : 登陸終端
- FROM : 從哪個(gè)IP地址登陸
- LOGIN@ : 登陸時(shí)間
- IDLE : 用戶閑置時(shí)間
- JCPU : 指的是和該終端連接的所有進(jìn)程占用時(shí)間.這個(gè)事件并不包括去后臺(tái)作業(yè)的時(shí)間,但卻包括當(dāng)前正在運(yùn)行的后臺(tái)作業(yè)所占用時(shí)間;
- PCPU : 是指當(dāng)前進(jìn)程所占用的時(shí)間
- WHAT : 當(dāng)前正在運(yùn)行的命令
who
who
命令輸出:
- 用戶名
- 登陸終端
- 登陸時(shí)間(登陸來(lái)源IP地址)
last 查詢當(dāng)前登陸和過(guò)去登陸的用戶信息
last
- last命令默認(rèn)時(shí)讀取/var/log/wtmp文件數(shù)據(jù)
命令輸出
- 用戶名
- 登陸終端
- 登陸IP
- 登陸時(shí)間
- 退出時(shí)間(在線時(shí)間)
lastlog 最后一次登錄時(shí)間
lastlog
命令輸出
- 用戶名
- 登陸終端
- 登陸IP
- 最后一次登陸時(shí)間
history 查看操作歷史
history
開(kāi)機(jī)、重啟和用戶登錄
關(guān)機(jī)和重啟
# 務(wù)必在關(guān)機(jī)或者重啟之前調(diào)用該指令
sync 將內(nèi)存數(shù)據(jù)同步到磁盤
shutdown -參數(shù) 時(shí)間刻度 立刻關(guān)機(jī)【謹(jǐn)慎】
-h 關(guān)機(jī)
-r 重啟
時(shí)間刻度:
now 馬上
n:n分鐘后執(zhí)行,n是一個(gè)整數(shù)
shutdown -h now 馬上關(guān)機(jī)
# 等價(jià)指令
reboot 立馬重啟 shutdown -r now
halt 立刻關(guān)機(jī) shutdown -h now
用戶登錄/切換用戶
# 用戶登錄
su -用戶名
# 高權(quán)限切換低權(quán)限用戶不需要密碼
# 當(dāng)需要返回到原來(lái)用戶時(shí),使用exit/logout
用戶注銷
logout
用戶注銷
# 運(yùn)行級(jí)別3有效,圖形運(yùn)行級(jí)別無(wú)效
logout
用戶管理
添加用戶
useradd -參數(shù) 參數(shù)值 用戶名
無(wú)參數(shù):創(chuàng)建用戶成功后,會(huì)自動(dòng)創(chuàng)建和用戶的同名的目錄
-d 創(chuàng)建用戶,并給新創(chuàng)建的用戶指定家目錄
-g 創(chuàng)建用戶并指定組名
指定/修改用戶密碼
password 用戶名
# 當(dāng)用戶權(quán)限不夠時(shí),常通過(guò)su -用戶名切換到高權(quán)限用戶
刪除用戶
userdel -參數(shù) 用戶名
無(wú)參數(shù):刪除用戶,但保留家目錄
-r:刪除用戶同時(shí)刪除用戶的家目錄【謹(jǐn)慎】
-f:強(qiáng)制刪除用戶,即使用戶已登錄
查用戶信息
id 用戶名
# 用戶不存在時(shí),返回?zé)o該用戶
切換用戶
su -用戶名
# 高權(quán)限切換低權(quán)限用戶不需要密碼
# 當(dāng)需要返回到原來(lái)用戶時(shí),使用exit/logout
查看當(dāng)前用戶/登錄用戶
# 方式1
whoami
# 方式2,注意要大寫
who am i
用戶組
新增組
groupadd 組名
刪除組
groupdel 組名
修改用戶的組
usermode -g 用戶組 用戶名
用戶和組相關(guān)文件
/etc/passwd 文件
用戶配置文件:記錄用戶的各種信息
每行含義:用戶名:密碼:用戶的UID:組標(biāo)號(hào):注釋性描述:家目錄:登錄Shell
- 用戶名
- 用戶的密碼,用x替代
- 用戶的uid,一般情況下root為0,1-499默認(rèn)為系統(tǒng)賬號(hào),有的更大些到1000,500-65535為用戶的可登錄賬號(hào),有的系統(tǒng)從1000開(kāi)始。
- 用戶的gid,linux的用戶都會(huì)有兩個(gè)ID,一個(gè)是用戶uid,一個(gè)是用戶組id,在我們登錄的時(shí)候,輸入用戶名和密碼,其實(shí)會(huì)先到/etc/passwd查看是否有你輸入的賬號(hào)或者用戶名,有的話將該賬號(hào)與對(duì)應(yīng)的UID和GID(在/etc/group中)讀出來(lái)。然后讀出主文件夾與shell的設(shè)置,然后再去檢驗(yàn)密碼是否正確,正確的話正常登錄。
- 用戶的賬號(hào)說(shuō)明解釋
- 用戶的家目錄文件夾
- 用戶使用的shell,如果換成/sbin/nologin/就是默認(rèn)沒(méi)有登錄環(huán)境的。
/etc/shadow 文件
口令配置文件
每行含義:登錄名:加密口令:最后一次修改時(shí)間:最小時(shí)間間隔:最大時(shí)間間隔:警告時(shí)間:不活動(dòng)時(shí)間:失效時(shí)間:標(biāo)志
/etc/group 文件
組group配置文件:記錄Linux包含的組的信息
實(shí)用指令
幫助指令
man
man 命令名:查看幫助命令
f 下一頁(yè)
b 上一頁(yè)
q退出
man ls
#查看ls的幫助
help
命令 --help
#獲取命令選項(xiàng)的幫助
實(shí)例:
ls --help
命令 --help :簡(jiǎn)潔版幫助
- 但是不適用內(nèi)部命令,例如cd, help cd
- 命令特殊時(shí),使用help 命令 比如: help cd
指定運(yùn)行級(jí)別【單次有效】
-
運(yùn)行級(jí)別說(shuō)明
- 0:關(guān)機(jī)(千萬(wàn)不能把initdefault 設(shè)置為0
- 1:?jiǎn)斡脩簦河糜谡一貋G失密碼
- 2:多用戶沒(méi)有網(wǎng)絡(luò)服務(wù)
- 3:多用戶有網(wǎng)絡(luò)服務(wù):實(shí)際開(kāi)發(fā)最常用,性能消耗小【GUI消耗很多的性能】
- 4: 沒(méi)有用到
- 5:圖形界面:學(xué)習(xí)時(shí)使用較多
- 6:重新啟動(dòng)(千萬(wàn)不要把initdefault 設(shè)置為6)
-
CentOS7運(yùn)行級(jí)別說(shuō)明
-
centos7后對(duì)/etc/inittab文件進(jìn)行了簡(jiǎn)化
# 多用戶有網(wǎng)絡(luò)服務(wù)-級(jí)別3 # multi-user.target: analogous to runlevel 3 # 圖形界面-級(jí)別5 # graphical.target: analogous to runlevel 5 # # 顯示當(dāng)前默認(rèn)級(jí)別 systemctl get-default # # 設(shè)置默認(rèn)級(jí)別 systemctl set-default 級(jí)別的字符 # 設(shè)置級(jí)別 為 多用戶有網(wǎng)絡(luò)服務(wù) systemctl set-default multi-user.target
-
# 切換運(yùn)行級(jí)別
init [0123456]
文件目錄類
pwd指令
- 顯示當(dāng)前工作目錄的絕對(duì)路徑
pwd
ls指令
- 顯示目錄內(nèi)容列表
ls [選項(xiàng)] [目錄或文件]
-a 顯示當(dāng)前目錄所有的文件和目錄,包括隱藏的【Linux隱藏文件以.開(kāi)頭】
-l 以列表形式顯示信息
ls -l可以簡(jiǎn)寫為ll,同時(shí)還可銜接上其他的參數(shù),例如ll -a,等價(jià) ls -al
cd指令
- 切換用戶到指定的工作目錄
cd [選項(xiàng)] 絕對(duì)或相對(duì)路徑
~ 切換到家目錄 cd ~
: 切換到家目錄 cd :
.. 返回到當(dāng)前目錄的上一級(jí)目錄
mkdir
- 創(chuàng)建目錄
mkdir [選項(xiàng)] 要?jiǎng)?chuàng)建的目錄
-p 創(chuàng)建多級(jí)目錄
rmdir
- 刪除目錄
# 刪除的是空目錄,如果目錄中有內(nèi)容時(shí)無(wú)法刪除
rmdir [選項(xiàng)] 要?jiǎng)h除的空目錄
# 強(qiáng)制刪除非空目錄
# r:遞歸 f:對(duì)象為文件或目錄
rm -rf 要?jiǎng)h除的沒(méi)記錄
touch指令
- 創(chuàng)建空文件
# 建議帶上后綴,雖然Linux不區(qū)分后綴,但方便程序員區(qū)分文件類型
touch 文件名稱
cp指令
- 拷貝或移動(dòng)文件到指定目錄
cp [選項(xiàng)] 源文件 目的地
-r 遞歸復(fù)制整個(gè)文件夾
# 強(qiáng)行覆蓋并不提示
\cp,將cp替換成\cp即可不提示信息
rm指令
- 移除文件或目錄
rm [選項(xiàng)] 要?jiǎng)h除的文件或目錄
-r 遞歸刪除整個(gè)文件夾
-f 強(qiáng)制刪除不提示
mv指令
- 移動(dòng)文件或目錄
mv 源移動(dòng)的文件與目錄 目的地
# 如果在目的地上存在同名的,那么就是重命名
# 不存在,則為移動(dòng)
cat指令
- 顯示文件內(nèi)容【部分顯示】
# 目錄查看不了
# 只能查看,不能修改
# 通常和管道命令 | more分流顯示
# 或和 | grep 字段進(jìn)行文件過(guò)濾
cat [選項(xiàng)] 要查看的文件
-n 顯示行號(hào)
= 輸出當(dāng)前行的行號(hào)
q 退出
回車 下一行
空格 下一頁(yè)
more指令
- 顯示文件內(nèi)容【全屏顯示文本文件內(nèi)容】
缺點(diǎn):只能向前瀏覽,無(wú)法向后,而且是一次加載完后再顯示
more 要查看的文件
常用操作
回車 下一行
空格 下一頁(yè)
q 退出
= 輸出當(dāng)前行的行號(hào)
:f 輸出文件名和當(dāng)前行
less指令
- 分屏上下翻頁(yè)瀏覽文件內(nèi)容【比more更加強(qiáng)大】
優(yōu)點(diǎn):根據(jù)需要加載,可向前向后
less 要查看的文件
常用操作
-N 顯示行數(shù)
空格/pagedown 下一頁(yè)
pageup 上一頁(yè)
g 移動(dòng)到文件開(kāi)頭
G 移動(dòng)到文件結(jié)尾
10g 移動(dòng)到第10行
/關(guān)鍵字 查找指定的關(guān)鍵字,n:向下查找下一個(gè)該關(guān)鍵字,N向上查找上一個(gè)關(guān)鍵字
q 退出
echo指令
- 輸出內(nèi)容到控制臺(tái)
echo [選項(xiàng)] [輸出內(nèi)容]
常用的輸出內(nèi)容
$PATH 環(huán)境變量
$HOSTNAME 本地用戶名
head指令
-
顯示文件的開(kāi)頭部分
-
默認(rèn)顯示文件前10行內(nèi)容
head [選項(xiàng)] [參數(shù)] 要顯示的文件
-n:后邊接一個(gè)整數(shù),表示顯示開(kāi)頭的前幾行
head -n 10 文件名
tail指令
-
顯示文件的結(jié)尾部分
-
默認(rèn)顯示文件后10行內(nèi)容
tail [選項(xiàng)] [參數(shù)] 要顯示的文件
-n:后邊接一個(gè)整數(shù),表示顯示結(jié)尾的前幾行
-f:實(shí)時(shí)顯示文件最新追加的內(nèi)容,即是文檔的所有更新
>指令 和 >>指令
- > 輸出重定向 >>追加
通常搭配其他指令一起使用,以下提供幾個(gè)使用參考
# 將列表內(nèi)容覆蓋寫入a.txt中
ls -l > a.txt
# 將列表內(nèi)容追加寫入a.txt中
ls -l >> a.txt
# 將文件a.txt覆蓋到b.txt中
cat a.txt > b.txt
# 將字符串"aaa"追加到a.txt
echo "aaa" >> a.txt
ln指令
-
用來(lái)為文件創(chuàng)建鏈接
-
軟件也稱為符號(hào)連接,類似于Windows中的快捷方式
-
鏈接類型分為硬鏈接和符號(hào)鏈接兩種,默認(rèn)的鏈接類型是硬鏈接。如果要?jiǎng)?chuàng)建符號(hào)鏈接必須使用"-s"選項(xiàng)
-
符號(hào)鏈接文件不是一個(gè)獨(dú)立的文件,它的許多屬性依賴于源文件,所以給符號(hào)鏈接文件設(shè)置存取權(quán)限是沒(méi)有意義的。
# 給源文件床創(chuàng)建一個(gè)軟鏈接
ln -s [源文件或目錄] [軟連接名]
history指令
- 查看執(zhí)行過(guò)的歷史命令
history [選項(xiàng)]
-n 只列出最近的n條記錄
vim
文本編輯工具, VI是visual interface的縮寫,即可視化接口。vim 即 vi IMproved,在 vi 的基礎(chǔ)上做了很多改進(jìn)
vim的安裝
如果沒(méi)有vim的那么請(qǐng)使用yum進(jìn)行安裝
yun install -y vim
vim的工作模式
vim一般有6種工作模式。
- 普通模式:使用vim打開(kāi)一個(gè)文件時(shí)默認(rèn)模式,也叫命令模式,允許用戶通過(guò)各種命令瀏覽代碼、滾屏等操作。
-
插入模式:也可以叫做編輯模式,在普通模式下敲擊 i 、a 或 o 就進(jìn)入插入模式,允許用戶通過(guò)鍵盤輸入、編輯。
- i : 在光標(biāo)所在字符前開(kāi)始插入
- a : 在光標(biāo)所在字符后開(kāi)始插入
- o : 在光標(biāo)所在行的下面另起一新行插入
- s : 刪除光標(biāo)所在的字符并開(kāi)始插入
- I : 在光標(biāo)所在行的行首開(kāi)始插入 如果行首有空格則在空格之后插入
- A : 在光標(biāo)所在你行的行尾開(kāi)始插入
- O : 在光標(biāo)所在行的上面另起一行開(kāi)始插入
- S : 刪除光標(biāo)所在行并開(kāi)始插入
- 命令行模式:在普通模式下,先輸入冒號(hào):,接著輸入命令,就可以通過(guò)配置命令對(duì)vim進(jìn)行配置了,如改變顏色主題、顯示行號(hào)等,這些配置命令也可以保存到/etc/vim/vimrc配置文件中,每次打開(kāi)默認(rèn)配置執(zhí)行。
- 可視化模式:在普通模式下敲擊前盤上的 v 鍵,就進(jìn)入可視化模式,然后移動(dòng)光標(biāo)就可以選中一塊文本,常用來(lái)完成文本的復(fù)制、粘貼、刪除等操作。
- 替換模式:如果我們想修改某個(gè)字符,不需要先進(jìn)入插入模式,刪除,然后再輸入新的字符,直接在普通模式下,敲擊R鍵就可以直接替換。
- EX模式:類似于命令行模式,可以一次運(yùn)行多個(gè)命令
vim的各種工作模式可以通過(guò)不同的鍵進(jìn)行切換,用戶統(tǒng)一使用ESC鍵返回到普通模式。
打開(kāi)文件和關(guān)閉文件
打開(kāi)文件
vi /path/to/file
關(guān)閉文件
在末行模式下
wq: 保存退出
q!: 退出不保存
移動(dòng)光標(biāo)
逐字符移動(dòng):
h:左移動(dòng)
l:右移動(dòng)
j:向下移動(dòng)
k:向上移動(dòng)
行內(nèi)跳轉(zhuǎn):
0:跳轉(zhuǎn)到行首
$: 跳轉(zhuǎn)到行尾
行間跳轉(zhuǎn);(末行模式)
num: 跳轉(zhuǎn)到某一行(末行模式)
G: 跳轉(zhuǎn)行最后一行(編輯模式)
gg: 跳轉(zhuǎn)到第一行(編輯模式)
翻屏操作
在編輯模式下:
ctrl+f 向下翻一頁(yè)
ctrl+b 向上翻一頁(yè)
刪除命令
dd: 刪除光標(biāo)所在行 (編輯模式)
3dd:從光標(biāo)行開(kāi)始刪除3行(編輯模式)
: 1,4d 刪除第一行到第四行(末行模式)
復(fù)制 和 粘貼命令
yy 復(fù)制光標(biāo)所在行 (編輯模式)
2yy 從光標(biāo)行開(kāi)始復(fù)制2行(編輯模式)
p: 粘貼命令
查找
文件的查找
/parttern 從前往后查找
?parttern 從后往前查找
操作
n: 下一個(gè)匹配的字符串
N: 上一個(gè)匹配的字符串
set number 設(shè)置行號(hào)
或者
set nu
取消行號(hào)
set nu!
日期時(shí)間類
date指令
顯示系統(tǒng)時(shí)間與日期
# 顯示當(dāng)前日期時(shí)間
date [選項(xiàng)] [格式化日期]
默認(rèn) 顯示日期時(shí)間
-s 設(shè)置日期
# 常用的年月日時(shí)分秒(得帶雙引號(hào)),因?yàn)樽隽孙@示格式的拼接
date "+%Y-%m-%d %H:%M:%S"
# 常用格式
%Y 年
%m 月
%d 天
%H 時(shí)
%M 分
%S 秒
%u 1-7星期數(shù),1代表星期一
設(shè)置系統(tǒng)時(shí)間與日期
date -s 字符串時(shí)間
# 設(shè)置系統(tǒng)的時(shí)間和日期
date -s "2020-01-01 21:56:12"
cal指令 顯示當(dāng)前日歷
cal [選項(xiàng)] [月份] [年份]
-m 星期一作為一周的第一天
# 顯示當(dāng)前日歷
cal
# 顯示2020年1月的日歷
cal -m 1 2020
搜索查找類
find指令 文件搜索
find 范圍 選項(xiàng)
作用
1. 避免大范圍搜索,會(huì)非常耗費(fèi)系統(tǒng)資源
2. find是在系統(tǒng)當(dāng)中搜索符合條件的文件名.如果需要匹配,使用通配符匹配,通配符是完全匹配
常用選項(xiàng)
-name 查詢方式 按照指定的文件名查找文件
-user 用戶名 查找屬于指定用戶名所有文件
-nouser 查找沒(méi)有所有者的文件
-size 文件大小 按照指定的文件大小查找文件(通常是指定一個(gè)范圍)
+n 大于
-n 小于
單位 k M G
atime 文件訪問(wèn)時(shí)間
+n n天 前 訪問(wèn)的文件, 流入+10 10前
n n天 當(dāng)天 訪問(wèn)的文件 10 前10當(dāng)天
-n n天 內(nèi) 訪問(wèn)的文件 -10 10天內(nèi)
ctime 改變文件屬性時(shí)間
+n n天 前 修改屬性的文件
n n天 當(dāng)天 修改屬性的文件
-n n天 內(nèi) 修改屬性的文件
mtime 修改文件時(shí)間
+n n天 前 修改的文件
n n天 當(dāng)天 修改文件
-n n天 內(nèi) 修改文件
# 按擁有者查找/opt下用戶名為nobody的文件
find /opt -user nohody
# 查找整個(gè)Linux系統(tǒng)下大于200M的文件
find / -size +200M
按文件名查找
find / -name install.log
#避免大范圍搜索,會(huì)非常耗費(fèi)系統(tǒng)資源
#在根目錄下查找, find是在系統(tǒng)當(dāng)中搜索符合條件的文件名.如果需要匹配,使用通配符匹配,通配符是完全匹配
find / -name install*.log
#在root目錄下, 按名字查詢: 不區(qū)分大小寫
find /root -iname install.log
按時(shí)間查詢
find /var/log -mtime +10
#查找10天前修改的文件
-10 10天內(nèi)修改文件
10 10天當(dāng)天修改的文件
+10 10天前修改的文件
atime 文件訪問(wèn)時(shí)間
ctime 改變文件屬性時(shí)間
mtime 修改文件時(shí)間
按文件查找
find / -size 25k
#查找文件大小是25KB的文件,注意k是小寫的.
-25k 小于25KB的文件
25k 等于25KB的文件
+25k 大于25KB的文件
find / -size 25M
#查找文件大小是25MB的文件,注意M是大寫的.
按用戶查找
find /root -user root #按照所有者搜索
find /root -nouser #查找沒(méi)有所有者的文件
locate指令 比 find 好用的文件查找工具
-
優(yōu)點(diǎn):可以快速定位文件的路徑
-
原理:先建立一個(gè)包括系統(tǒng)內(nèi)所有檔案名稱及路徑的數(shù)據(jù)庫(kù),之后當(dāng)尋找時(shí)就只需查詢這個(gè)數(shù)據(jù)庫(kù)。無(wú)需遍歷整個(gè)文件系統(tǒng)。為了保證查詢結(jié)果的精確度,管理員必須要定期更新locate時(shí)刻
-
注意事項(xiàng):locate指令是基于數(shù)據(jù)庫(kù)進(jìn)行查詢的,所以第一次運(yùn)行的時(shí)候需要?jiǎng)?chuàng)建locate數(shù)據(jù)庫(kù)(必須要管理員來(lái)運(yùn)行)
# 直接執(zhí)行即可 updatedb
locate 搜索文件
# 搜索/opt下的redis開(kāi)頭的文件
locate /opt/redis
which指令 查找并顯示給定命令的絕對(duì)路徑
which 指令
# 查找ls指令所在的目錄
which ls
grep指令 字符串搜索 和 管道符號(hào) |
grep
- grep (global search regular expression(RE) and print out the line,全面搜索正則表達(dá)式并把行打印出來(lái))
- 可使用正則表達(dá)式搜索文本,并把匹配的行打印出來(lái)。用于過(guò)濾/搜索的特定字符。可使用正則表達(dá)式能配合多種命令使用
grep [選項(xiàng)] 查找內(nèi)容 源文件
常用選項(xiàng)
-n 顯示匹配行以及行號(hào)
-i 忽略字母大小寫
# 在hello.txt 文件中,查找"yes"所在行,并顯示行號(hào)
# 方法一
cat -n /home/hello.txt | grep yes
# 方法二
grep -n yes /home/hello.txt
管道符號(hào) |
- 表示將前一個(gè)命令的處理結(jié)果輸傳遞給后面的命令處理(類似責(zé)任鏈模式)
壓縮和解壓類
gzip/gunzip 指令
-
gzip:壓縮文件,文件經(jīng)過(guò)gzip壓縮后會(huì)多".gz"的擴(kuò)展名,即是*.gz文件。文本類文件壓縮率在60%~70%
gzip 文件
-
gunizp:解壓文件,解壓*.gz形式的文件
gunzip 文件.gz
案例
壓縮/home下的hello.txt文件
gzip /home/hello.txt
# 解壓/home下的hello.txt.gz文件
gunzip /home/hello.txt.gz
zip/unzip指令
-
文件經(jīng)它壓縮后會(huì)另外產(chǎn)生具有“.zip”擴(kuò)展名的壓縮文件
-
zip
# 壓縮的內(nèi)容可以為文件或目錄 # XXX.zip為壓縮后的文件的命名 zip [選項(xiàng)] XXX.zip 將要壓縮的內(nèi)容 常用選項(xiàng) -r 遞歸壓縮:即是壓縮目錄, 如果不指定-r, 那么只會(huì)壓縮文件夾,該文件夾的文件是不會(huì)壓縮的
-
unzip
# 解壓 unzip [選項(xiàng)] XXX.zip -d 目錄:指定解壓后文件存放的目錄
案例
# 將/home下的所有文件/目錄壓縮稱myhome.zip
zip -r myhome.zip /home/
# 將myhome.zip解壓到/opt/tmp目錄下(存在/opt/tmp)
unzip -d /opt/tmp/ /home/myhome.zip
tar指令 打包并壓縮
打包和壓縮的概念:
- 打包:指將一大堆文件或目錄變成一個(gè)總的文件
- 壓縮:指將一個(gè)大的文件通過(guò)一些壓縮算法變成一個(gè)小文件
- 為什么要區(qū)分這兩個(gè)概念呢?這源于Linux中很多壓縮程序只能針對(duì)一個(gè)文件進(jìn)行壓縮,這樣當(dāng)你想要壓縮一大堆文件時(shí),你得先將這一大堆文件先打成一個(gè)包(tar命令),然后再用壓縮程序進(jìn)行壓縮(gzip bzip2命令)。
-f: 打包壓縮后的包名,切記,后面只能打包壓縮后的包名。
# 打包目錄,壓縮后的文件格式.tar.gz
tar [選項(xiàng)] XXX.tar.gz 打包的內(nèi)容
多個(gè)打包內(nèi)容使用空格間隔
常用選項(xiàng)
-z 打包同時(shí)壓縮
-c 產(chǎn)生.tar打包文件
-x 解包.tar文件
-v 顯示詳情信息
-f 指定壓縮后的文件名,這個(gè)參數(shù)是最后一個(gè)參數(shù),后面只能接壓縮文件名
-C 指定目錄
# 案例
# 解壓多個(gè)文件,將/home/pig/txt 和 /home/cat.txt 壓縮稱pc.tar.gz
tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt
# 將pc.tar.gz 解壓到/opt/tmp2目錄下(存在該目錄)
tar -zxvf pc.tar.gz -C /opt/tmp2
組管理和權(quán)限管理
組介紹:Linux中的用戶必須屬于一個(gè)組,不能獨(dú)立于組外
- 所有者,當(dāng)前文件/目錄的所有者,一般為創(chuàng)建者,可以修改
- 所在組:當(dāng)前用戶所有的組,某個(gè)用戶創(chuàng)建一個(gè)文件后,這個(gè)文件的所在組就是該用戶所在的組(默認(rèn))
- 其他組:除了文件的所有者,以及文件所有者所在的組,其他用戶都是都是文件的其它組
- 改變用戶所在組:修改用戶的組,方便進(jìn)行權(quán)限管理。注意!要root勸降才能修改某個(gè)用戶所在的組
- 理解:所在者–自己 所在組–家人 其他組–外人
組管理
文件/目錄 所有者
一般為文件的創(chuàng)建者,誰(shuí)創(chuàng)建該文件,那么所有者就是誰(shuí),可以手動(dòng)更改所有者
-
查看文件的所有者
ls -ahl
-
修改文件所有者
chown 用戶名 文件名 -R 如果是目錄,則使其下的所有子文件或目錄遞歸生效 # 使用root創(chuàng)建一個(gè)apple.txt,然后修改所有者為tom(tom用戶存在) touch apple.txt chown tom apple.txt
文件/目錄 所在組
組的創(chuàng)建
groupadd 組名
查看文件/目錄所在組
ls -ahl
修改文件/目錄所在的組
chgrp 組名 文件/目錄
修改用戶所在組
usermod -g 新組名 用戶名
usermod -d 目錄名 用戶名 # 改變?cè)撚脩舻卿浀某跏寄夸?。?。?!用戶需要有進(jìn)入新目錄的權(quán)限!否則不了!
權(quán)限管理
權(quán)限的概念
計(jì)算資源:(一切皆文件)
權(quán)限:定義資源或服務(wù)的訪問(wèn)能力,稱之為權(quán)限
定義某一個(gè)特定的人資源或者服務(wù)的訪問(wèn)能力, 用戶
定義一類用戶具有訪問(wèn)某個(gè)資源或服務(wù)的能力. 用戶組(存放一些列用戶的容器),同時(shí)用戶組還擁有具有訪問(wèn)某個(gè)資源的權(quán)限
定義一個(gè)資源的權(quán)限:
- 用戶具有該資源的權(quán)限(文件所有者,屬主)
- 用戶組具有該資源的權(quán)限(屬組)
- 其他用戶(既不是屬主,也不是屬組)
文件權(quán)限:
r, 可讀 可以執(zhí)行類似cat命令的操作
w, 可寫 可以編輯或者刪除此文件
x 可執(zhí)行
ls -l顯示的內(nèi)容
-rw-r–r–. 1 root root 231 4月 1 2020 .bashrc
解析:
-rw-r–r–:文件類型 所有者權(quán)限 所屬組權(quán)限 其他組權(quán)限
1:如果是文件則代表硬鏈接數(shù), 是目錄則代表子目錄數(shù)量
root :所有者
root :所屬組
231:文件大小(單位是字節(jié)),如果是文件夾,就顯示一個(gè)固定的值4096
4月 1 2020:最后修改的日期
.bashrc:文件名
權(quán)限位置劃分說(shuō)明
0-9位說(shuō)明(一共10位,0為基底)
- 0位(d,-,l,c,b)文件類型
- l:軟鏈接,相當(dāng)于Windows的快捷方式
- d:目錄,相當(dāng)于Windows的文件夾
- c:字符設(shè)備文件,比如鼠標(biāo),鍵盤
- b:塊設(shè)備,比如硬盤
- 1-3位
- 所有者擁有的權(quán)限
- 4-6位
- 所屬組中用戶擁有的權(quán)限
- 7-9位
- 除了所有者, 所屬組之外的其他用戶的對(duì)該文件的權(quán)限
rwx權(quán)限含義詳解
注意:文件和目錄的rwx含義是不一樣
文件的rwx
- r:可讀(read),可以讀取,查看
- w:可寫(write),可以修改,但是不代表可以刪除該文件,刪除一個(gè)文件的前提的是對(duì)該文件所在的目錄有執(zhí)行的權(quán)限
- x:可執(zhí)行(execute),可以被執(zhí)行
目錄的rwx
- r:可讀(read),可以讀取,ls查看目錄的內(nèi)容
- w:可寫(write),可以修改,對(duì)目錄內(nèi)創(chuàng)建+刪除+重命名目錄
- x:可執(zhí)行(execute),可以進(jìn)入該目錄
可用數(shù)字代表所擁有的權(quán)限r(nóng)=4,w=2,x=1,數(shù)組可以組合,例如rw=4+2=6
chmod 修改權(quán)限
參數(shù)
-R, --recursive:對(duì)目錄以及目錄下的文件遞歸執(zhí)行更改權(quán)限操作。
權(quán)限
- 符號(hào)權(quán)限
-
u
符號(hào)代表當(dāng)前用戶。 -
g
符號(hào)代表和當(dāng)前用戶在同一個(gè)組的用戶,以下簡(jiǎn)稱組用戶。 -
o
符號(hào)代表其他用戶。 -
a
符號(hào)代表所有用戶。 -
+
符號(hào)代表添加目標(biāo)用戶相應(yīng)的權(quán)限。 -
-
符號(hào)代表刪除目標(biāo)用戶相應(yīng)的權(quán)限。 -
=
符號(hào)代表添加目標(biāo)用戶相應(yīng)的權(quán)限,刪除未提到的權(quán)限
-
- 數(shù)字權(quán)限
-
r
符號(hào)代表讀權(quán)限以及八進(jìn)制數(shù)4
。 -
w
符號(hào)代表寫權(quán)限以及八進(jìn)制數(shù)2
。 -
x
符號(hào)代表執(zhí)行權(quán)限以及八進(jìn)制數(shù)1
。 -
X
符號(hào)代表如果目標(biāo)文件是可執(zhí)行文件或目錄,可給其設(shè)置可執(zhí)行權(quán)限。
-
通過(guò)"+“、”-“、”="變更權(quán)限
# + 增加權(quán)限
chmod u+rwx,g+rx 文件/目錄名
# - 減少權(quán)限
chmod u-rx 文件/目錄名
# = 賦值權(quán)限
chmod u=rwx,g=rwx,o=rx 文件/目錄名
通過(guò)數(shù)字變更權(quán)限
chmod u=7,g=5 文件/目錄名
chmoe u=5 文件/目錄名
# 可以混用
chmoe u=7,g=rwx,o=5 文件/目錄名
Sudo 單次提升權(quán)限
提升權(quán)限的原理: root把本來(lái)只能超級(jí)用戶執(zhí)行的命令賦予普通用戶執(zhí)行, sudo的操作對(duì)象是系統(tǒng)命令
sudo的操作對(duì)象是系統(tǒng)命令
visudo
#實(shí)際修改的是/etc/sudoers文件
root ALL=(ALL) ALL
#用戶名 被管理主機(jī)的地址=(可使用的ip地址) 授權(quán)命令(絕對(duì)路徑)
%wheel ALL=(ALL) ALL
#%組名 被管理注解的地址=(可使用的ip地址) 授權(quán)命令(絕對(duì)路徑)
# 添加一個(gè)用戶
useradd whitebrocade
# 設(shè)置用戶的密碼
passwd root
# 為該用戶設(shè)置指定的權(quán)限
whitebrocade ALL = (ALL) /usr/sbin/shutdown
# 切換到 whitebrocade 用戶后,使用sudo命令執(zhí)行shutdown
sudo shutdown -h now
定時(shí)任務(wù)調(diào)度
crond 任務(wù)調(diào)度
crontab進(jìn)行定時(shí)任務(wù)設(shè)置
任務(wù)調(diào)度:指系統(tǒng)在某個(gè)時(shí)間執(zhí)行的特定命令或程序
任務(wù)調(diào)度分類:
- 系統(tǒng)工作:有些工作必須周而復(fù)始地執(zhí)行,如病毒掃描
- 個(gè)別用戶工作:個(gè)別用戶希望執(zhí)行某些程序,如sql備份
crontab [選項(xiàng)]
-e 編輯crontab定時(shí)任務(wù)
-l 查詢當(dāng)前用戶的crontab任務(wù)
-r 刪除當(dāng)前用戶所有的crontab任務(wù)
service crond restart:重啟任務(wù)調(diào)度
# crontab編寫定時(shí)任務(wù)語(yǔ)法
順序:分 時(shí) 日 月 周 命令
minute hour day month week command
# 字段說(shuō)明
minute: 表示分鐘,0到59
hour:表示小時(shí),0到
day:表示日期,從1到31
month:表示月份,1到12
week:表示星期幾,從0到7,這里的0和7代表星期日。
command:要執(zhí)行的命令,可以是系統(tǒng)命令,也可以是自己編寫的腳本文件。
# 5個(gè)日期時(shí)間字段可使特殊字符
星號(hào)(*):代表所有可能的值,例如month字段如果是星號(hào),則表示在滿足其它字段的制約條件后每月都執(zhí)行該命令操作。
逗號(hào)(,):可以用逗號(hào)隔開(kāi)的值指定一個(gè)列表范圍,例如,“1,2,5,7,8,9”
中杠(-):可以用整數(shù)之間的中杠表示一個(gè)整數(shù)范圍,例如“2-6”表示“2,3,4,5,6”
正斜線(/):可以用正斜線指定時(shí)間的間隔頻率,例如“0-23/2”表示每?jī)尚r(shí)執(zhí)行一次。同時(shí)正斜線可以和星號(hào)一起使用,例如*/10,如果用在minute字段,表示每十分鐘執(zhí)行一次
案例
每天凌晨2點(diǎn)備份數(shù)據(jù)庫(kù)中地所有數(shù)據(jù)庫(kù)(重名會(huì)覆蓋)
0 2 * * * mysqldump -u root -p123456 -A -> /home/all.sql.bak
at定時(shí)任務(wù) 在指定時(shí)間執(zhí)行一個(gè)任務(wù)
- at的守護(hù)進(jìn)程atd會(huì)以后臺(tái)模式運(yùn)行,檢查作業(yè)隊(duì)列來(lái)運(yùn)行
- 默認(rèn)情況下,atd守護(hù)進(jìn)程每60秒檢查作業(yè)隊(duì)列
- 有作業(yè)時(shí):檢查作業(yè)運(yùn)行的時(shí)間,如果時(shí)間與當(dāng)前時(shí)間匹配,就運(yùn)行此作業(yè)
- 執(zhí)行完一個(gè)任務(wù)后,不再執(zhí)行此任務(wù)(從隊(duì)列中取出)
- 使用at命令的時(shí)候,一定要保證atd進(jìn)程啟動(dòng)
- 使用ps -ef | grep atd查看atd進(jìn)程是否運(yùn)行
at [選項(xiàng)] [時(shí)間]
Ctrl + D 結(jié)束at命令的輸入,輸出兩次
常用選項(xiàng)
-I atq的別名,at -I 等價(jià) atq
-d atrm的別名,at -d 等價(jià) atrm
-m 當(dāng)指定的任務(wù)被完成后,給用戶發(fā)郵件
-v 顯示任務(wù)將被執(zhí)行的時(shí)間
-c 打印任務(wù)的內(nèi)容到標(biāo)準(zhǔn)輸出
-V 顯示版本信息
-q <隊(duì)列> 使用指定的隊(duì)列
-f <文件> 從指定文件讀入任務(wù)而不是標(biāo)準(zhǔn)輸入讀入
-t <時(shí)間參數(shù)> 以是按參數(shù)的形式提交要運(yùn)行的任務(wù)
磁盤分區(qū)、掛載
分區(qū)
原理
- Linux只有一個(gè)根目錄,一個(gè)獨(dú)立且唯一的文件結(jié)構(gòu),Linux每一個(gè)分區(qū)都是用來(lái)組成整個(gè)文件系統(tǒng)的一部分
- Linux使用“載入”的處理方法,它的整個(gè)文件系統(tǒng)包含了一整套的文件和目錄,且將一個(gè)分區(qū)和一個(gè)目錄聯(lián)系起來(lái)(映射),這時(shí)要載入的一個(gè)分區(qū)將使它的存儲(chǔ)空間在一個(gè)目錄下獲得
硬盤說(shuō)明
Linux硬盤分IDE硬盤和SCSI硬盤,目前基本都是SCSI硬盤
- IDE(Integrated Drive Electronics)接口,也稱為ATA接口,以前主要用于連接機(jī)械硬盤,
- 對(duì)于IDE硬盤,驅(qū)動(dòng)器標(biāo)識(shí)符為“hdx~”,其中“hd”表明分區(qū)所在的設(shè)備的類型,這里指IDE硬盤。
- “x”為盤號(hào)
- a:基本盤
- b:基本從屬盤
- c:輔助主盤
- d:輔助從屬盤
- “~”代表分區(qū),前四個(gè)區(qū)用數(shù)字1到4表示,他們使主分區(qū)或擴(kuò)展分區(qū),第5開(kāi)始就是邏輯分區(qū)
- SCSI(Small Computer System Interface)接口,主要用于連接服務(wù)器級(jí)別的硬盤和硬盤陣列。
- SCSI硬盤驅(qū)動(dòng)器標(biāo)識(shí)符為“sdx~”,"sd"來(lái)表示發(fā)呢去所在設(shè)備的類型,其余則和IDE硬盤的表示方法一樣
列出塊設(shè)備信息
lsblk
lsblk -f
磁盤情況查詢
# 查詢指定目錄磁盤使用情況,默認(rèn)為當(dāng)前目錄
df -h
-s 指定目錄占用大小匯總
-h 帶計(jì)量單位, 以KB以上的單位來(lái)顯示
-a 所有文件
--max-deph=子目錄深度
掛載
軟連接 和 硬連接
概念
鏈接: Linux具有為一個(gè)文件起多個(gè)名字的功能,稱為鏈接。被鏈接的文件可以存放在相同的目錄下,但是必須有不同的文件名,而不用在硬盤上為同樣的數(shù)據(jù)重復(fù)備份。另外,被鏈接的文件也可以有相同的文件名,但是存放在不同的目錄下,這樣只要對(duì)一個(gè)目錄下的該文件進(jìn)行修改,就可以完成對(duì)所有目錄下同名鏈接文件的修改。對(duì)于某個(gè)文件的各鏈接文件,我們可以給它們指定不同的存取權(quán)限,以控制對(duì)信息的共享和增強(qiáng)安全性。
ln命令會(huì)保持每一處鏈接文件的同步性,也就是說(shuō),不論你改動(dòng)了哪一處,其它的文件都會(huì)發(fā)生相同的變化。
文件鏈接有兩種形式,即硬鏈接和符號(hào)鏈接。
ln功能說(shuō)明:是為某一個(gè)文件在另外一個(gè)位置建立一個(gè)同步的鏈接,當(dāng)我們需要在不同的目錄,用到相同的文件時(shí),我們不需要在每一個(gè)需要的目錄下都放一個(gè)必須相同的文件,我們只要在某個(gè)固定的目錄,放上該文件,然后在其它的目錄下用ln命令鏈接(link)它就可以,不必重復(fù)的占用磁盤空間。
- inode:是文件系統(tǒng)中存儲(chǔ)文件元信息(文件的創(chuàng)建者、大小、日期等)的區(qū)域,稱為節(jié)點(diǎn)索引。
硬連接
建立硬鏈接時(shí),在另外的目錄或本目錄中增加目標(biāo)文件的一個(gè)目錄項(xiàng),這樣,一個(gè)文件就登記在多個(gè)目錄中
創(chuàng)建硬鏈接后,己經(jīng)存在的文件的索引節(jié)點(diǎn)號(hào)(inode)會(huì)被多個(gè)目錄文件項(xiàng)使用。一個(gè)文件的硬鏈接數(shù)可以在目錄的長(zhǎng)列表格式的第二列中看到,無(wú)額外鏈接的文件的鏈接數(shù)為1,有1個(gè)文件鏈接時(shí),連接數(shù)為2,也就說(shuō)硬鏈接并沒(méi)創(chuàng)建新文件,而是以鏈接數(shù)進(jìn)行一個(gè)控制
在默認(rèn)情況下,ln命令創(chuàng)建硬鏈接, 每個(gè)硬鏈接都指向同一個(gè)索引節(jié)點(diǎn)。ln命令會(huì)增加鏈接數(shù),rm命令會(huì)減少鏈接數(shù)。刪除一個(gè)硬鏈接不會(huì)影響其他硬鏈接,只有當(dāng)最后一個(gè)硬鏈接被刪除后, 也就是一個(gè)文件的鏈接數(shù)為0,文件內(nèi)容才會(huì)被刪除, 否則不會(huì)從文件系統(tǒng)中物理刪除該文件。
對(duì)硬鏈接有如下限制:
- 不能對(duì)目錄文件做硬鏈接
- 不能在不同的文件系統(tǒng)之間做硬鏈接。就是說(shuō),鏈接文件和被鏈接文件必須位于同一個(gè)文件系統(tǒng)中, 不同分區(qū)的文件不能進(jìn)行連接
軟連接
符號(hào)鏈接也稱為軟鏈接,是將一個(gè)路徑名鏈接到一個(gè)文件。這些文件是一種特別類型的文件
與硬鏈接不同的是,符號(hào)鏈接確實(shí)是一個(gè)新文件,當(dāng)然它具有不同的索引節(jié)點(diǎn)號(hào);而硬鏈接并沒(méi)有建立新文件。軟件鏈接建立了文件!!!但是這個(gè)文件是指向索引節(jié)點(diǎn)的
軟硬鏈接的區(qū)別
- 刪除源文件或軟目錄, 刪除的是數(shù)據(jù), 不會(huì)刪除連接,此時(shí)軟鏈接會(huì)失效,硬鏈接不會(huì)
- 如果再次創(chuàng)建同源的源文件或目錄, 那么軟連接將繼續(xù)指向該文件的新數(shù)據(jù)。
- 軟鏈接 可以為文件和目錄(允許不存在)創(chuàng)建鏈接,硬鏈接 只可以為文件創(chuàng)建鏈接
- 軟鏈接 可以跨文件系統(tǒng),硬鏈接 必須是同一個(gè)文件系統(tǒng)
- 軟鏈接的文件權(quán)限 可以和源文件不一樣,硬鏈接的文件權(quán)限 一定和源文件一樣
- 符號(hào)鏈接的大小是其鏈接文件的路徑名中的字節(jié)數(shù)
- 當(dāng)用
ln -s
命令列出文件時(shí),可以看到符號(hào)鏈接名后有一個(gè)箭頭指向源文件或目錄,例如lrwxrwxrwx … 14 jun 20 10:20 /etc/motd->/original_file
其中,表示“文件大小”的數(shù)字“14”恰好說(shuō)明源文件名original_file
由14個(gè)字符構(gòu)成。
- 當(dāng)用
應(yīng)用場(chǎng)景
軟鏈接:作為可執(zhí)行文件的快捷方式。
硬鏈接:備份重要文件。
# 軟鏈接(源文件必須寫成絕對(duì)路徑)
ln -s SOURCE TARGET
[root@localhost ~]# ln -s /home/file /tmp/soft_file
# 硬鏈接, 默認(rèn)即是硬連接, 如果想要?jiǎng)?chuàng)建軟連接的話, 那么攜帶參數(shù)-s
ln SOURCE TARGET
[root@localhost ~]# ln /home/file /tmp/hard_file
掛載 和 軟鏈接的區(qū)別
在Linux中,掛載(mount)和軟鏈接(symbolic link)都是實(shí)現(xiàn)文件系統(tǒng)之間連接的機(jī)制,但兩者有以下關(guān)鍵區(qū)別:
-
掛載是將一個(gè)文件系統(tǒng)附加到一個(gè)指定的目錄上,這個(gè)目錄成為掛載點(diǎn)。掛載之后,通過(guò)掛載點(diǎn)就可以訪問(wèn)被掛載的文件系統(tǒng)。
-
軟鏈接是一個(gè)特殊的文件,其包含一個(gè)指向另一個(gè)文件或目錄的引用路徑。軟鏈接可以讓一個(gè)文件或目錄在文件系統(tǒng)的不同位置出現(xiàn)。
-
掛載是在目錄級(jí)別上的,它將兩個(gè)文件系統(tǒng)連接起來(lái),文件系統(tǒng)之間的數(shù)據(jù)獨(dú)立存儲(chǔ)。軟鏈接是在文件/目錄級(jí)別上的。
-
掛載不會(huì)復(fù)制文件,是真正訪問(wèn)另一個(gè)文件系統(tǒng)。軟鏈接只是引用,不會(huì)占用實(shí)際空間。
-
掛載依賴文件系統(tǒng)的支持,需要內(nèi)核支持。軟鏈接可以在任意文件系統(tǒng)上創(chuàng)建。
-
掛載通常是臨時(shí)的,重啟后失效,需要在/etc/fstab配置自動(dòng)掛載。軟鏈接是持久的。
-
掛載需要root權(quán)限。軟鏈接可以任何用戶創(chuàng)建。
總之,掛載是跨文件系統(tǒng)的目錄級(jí)別連接和訪問(wèn),更強(qiáng)大也更復(fù)雜。軟鏈接只是文件內(nèi)引用,更加輕量級(jí)。
磁盤情況-實(shí)用指令
# 統(tǒng)計(jì)/opt文件夾下文件的個(gè)數(shù)
ls -l /opt | grep "^-" | wc -l
# 統(tǒng)計(jì)/opt文件夾下目錄的個(gè)數(shù)
ls -l /opt | grep "^d" | wc -l
# 統(tǒng)計(jì)/opt文件夾下文件的個(gè)數(shù),包括子文件夾里
ls -lR /opt | grep "^-" | wc -l
# 以樹(shù)狀顯示目錄結(jié)構(gòu)tree目錄
# 如果該命令不存在,那么就使用yum install -y tree進(jìn)行安裝
tree /home/
網(wǎng)絡(luò)配置
網(wǎng)絡(luò)基本概念
- ip地址:在網(wǎng)絡(luò)通信中主機(jī)的標(biāo)識(shí)符(好比手機(jī)號(hào)碼)
- mac地址:主機(jī)的物理網(wǎng)卡的唯一標(biāo)識(shí)符(好比身份證號(hào)碼)
- 子網(wǎng)掩碼:用于區(qū)分主機(jī)的IP地址中的網(wǎng)絡(luò)地址和主機(jī)地址,并由此確定該主機(jī)的IP地址的網(wǎng)段
- 網(wǎng)關(guān):就是一個(gè)網(wǎng)絡(luò)中的主機(jī)連接到另一個(gè)網(wǎng)絡(luò)的主機(jī)的關(guān)口
- DNS:域名解析服務(wù)器,把域名解析成對(duì)應(yīng)的IP地址
Linux網(wǎng)絡(luò)環(huán)境配置
方法一:自動(dòng)獲取
說(shuō)明:登錄后,通過(guò)界面的來(lái)設(shè)置自動(dòng)獲取ip(如果ip沖突了,自動(dòng)切換ip)
特點(diǎn):Linux啟動(dòng)會(huì)自動(dòng)獲取IP
缺點(diǎn):IP地址可能變換
方法二:指定ip
說(shuō)明:直接修改配置文件來(lái)指定IP,并可以連接外網(wǎng)
步驟
-
編輯 vim /etc/sysconfig/network-scripts/ifcfg-ens33
有些它不叫ifcfg-ens33, 叫ifcfg-ens0等, 具體叫網(wǎng)卡名叫什么名字都不一定
在/etc/sysconfig/network-script在這個(gè)目錄下面,存放的是網(wǎng)絡(luò)接口(網(wǎng)卡)的腳本文件(控制文件),ifcfg-eth0是默認(rèn)的第一個(gè)網(wǎng)絡(luò)接口,如果機(jī)器中有多網(wǎng)絡(luò)接口,那么名字就將依此類推ifcfg-eth1,ifcfg-eth2,ifcfg-eth3…(這里面的文件是相當(dāng)重要的,涉及到網(wǎng)絡(luò)能否正常工作),但是我們有多個(gè)網(wǎng)卡, 所以得到了后面稱為ifcfg-en33
-
ifcfg-ens33文件說(shuō)明
# 網(wǎng)絡(luò)類型, 理解成網(wǎng)卡類型也行,通常使Ethernet, 表示接口類型為以太網(wǎng) TYPE="Ethernet" # 不使用代理 PROXY_METHOD="none" # 非Only用于瀏覽器的接口 BROWSER_ONLY="no" # IP的配置方法[none|static|bootp|dhcp] # 對(duì)應(yīng)的設(shè)置(引導(dǎo)時(shí)不使用協(xié)議|靜態(tài)分配IP|BOOTP協(xié)議|DHCP協(xié)議) # DHCP協(xié)議是自動(dòng)分配IP, 當(dāng)某個(gè)ip沖突的時(shí)候, 網(wǎng)卡會(huì)重新選區(qū)其它未使用的IP進(jìn)行分配 # static協(xié)議是固定的IP, 由我們自己手動(dòng)配置IP, 當(dāng)出現(xiàn)IP沖突時(shí), 需要我們手動(dòng)解決 BOOTPROTO="dhcp" # 默認(rèn)路由接口 DEFROUTE="yes" # IPv4配置失敗不會(huì)致命 IPV4_FAILURE_FATAL="no" # 啟用IPv6 IPV6INIT="yes" # 啟用IPv6自動(dòng)配置 IPV6_AUTOCONF="yes" # 默認(rèn)IPv6路由接口 IPV6_DEFROUTE="yes" # IPv6配置失敗不會(huì)致命 IPV6_FAILURE_FATAL="no" # 使用穩(wěn)定的IPv6地址以保證隱私 IPV6_ADDR_GEN_MODE="stable-privacy" # 接口名 NAME="ens33" # 隨機(jī)id UUID="c64e4ad0-d49d-4419-b84a-149493779ca6" # 接口名(設(shè)備,網(wǎng)卡), 現(xiàn)在理解成網(wǎng)卡名 DEVICE="ens33" # 系統(tǒng)啟動(dòng)的時(shí)候網(wǎng)卡是否自啟動(dòng)(yes/no),不用想, 肯定得自動(dòng)啟動(dòng) ONBOOT="yes"
-
新增以及要修改的(注意字母不要寫錯(cuò)了!!!寫錯(cuò)了不起作用!)
# 修改 BOOTPROTO="static" ONBOOT="yes" #新增 # ip地址隨意寫 # 0, 2, 255不可以寫 # 0: 做網(wǎng)段IP # 2: 做網(wǎng)關(guān)地址 # 255: 做廣播地址 IPADDR="xxx.xxx.xxx.xxx" #新增:配置靜態(tài)IP地址,按需配置 # 子網(wǎng)掩碼通常時(shí)255.255.255.0,可以去vm中配置里看 NETMASK="255.255.255.0" #新增:配置子網(wǎng)掩碼 # 要和VM 中的虛擬網(wǎng)絡(luò)編輯器中 NAT設(shè)置的網(wǎng)關(guān)IP配置要一樣,否者無(wú)法聯(lián)網(wǎng) # 網(wǎng)關(guān)配置IP通常和子網(wǎng)IP前三段一致,最后一段不同,網(wǎng)關(guān)最后一個(gè)通常取2 GATEWAY="xxx.xxx.xxx.xxx" #新增:配置網(wǎng)關(guān) # DNS解析, 通常使用8.8.8.8或者是8.8.8.4 DNS1="8.8.8.8" #新增:配置DNS # 參考配置 IPADDR="192.168.132.101" NETMASK="255.255.255.0" GATEWAY="192.168.132.2" # DNS解析 DNS1="8.8.8.8" DNS2="8.8.8.4"
-
-
修改/etc/resolv.conf
這個(gè)文件時(shí)
vim /etc/resolv.conf # Generated by NetworkManager nameserver 8.8.8.8 nameserver 8.8.8.4
-
設(shè)置完后要重新啟動(dòng)服務(wù)
service network restart # 或者 systemctl restart network
-
修改主機(jī)名和host映射(云服務(wù)器的話通常會(huì)設(shè)置)
-
為了方便記憶給Linux系統(tǒng)設(shè)置主機(jī)名
# 查看主機(jī)名 hostname # 注意!!修改后要重新啟動(dòng)才生效?。。?! # 修改/etc/hostname文件,指定新的主機(jī)名 vim /etc/hostname
-
設(shè)置hosts映射(可不設(shè)置)
作用:可以在本機(jī)通過(guò)主機(jī)名找到該Linux系統(tǒng)
windows 映射文件為 C:\Windows\System32\drivers\etc\hosts 配置格式 ip地址 自定義主機(jī)名 例如 192.168.200.130 CentOS_Study Linux在/etc/hosts中 配置格式同window一樣
如果重啟動(dòng)網(wǎng)絡(luò)服務(wù)失敗
方法1 修改mac地址
# 1 虛擬機(jī)設(shè)置 --> 網(wǎng)絡(luò)適配器 -> MAC地址
# 2 修改 /etc/sysconfig/network-scripts/ifcfg-ens33 中 HWADADDR 的值為mac地址
HWADADDR="mac地址"
方法2 禁用NetworkManager
# 1 關(guān)閉NetworkMananger服務(wù)
# systemctl stop NetworkManager
# 2 禁止NetworkMananger服務(wù)開(kāi)機(jī)自啟動(dòng)
systemctl disable NetworkManager
# 3 重啟network服務(wù)
systemctl restart network
主機(jī)名解析過(guò)程分析(Host、DNS)
- Hosts:一個(gè)文本文件,用來(lái)記錄IP和Hostname的映射關(guān)系
- DNS:域名系統(tǒng)(Domain Name System),是互聯(lián)網(wǎng)上作為域名和IP地址相互映射的一個(gè)分布式數(shù)據(jù)庫(kù)
以用戶在瀏覽器輸入www.baidu.com為例進(jìn)行分析
- 瀏覽器先檢查瀏覽器緩存中有沒(méi)有該域名解析IP地址(這個(gè)都是本地緩存的,還沒(méi)到hosts映射文件中)
- 有:調(diào)用該IP完成解析
- 沒(méi)有:檢查DNS解析器緩存
- 有:直接返回IP完成解析
- 一般來(lái)說(shuō),當(dāng)電腦第一次成功訪問(wèn)某個(gè)網(wǎng)站后,在一定時(shí)間內(nèi),瀏覽器和操作系統(tǒng)會(huì)緩存該網(wǎng)站的IP地址(DNS解析記錄)
- 如果本地解析器緩存沒(méi)有找到對(duì)應(yīng)的映射,檢查系統(tǒng)中hosts文件中有沒(méi)有配置對(duì)應(yīng)的域名IP映射
- 有:完成解析返回
- 如果本地DNS解析器緩存和hosts文件中均沒(méi)有找到對(duì)應(yīng)的IP,則到域名服務(wù)DNS進(jìn)行解析
防火墻
firewall-cmd 防火墻服務(wù)指令
firewall-cmd [選項(xiàng) ... ]
--help 幫助命令
-- state 防火墻狀態(tài)
--permanent 永久固化【通常搭配打開(kāi)和關(guān)閉端口使用】
--add-port=端口/協(xié)議 打開(kāi)端口號(hào)【臨時(shí)打開(kāi),永久需要和--permanent一起使用,臨時(shí)打開(kāi)不需要reload,reload會(huì)導(dǎo)致臨時(shí)打開(kāi)端口失效】
--remover-port=端口/協(xié)議 關(guān)閉端口號(hào)【臨時(shí)關(guān)閉,永久需要和--permanent一起使用】
--reload 重新加載【永久關(guān)閉防火墻才需要重新加載】
--list-services 查看所有開(kāi)放的服務(wù)
--list-port 查看所有開(kāi)放的端口
--query-port=端口/協(xié)議 查看指定的端口是否打開(kāi)
--zone-public 公共區(qū)域, 如果不指定那么就默認(rèn)操作default zone, default zone通常映射到public zone公共區(qū)域。所以沒(méi)有指定zone時(shí),配置的規(guī)則會(huì)默認(rèn)應(yīng)用到public公共區(qū)域。
也就說(shuō)如果不指定zone參數(shù)的效果例如 firewall-cmd --add-port=80/tcp , 實(shí)際上也是等價(jià)于 firewall-cmd --zone=public --add-port=80/tcp, 也就是說(shuō),默認(rèn)都會(huì)影響公共區(qū)域public zone的規(guī)則。如果需要配置內(nèi)部或可信區(qū)域,則必須使用--zone=trusted等指定。
不指定時(shí)容易錯(cuò)誤配置公共區(qū)域,導(dǎo)致服務(wù)器開(kāi)放了不安全的端口。
# 常用命令
# 永久開(kāi)放redis的6379端口
firewall-cmd --zone-public --permanent --add-port=6379/tcp
# 永久開(kāi)放mysql的8080端口
firewall-cmd --zone-public --permanent --add-port=8080/tcp
進(jìn)程管理
基本介紹
- Liniux中,每一個(gè)執(zhí)行的程序都是成為一個(gè)進(jìn)程。每一個(gè)進(jìn)程都分配一個(gè)ID號(hào)(PID,進(jìn)程號(hào))
- 每一個(gè)進(jìn)程都可能以兩種方式存在 。前臺(tái)和后臺(tái),由于屏幕無(wú)法看到進(jìn)程,通常使用后臺(tái)方式執(zhí)行
- 前臺(tái):用戶目前的屏幕上可以操作的
- 后臺(tái):后臺(tái)進(jìn)程實(shí)際操作的
- 一般系統(tǒng)的服務(wù)都是以后臺(tái)進(jìn)程的方式存在的,而且常駐在系統(tǒng)中,直到關(guān)機(jī)才結(jié)束
ps指令 報(bào)告當(dāng)前系統(tǒng)的進(jìn)程狀態(tài)
# 列出目前所有的正在內(nèi)存當(dāng)中的程序
ps -aux | grep xxx【展示風(fēng)格】
# 列出所有進(jìn)程
ps -ef | greps xxx 【全格式,B22SD風(fēng)格】
-a 所有進(jìn)程
-u:以用戶為主的格式來(lái)顯示程序狀況。
-e 所有程序
-f:顯示UID,PPIP,C與STIME欄位
# 例如
[root@Cenos-study ~]# ps -aux | grep python
root 842 0.0 1.6 359016 29816 ? Ssl 18:28 0:00 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid
root 1229 0.0 0.9 574288 17512 ? Ssl 18:28 0:01 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
root 104364 0.0 0.0 112828 976 pts/2 S+ 21:39 0:00 grep --color=auto python
[root@Cenos-study ~]# ps -ef | grep python
root 842 1 0 18:28 ? 00:00:00 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid
root 1229 1 0 18:28 ? 00:00:01 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
root 105669 88143 0 21:40 pts/2 00:00:00 grep --color=auto python
指令執(zhí)行結(jié)果字段說(shuō)明
- USER:用戶名
- PID :進(jìn)程號(hào)
- %CPU:該進(jìn)程使用掉的 CPU 資源百分比
- %MEM:該進(jìn)程所占用的物理內(nèi)存百分比
- VSZ :該進(jìn)程使用掉的虛擬內(nèi)存量 (Kbytes)
- RSS :該進(jìn)程占用的固定的內(nèi)存量 (Kbytes)
- TTY :該進(jìn)程是在那個(gè)終端機(jī)上面運(yùn)作,若與終端機(jī)無(wú)關(guān),則顯示 ?,另外, tty1-tty6 是本機(jī)上面的登入者程序,若為 pts/0 等等的,則表示為由網(wǎng)絡(luò)連接進(jìn)主機(jī)的程序。
- STAT:該程序目前的狀態(tài),主要的狀態(tài)有
- R :該程序目前正在運(yùn)作,或者是可被運(yùn)作
- S :睡眠
- T :該程序目前正在偵測(cè)或者是停止了
- Z :僵死進(jìn)程
- D:短期等待
- N:該進(jìn)程擁有比普通優(yōu)先級(jí)更低的優(yōu)先級(jí)
- START:該進(jìn)程被觸發(fā)啟動(dòng)的時(shí)間
- TIME :該進(jìn)程實(shí)際使用 CPU 運(yùn)作的時(shí)間
- COMMAND:?jiǎn)?dòng)進(jìn)程使用的命令和參數(shù),過(guò)長(zhǎng)會(huì)被截?cái)囡@示
終止進(jìn)程 kill 和 killall
# 通過(guò)進(jìn)程號(hào)殺死進(jìn)程
kill [選項(xiàng)] 進(jìn)程號(hào)
# 使用進(jìn)程的名稱來(lái)殺死一組進(jìn)程
# 在系統(tǒng)因負(fù)載過(guò)大而變慢的很有用
killall 進(jìn)程名稱
常用選項(xiàng)
-9 強(qiáng)制進(jìn)程立刻停止
案例
# 終止遠(yuǎn)程登錄服務(wù)sshd
kill sshd對(duì)應(yīng)的進(jìn)程號(hào)
查看進(jìn)程樹(shù) pstree
pstree [選項(xiàng)]
-p 顯示進(jìn)程PID
-u 顯示進(jìn)程所屬用戶
free 查看內(nèi)存占用
free
內(nèi)存占用情況:
total:內(nèi)存總數(shù);
used:已經(jīng)使用的內(nèi)存數(shù);
free:空閑的內(nèi)存數(shù);
buffers Buffer:緩存內(nèi)存數(shù);
cached Page:緩存內(nèi)存數(shù)。
service 服務(wù)管理
- 介紹:服務(wù)(service)本質(zhì)就是進(jìn)程,但是運(yùn)行在后臺(tái),監(jiān)聽(tīng)某個(gè)端口,等待其他程序的請(qǐng)求,也稱為守護(hù)進(jìn)程
- 在CentOS7.0后很多服務(wù)不再使用service而是systemctl
- service指令管理的服務(wù)在/etc/init.d查看
service 控制系統(tǒng)服務(wù)的實(shí)用工具
service 服務(wù)名 [start|stop|restart|reload|status]
start 啟動(dòng)
stop 關(guān)閉
restart 重新啟動(dòng)
reload 重新加載
status 顯示服務(wù)狀態(tài)
開(kāi)機(jī)流程說(shuō)明
開(kāi)機(jī) --> BIOS --> /boot --> systemd進(jìn)程1 --> 運(yùn)行級(jí)別 --> 運(yùn)行級(jí)別對(duì)應(yīng)的服務(wù)
chkconfig指令 檢查或設(shè)置系統(tǒng)的各種服務(wù)
可以通過(guò)chkconfig命令給服務(wù)的各個(gè)運(yùn)行級(jí)別設(shè)置自啟動(dòng)/關(guān)閉
- chkconfig指令管理的服務(wù)在**/etc/init.d**
- 重新設(shè)置服務(wù)后自啟動(dòng)或關(guān)閉,需要重啟機(jī)器reboot才生效
chkconfig(選項(xiàng))
--list 列出所有的系統(tǒng)服務(wù)
chkconfig --level 等級(jí) 服務(wù)名 on/off 服務(wù)在指定的級(jí)別開(kāi)啟/關(guān)閉自啟動(dòng)
systemctl指令 系統(tǒng)服務(wù)管理器指令
- systemctl = service + chkconfig的組合
- systemctl管理的服務(wù)在**/user/lib/systemd/system**
systemctl [選項(xiàng)] 服務(wù)名
常用選項(xiàng)
start 啟動(dòng)服務(wù)
stop 關(guān)閉服務(wù)
restart 重新啟動(dòng)服務(wù)
status 查看服務(wù)的狀態(tài)
list-unit-files 顯示開(kāi)機(jī)自啟動(dòng)的服務(wù),可以通過(guò)grep過(guò)濾
enable 設(shè)置服務(wù)開(kāi)啟自啟動(dòng)
disable 設(shè)置服務(wù)關(guān)閉自啟動(dòng)
is-enabled 查看該服務(wù)是否開(kāi)機(jī)自啟動(dòng)
reload 重新加載
防火墻服務(wù)開(kāi)啟關(guān)閉
# 查看防火墻
systemctl status firewalld
# 關(guān)閉防火墻(臨時(shí)關(guān)閉,下次開(kāi)機(jī)后防火墻又會(huì)自啟動(dòng))
systemctl stop firewalld
# 開(kāi)啟防火墻
systemctl start firewalld
# 永久關(guān)閉防火墻(關(guān)閉自啟動(dòng))
systemctl disable firewalld
top 動(dòng)態(tài)監(jiān)控進(jìn)程
top和ps類似,都是顯示正在執(zhí)行的進(jìn)程,但是top可以在執(zhí)行一段時(shí)間可以更新正在運(yùn)行的進(jìn)程
top [選項(xiàng)]
常用選項(xiàng)
-d 秒數(shù) #指定top命令每個(gè)幾秒更新,默認(rèn)3秒
-i 使top不顯示任何顯示或僵死進(jìn)程
-p 通過(guò)指定監(jiān)控進(jìn)程ID來(lái)監(jiān)控單獨(dú)一個(gè)進(jìn)程的狀態(tài)
交互操作
P 以CPU使用率排序,默認(rèn)為該項(xiàng)
M 以內(nèi)存的使用率排序
N 以PID排序
k 終止一個(gè)進(jìn)程
q 退出top
任務(wù)進(jìn)程
第一行:
10:01:23 — 當(dāng)前系統(tǒng)時(shí)間
126 days, 14:29 — 系統(tǒng)已經(jīng)運(yùn)行了126天14小時(shí)29分鐘(在這期間沒(méi)有重啟過(guò))
2 users — 當(dāng)前有2個(gè)用戶登錄系統(tǒng)
load average: 1.15, 1.42, 1.44 — load average后面的三個(gè)數(shù)分別是1分鐘、5分鐘、15分鐘的負(fù)載情況。
第二行:
Tasks — 任務(wù)(進(jìn)程),系統(tǒng)現(xiàn)在共有183個(gè)進(jìn)程,其中處于運(yùn)行中的有1個(gè),182個(gè)在休眠(sleep),stoped狀態(tài)的有0個(gè),zombie狀態(tài)(僵尸)的有0個(gè)。
第三行:cpu狀態(tài)
6.7% us — 用戶空間占用CPU的百分比。
0.4% sy — 內(nèi)核空間占用CPU的百分比。
0.0% ni — 改變過(guò)優(yōu)先級(jí)的進(jìn)程占用CPU的百分比
92.9% id — 空閑CPU百分比
0.0% wa — IO等待占用CPU的百分比
0.0% hi — 硬中斷(Hardware IRQ)占用CPU的百分比
0.0% si — 軟中斷(Software Interrupts)占用CPU的百分比
第四行:內(nèi)存狀態(tài)
8306544k total — 物理內(nèi)存總量(8GB)
7775876k used — 使用中的內(nèi)存總量(7.7GB)
530668k free — 空閑內(nèi)存總量(530M)
79236k buffers — 緩存的內(nèi)存量 (79M)
第五行:swap交換分區(qū)
2031608k total — 交換區(qū)總量(2GB)
2556k used — 使用的交換區(qū)總量(2.5M)
2029052k free — 空閑交換區(qū)總量(2GB)
4231276k cached — 緩沖的交換區(qū)總量(4GB)
第五行以下:
PID — 進(jìn)程id
USER — 進(jìn)程所有者
PR — 進(jìn)程優(yōu)先級(jí)
NI — nice值。負(fù)值表示高優(yōu)先級(jí),正值表示低優(yōu)先級(jí)
VIRT — 進(jìn)程使用的虛擬內(nèi)存總量,單位kb。VIRT=SWAP+RES
RES — 進(jìn)程使用的、未被換出的物理內(nèi)存大小,單位kb。RES=CODE+DATA
SHR — 共享內(nèi)存大小,單位kb
S — 進(jìn)程狀態(tài)。D=不可中斷的睡眠狀態(tài) R=運(yùn)行 S=睡眠 T=跟蹤/停止 Z=僵尸進(jìn)程
%CPU — 上次更新到現(xiàn)在的CPU時(shí)間占用百分比
%MEM — 進(jìn)程使用的物理內(nèi)存百分比
TIME+ — 進(jìn)程使用的CPU時(shí)間總計(jì),單位1/100秒
COMMAND — 進(jìn)程名稱(命令名/命令行)
netstart 監(jiān)控網(wǎng)絡(luò)狀態(tài)
netstat [選項(xiàng)]
-a 所有端口
-n 使用ip地址而非域名服務(wù)器
-p 顯示哪個(gè)進(jìn)程在調(diào)用
-l 監(jiān)聽(tīng)的端口
-t 顯示TCP傳輸協(xié)議的連線情況
-u 顯示UDP傳輸協(xié)議的連線情況
常用選項(xiàng)組合
-an 以ip地址的形式顯示所有端口
-anp 以ip地址的形式顯示所有端口,并顯示調(diào)用的進(jìn)程
-tl 顯示TCP正在監(jiān)聽(tīng)的端口
-ul 顯示UDP正在監(jiān)聽(tīng)的端口
ping指令 測(cè)試主機(jī)之間網(wǎng)絡(luò)的連通性
ping ip地址/主機(jī)名
nohup 后臺(tái)啟動(dòng)服務(wù)
nohup 命令
# 例如后臺(tái)啟動(dòng)redis服務(wù)
nohup redis-server
# 后臺(tái)運(yùn)行Java程序
# 必須指定日志輸出
# 那么在缺省情況下該服務(wù)的所有輸出都被重定向到一個(gè)名為nohup.out的文件中,除非另外指定了輸出文件
nohup java -jar smmp-0.0.1-SNAPSHOT.jar > /opt/ssmp.log
# 又例如
nohup command > myout.file 2>&1 &
# 在后臺(tái)運(yùn)行command命令,并將其標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤都重定向到myout.file文件中
# 2>&1中的符號(hào)說(shuō)明:
# 2 - 表示標(biāo)準(zhǔn)錯(cuò)誤文件描述符(file descriptor)
# & - 表示重定向操作
# 1 - 表示標(biāo)準(zhǔn)輸出文件描述符
# 所以2>&1的意思是將標(biāo)準(zhǔn)錯(cuò)誤(2)重定向到標(biāo)準(zhǔn)輸出(1)。
# 在Linux中,每個(gè)命令運(yùn)行時(shí)會(huì)打開(kāi)三個(gè)文件描述符:
# 0 - 標(biāo)準(zhǔn)輸入
# 1 - 標(biāo)準(zhǔn)輸出
# 2 - 標(biāo)準(zhǔn)錯(cuò)誤
# 我們可以使用> FILE, 2> FILE對(duì)任意一個(gè)或多個(gè)文件描述符進(jìn)行重定向。
# 而2>&1是一種將標(biāo)準(zhǔn)錯(cuò)誤重定向到標(biāo)準(zhǔn)輸出的捷徑寫法,等同于2>FILE 1>FILE二次重定向。
# 所以,這個(gè)命令的全部功能是:
# nohup 使命令在后臺(tái)不掛起運(yùn)行
# command represent要運(yùn)行的命令
# >myout.file 將標(biāo)準(zhǔn)輸出重定向到myout.file
# 2>&1 將標(biāo)準(zhǔn)錯(cuò)誤也重定向到標(biāo)準(zhǔn)輸出
# & 將整個(gè)命令在后臺(tái)運(yùn)行
rpm
rpm:互聯(lián)網(wǎng)下載包的打包以及安裝工具,生成具有.RPM擴(kuò)展名的文件
rpm包名基本格式:名稱-版本號(hào).適用操作系統(tǒng)
- i686、i86表示32位系統(tǒng),noarch表示通用
rpm [選項(xiàng)]
-q 碰到任何問(wèn)題,優(yōu)先詢問(wèn)用戶,其他選項(xiàng)一般都會(huì)攜帶q一起執(zhí)行
-a 查詢所有rpm軟件包
-q 包名 #查詢某個(gè)軟件包是否安裝
-i 軟件包名 #查軟件的信息【單獨(dú)執(zhí)行就是下載,如果搭配qi就是查詢軟件包的信息】
-l 軟件包名 #查詢軟件包中的文件
-f 文件全路徑名 查詢文件包所屬的軟件包
-e 包名 #卸載rpm包【如果有其他軟件包依賴與要卸載的軟件包,卸載時(shí)會(huì)產(chǎn)生錯(cuò)誤信息】,增加參數(shù)--nodeps,可以強(qiáng)制刪除,但是不推薦,因?yàn)橐蕾囉谠撘蕾嚢某绦蚩赡軣o(wú)法執(zhí)行
-v 提示
-h 進(jìn)度條
rpm 常用命令
安裝一個(gè)包
# rpm -ivh rpm包全路徑名稱
rpm -ivh --nodeps <包名> :如果該RPM包的安裝依賴其它包,即使其它包沒(méi)裝,也強(qiáng)迫安裝。
--force 即使覆蓋屬于其它包的文件也強(qiáng)迫安裝
查詢一個(gè)包是否被安裝
# rpm -q <軟件名>
得到被安裝的包的信息
# rpm -qi < 軟件名>
列出該包中有哪些文件
# rpm -ql < 軟件名>
列出服務(wù)器上的一個(gè)文件或目錄屬于哪一個(gè)RPM包
#rpm -qf <文件或目錄名>
列出所有被安裝的rpm package
# rpm -qa
卸載一個(gè)包
# rpm -e <軟件名>
#例如強(qiáng)制卸載firefox的軟件包C
rpm -e --nodeps firefox
yum
yum:是一個(gè)shell前端軟件包管理器,基于RPM包管理,能夠從指定的服務(wù)器自動(dòng)下載RPM包并安裝(要連網(wǎng)),可以自動(dòng)處理依賴性關(guān)系,并一次安裝所有依賴的軟件包
CentOS7遠(yuǎn)程yum源配置
yum 的配置文件在 /etc/yum.repos.d 目錄下 ,其中有多個(gè)配置文件,每一個(gè)配置文件中都可以配置一個(gè)或多個(gè)repository, 但是最終會(huì)被合并為一個(gè)交給系統(tǒng),所以多個(gè)文件只是為了方便管理。
實(shí)際使用時(shí),選擇其中一個(gè)配置即可
配置步驟
-
備份,將 CentOS-Base.repo 為CentOS-Base.repo.backup
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
-
下載新的 http:#mirrors.aliyun.com/repo/Centos-7.repo,并命名為CentOS-Base.repo
# CentOs7, 阿里云 和 中科大 二選一即可 # 阿里云 sudo wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # 中科大 sudo wget -O CentOS-Base.repo https://lug.ustc.edu.cn/wiki/_export/code/mirrors/help/centos?codeblock=3 # 更新元數(shù)據(jù) sudo yum clean all # 更新新的元數(shù)據(jù)緩存 sudo yum makecache
yum指令
yum [選項(xiàng)]
list 查找所有軟件列表
install 軟件包名 #下載軟件包
remove 軟甲包名 # 卸載軟件包
update 更新軟件包
搭建JavaEE環(huán)境
安裝JDK8
-
創(chuàng)建臨時(shí)文件夾,mkdir /opt/jdk
-
通過(guò)Xftp上傳jdk包到j(luò)dk下
-
進(jìn)入到臨時(shí)文件夾
cd /opt/jdk
-
解壓dk包 【注意替換成自己的版本】
tar -zxvf jdk-8u261-linux-x64.tar.gz
-
創(chuàng)建文件夾,存放Java安裝的
mkdir /user/local/java
-
將臨時(shí)文件夾解壓的jdk包移動(dòng)到軟件安裝目錄
mv jdk1.8.0_261 /usr/local/java/
-
配置環(huán)境變量的配置文件【環(huán)境變量的配置文件在/etc/profile】
vim /etc/profile # java安裝的目錄,注意時(shí)usr,不是user exprot JAVA_HOME=/usr/local/java/jdk1.8.0_261 # 拼接環(huán)境環(huán)境變量,并添加到path中 # 注意必須要通過(guò)冒號(hào)連接環(huán)境變量,否則可能很多命令因?yàn)檎也坏江h(huán)境變量而報(bào)錯(cuò) export PATH=$PATH:$JAVA_HOME/bin
-
更新環(huán)境變量
source /etc/profile
-
輸入一下三個(gè)指令,如果均有輸出就代表安裝成功
java javac java -version
安裝JDK11
新建目錄, 并將下載的好jdk-11.0.20_linux-x64_bin.tar.gz上傳到該目錄下
mkdir -p /opt/java
執(zhí)行下述命令
mkdir -p /usr/local/software
ln -s /opt/java/jdk-11.0.20 /opt/java/software/jdk-11 # 軟連接到opt/目錄下的jdk11
在jdk1.8之后,就不在提供jre了,即使安裝后也會(huì)報(bào)一個(gè)沒(méi)有jre的錯(cuò)誤,這時(shí)候可以使用cmd命令自己生成jre。
進(jìn)入jdk目錄根目錄中執(zhí)行
./bin/jlink --module-path jmods --add-modules java.desktop --output jre
編輯環(huán)境變量, 在頭頂添加一下配置文件
vim /etc/profile
# jdk
export JAVA_HOME=/usr/local/software/jdk-11
# jre
export JRE_HOME=$JAVA_HOME
更新環(huán)境變量
source /etc/profile
使用yum安裝JDK
查找本地舊的jdk依賴
rpm -qa | grep java
刪除本地Java相關(guān)的依賴
- 查找
yum -e --nodeps 對(duì)應(yīng)的文件
查找相關(guān)的jdk
yum list | grep jdk
安裝jdk
yum install 指定的版本
配置環(huán)境變量
-
Linux環(huán)境變量是以冒號(hào):分隔開(kāi)的
當(dāng)jdk大于8后需要手動(dòng)指定, JRE_HOME
export JAVA_HOME=/usr/lib/jvm/jdk版本
export PATH=$PATH:$JAVA_HOME/bin
export JRE_HOME=$JAVA_HOME # 當(dāng)jdk版本大于8的時(shí)候需要指定
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
刷新環(huán)境
- 重新加載配置文件; 否則需要重新連接才生效。
source /etc/profile
測(cè)試是否安裝成功
# 查看path路徑中是否添加上了
echo $PATH
# 同理
echo $CLASSPATH
# 查看Java版本是否是我們安裝的版本
java -version
java
javac
安裝Tomcat
-
檢查系統(tǒng)上是否安裝了mysql( 若安裝了就需要先卸載再使用我們自己的)
-
rpm -qa |grep -i tomcat #查看 rpm -e --nodeps tomcat.... #卸載 # 卸載的命令根據(jù)查找出來(lái)值進(jìn)行修改
-
-
創(chuàng)建臨時(shí)文件夾,用來(lái)存放Tomcat壓縮包
makdir /opt/tomcat
-
通過(guò)Xftp上傳到/opt/tomcat
-
進(jìn)入到臨時(shí)文件夾
cd /opt/tomcat
-
解壓到當(dāng)前目錄
tar -zxvf apache-tomcat-8.5.59.tar.gz
-
創(chuàng)建安裝目錄
mkdir /usr/local/tomcat
-
移動(dòng)tomcat解壓文件到安裝目錄
mv apache-tomcat-8.5.59 /usr/local/tomcat/
-
配置Tomcat環(huán)境變量
# vim編輯環(huán)境變量配置文件 vim /etc/profile # 新增內(nèi)容,tomcat環(huán)境配置 export CATALINA_HOME=/usr/local/tomcat/apache-tomcat-8.5.59 # 拼接環(huán)境變量 export PATH=$PATH:$CATALINA_HOME/bin
-
刷新環(huán)境變量配置
source /etc/profile
-
開(kāi)放防火墻的8080端口,以至于遠(yuǎn)程可以訪問(wèn)tomcat
# 注意是永久開(kāi)放,后續(xù)要重載防火墻設(shè)置才能生效
firewall-cmd --permanent --add-port=8080/tcp
-
重載一下防火墻的設(shè)置
firewall-cmd --reload
-
查看8080端口是否打開(kāi)
firewall-cmd --query-port=8080/tcp
-
打印環(huán)境變量,查看是否配置成功
echo $PATH
-
啟動(dòng)tomcat,如果環(huán)境變量配置好了,那么任何一處都可以適用以下兩個(gè)命令,沒(méi)配置成功就只能在tomcat/bin目錄執(zhí)行這個(gè)兩個(gè)命令
# 啟動(dòng) startup.sh # 關(guān)閉 shutdown.sh # 訪問(wèn)http:\\127.0.0.1:8080
安裝Redis
-
Redis官方下載對(duì)應(yīng)的redis的tar.gz,注意是Linux的版本 這里以redis7.0.11的安裝為例子
-
# 或者通過(guò)命令直接下載到Linux # 避免上傳 wget http://download.redis.io/redis-stable.tar.gz
-
-
在服務(wù)器的/opt下新建文件夾redis
# 進(jìn)入/opt目錄下 cd /opt # 新建redis mkdir redis # 進(jìn)入redis目錄 cd redis
-
上傳redis壓縮包到/usr/redis中,并解壓壓縮包
tar -zxvf redis-7.0.5.tar.gz
-
查看是否有redis的依賴環(huán)境gcc
gcc --version
-
安裝基本環(huán)境gcc
yum install -y gcc
-
進(jìn)入安裝目錄/opt/redis/redis-7.0.11
# 進(jìn)入目錄 /opt/redis/opt/redis/redis-7.0.11 # 執(zhí)行編譯 # make用于編譯程序,生成二進(jìn)制可執(zhí)行文件 make
-
安裝
# make install用于安裝二進(jìn)制文件,復(fù)制到系統(tǒng)目錄中并設(shè)置環(huán)境變量 # # make install PREFIX=[安裝位置目錄](méi) # 現(xiàn)在沒(méi)有指定安裝路徑,那么redis會(huì)默認(rèn)安裝到/usr/local/bin make install # 如果是自定義安裝目錄 # 如果指定的目錄不存在會(huì)創(chuàng)建,需要注意的是如果指定了安裝了路徑,那么需要記住該位置,后續(xù)會(huì)用于修改配置 # 在自定義安裝目錄下會(huì)生產(chǎn)bin目錄 # 這個(gè)命令的執(zhí)行安裝了什么內(nèi)容? 安裝的內(nèi)容有 redis-benchmark :性能測(cè)試工具,可以在自己本機(jī)運(yùn)行,看看自己本機(jī)性能如何 redis-check-rdb:修復(fù)有問(wèn)題的dump.rdb文件 redis-sentinel:Redis集群使用 redis-check-aof:修復(fù)有問(wèn)題的AOF文件 redis-cli:客戶端,操作入口 redis-server:Redis服務(wù)器啟動(dòng)命令
-
如果是自定義安裝,那么需要注意配置環(huán)境變量
# 編輯環(huán)境變量 vim /etc/profile # 在文末最后添加 # 指向make install PREFIX=[安裝位置目錄](méi)中輸入的[安裝位置目錄](méi) # 這里以/usr/local/redis/redis-7.0.11為例子 export REDIS_HOME=/usr/local/redis/redis-7.0.11 # 指向bin路徑 export PATH=$PATH:$REDIS_HOME/bin # esc 退出編輯模式,輸入:wq保存退出 # 刷新環(huán)境變量配置文件 source /etc/profile
-
修改配置redis.conf配置文件
-
修改redis.conf配置文件前先備份
-
重點(diǎn)修改的地方
-
修改前 修改后 含義 daemonize yes,也就說(shuō)默認(rèn)是前臺(tái)模式啟動(dòng) daemonize no 后臺(tái)啟動(dòng) 默認(rèn)為bind 127.0.0.1 -::1,也說(shuō) 只能本機(jī)連接redis 如果有就修改成bind 0.0.0.0,沒(méi)有新增 表示任意主機(jī)都連接redis protected-mode yes protected-mode no 關(guān)閉保護(hù)模式,如果不關(guān)閉的話,那么遠(yuǎn)程是無(wú)法連接的 默認(rèn)沒(méi)有requirepass,也就是沒(méi)有密碼 找到requirepass,添加 requirepass 123456 設(shè)置redis連接的密碼 -
實(shí)際開(kāi)發(fā)中移動(dòng)要修改的
- 連接端口
- 復(fù)雜的連接密碼
-
-
# 修改配置文件之前先備份 # 我解壓的目錄是/opt/redis/redis-7.0.11 # 對(duì)應(yīng)的配置文件也在這里,所以直接在原地備份一個(gè),備份文件起名為redis.conf.backup cp /opt/redis/redis-7.0.11/redis.conf /opt/redis/redis-7.0.11/redis.conf.backup #打開(kāi)配置文件 vim /opt/redis/redis-7.0.11/redis.conf # 1. 關(guān)閉守護(hù)線程模式 # 注釋daemonize yes # 添加daemonize no # 2. 設(shè)置遠(yuǎn)程IP訪問(wèn) # 注釋bind 127.0.0.1 -::1/ # 新增 bind 0.0.0.0 # 3. 關(guān)閉保護(hù)模式 # 注釋 protected-mode yes # 添加 protected-mode no # 4. 添加密碼 # requirepass 123456 # 保存退出 wq!
-
修改號(hào)配置文件后需要重新啟動(dòng)配置文件
-
先關(guān)閉redis-server,重啟
-
# 查找redis相關(guān)的進(jìn)程 ps -ef | grep redis
-
# 根據(jù)查找的結(jié)果 殺死對(duì)應(yīng)的進(jìn)程 # 我這里是116755 對(duì)應(yīng)就是redis-server進(jìn)程 # 殺死 116755進(jìn)程 # kill -9 pid kill -9 116755 # 再次查詢進(jìn)程中是否還有相關(guān)的redis進(jìn)程
-
重新啟動(dòng)redis-server即可
-
-
-
開(kāi)放防火墻6379端口
-
查看已近開(kāi)放的防火墻端口
# 查看防火墻是否開(kāi)始,并順便開(kāi)啟防火墻 # 查看所有開(kāi)放的端口 firewall-cmd --reload
-
開(kāi)放6379端口
# 永久開(kāi)放6479端口 # 注意!注意!密碼一定要設(shè)置復(fù)雜一些 firewall-cmd --permanent --add-port=6379/tcp
-
重新加載防火墻
- 如果不刷新, 那么生效
# 重新加載防火墻 firewall-cmd --reload
-
重新查詢所有開(kāi)放的端口, 看是否已經(jīng)開(kāi)放了6379端口
-
# 查看所有開(kāi)放的端口 firewall-cmd --list-port
-
-
后臺(tái)啟動(dòng)redis
# 使用指定配置文件啟動(dòng)redis-server /usr/local/bin/redis-server /opt/redis/redis-7.0.11/redis.conf
-
本機(jī)連接redis
# 啟動(dòng)redis客戶端 redis-cli redis-cli # 輸入密碼 auth 132456 SAle8ZJofZy6NRxcVzQb
-
遠(yuǎn)程連接redis
Redis配置文件-普通了解
################# 網(wǎng)絡(luò)配置 ##################
# 綁定的ip, 只允許127.0.0.1的用戶訪問(wèn)
# 配置遠(yuǎn)程訪問(wèn)的話必須要注釋掉這個(gè)
# 如果是內(nèi)網(wǎng)可以直接綁定 127.0.0.1, 或者忽略; 0.0.0.0是外網(wǎng),任意用戶都可以訪問(wèn)
bind 127.0.0.1
# 保護(hù)模式
# 遠(yuǎn)程訪問(wèn)redis的話,那么必須將保護(hù)模式修改成false
protected-mode yes
# 端口設(shè)置
port 6379
################## 通用GENERAL ##################
# 以守護(hù)進(jìn)程的方式運(yùn)行,默認(rèn)是 no,我們需要自己開(kāi)啟為yes!
# 通常都會(huì)修改,避免以前臺(tái)的方式啟動(dòng)
daemonize yes
# 如果以后臺(tái)的方式運(yùn)行,我們就需要指定一個(gè) pid 文件!
pidfile /var/run/redis_6379.pid
# 日志
# Specify the server verbosity level.
# This can be one of:
# debug (a lot of information, useful for development/testing)
# verbose (many rarely useful info, but not a mess like the debug level)
# notice (moderately verbose, what you want in production probably) 生產(chǎn)環(huán)境
# warning (only very important / critical messages are logged)
loglevel notice
# 日志的文件位置名
logfile ""
# 數(shù)據(jù)庫(kù)的數(shù)量,默認(rèn)是 16 個(gè)數(shù)據(jù)庫(kù)
databases 16
# 是否總是顯示LOGO
always-show-logo yes
################## 快照(RDB) ##################
# 如果900s內(nèi),如果至少有一個(gè)1 key進(jìn)行了修改,我們及進(jìn)行持久化操作
save 900 1
# 如果300s內(nèi),如果至少10 key進(jìn)行了修改,我們及進(jìn)行持久化操作
save 300 10
# 如果60s內(nèi),如果至少10000 key進(jìn)行了修改,我們及進(jìn)行持久化操作
save 60 10000
################## security 安全##################
# 密碼,初始為空,也就說(shuō)不需要密碼,如果設(shè)置了密碼,那么需要使用auth 密碼進(jìn)行登錄才能進(jìn)入
requirepass
################## 限制clients ##################
#設(shè)置能連接上redis的最大客戶端的數(shù)量
maxclients 10000
#redis 配置最大的內(nèi)存容量
maxmemory <bytes>
#內(nèi)存到達(dá)上限之后的處理策略
maxmemory-policy noeviction
# 處理策略如下
# 1、volatile-lru:只對(duì)設(shè)置了過(guò)期時(shí)間的key進(jìn)行LRU(默認(rèn)值)
# 2、allkeys-lru : 刪除lru算法的key
# 3、volatile-random:隨機(jī)刪除即將過(guò)期key
# 4、allkeys-random:隨機(jī)刪除
# 5、volatile-ttl : 刪除即將過(guò)期的
# 6、noeviction : 永不過(guò)期,返回錯(cuò)誤
################## append only模式 aof配置(持久化保存) ##################
# #默認(rèn)是不開(kāi)啟aof模式的,默認(rèn)是使用rdb方式持久化的,在大部分所有的情況下,rdb完全夠用!
appendonly no
# 持久化的文件的名字
appendfilename "appendonly.aof"
# appendfsync always # 每次修改都會(huì) sync。消耗性能
appendfsync everysec # 每秒執(zhí)行一次 sync,可能會(huì)丟失這1s的數(shù)據(jù)!
# 不執(zhí)行 sync,這個(gè)時(shí)候操作系統(tǒng)自己同步數(shù)據(jù),速度最快
# appendfsync no !
安裝MySQL5.7版本
-
新建文件夾/opt/mysql,并進(jìn)入
mkdir /opt/mysql cd /opt/mysql
-
下載MySQL安裝包或者使用Xftp上傳
wget http:#dev.mysql.com/get/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar # 解壓 tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar
-
刪除CentOS7.6自帶的類Mysql數(shù)據(jù)庫(kù)mariadb(會(huì)和沖突)
# 查看mari開(kāi)頭的安裝包,一共兩個(gè) rpm -qa | grep mari rpm -e --nodeps mariadb-libs強(qiáng)制刪除 rpm -e --nodeps marisa
-
依次運(yùn)行幾條命令
# 安裝環(huán)境 rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm # 安裝依賴 rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm # 安裝客戶端 rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm # 安裝服務(wù)端 rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm
-
啟動(dòng)MySQL服務(wù)
systemctl start mysqld.service
-
設(shè)置用戶密碼(mysql自動(dòng)給root用戶設(shè)置隨機(jī)密碼,第一次需要修改)
# 查看MySQL設(shè)置的root隨機(jī)用戶密碼 grep "password" /var/log/mysqld.log # 復(fù)制查出的密碼 # 登錄用戶(注意-p之后不能輸入密碼,只能命令行中輸入) mysql -uroot -p 輸入密碼 # 設(shè)置密碼策略為0級(jí)別,生產(chǎn)環(huán)境不可用?。。?! set global validate_password_policy=0; # 修改密碼(root用戶只能本地登錄) set password for 'root'@'localhost' =password('12345678'); # 刷新權(quán)限,是新密碼生效 flush privileges;
-
設(shè)置MySQL遠(yuǎn)程登錄
# 切換到mysql數(shù)據(jù)庫(kù) use mysql # 查看數(shù)據(jù)庫(kù)有訪問(wèn)區(qū)權(quán)限的信息 # 第一次設(shè)置,通常host都是為localhost select user, host from user; # mysql5.7版本之前的授權(quán) # all privileges,所有權(quán)限,或者單獨(dú)指定select,update,delete # "*.*"代表所有資源所有權(quán)限,第一個(gè)*表示數(shù)據(jù)庫(kù)名稱,第二個(gè)*表示表名 # 'root'@%”其中root代表賬戶名,%代表所有的訪問(wèn)地址 # IDENTIFIED BY '12345678',這個(gè)'12345678'是指遠(yuǎn)程訪問(wèn)密碼,可自定義 grant all privileges on *.* TO 'root'@'%' identified by '自定義遠(yuǎn)程訪問(wèn)密碼' with grant option; # 刷新權(quán)限 flush privileges; # mysql8執(zhí)行授權(quán) # 創(chuàng)建用戶 CREATE USER 'root'@'%' IDENTIFIED BY 'root'; # 授權(quán) grant all privileges on *.* to 'root'@'%' ; # 刷新權(quán)限 flush privileges; grant all privileges on *.* TO 'root'@'%' identified by '12345678' with grant option;
-
開(kāi)放MySQL對(duì)應(yīng)的端口(不開(kāi)放無(wú)法遠(yuǎn)程連接)
# 查3306端口是否被開(kāi)放 firewall-cmd --query-port=3306/tcp # 查所有開(kāi)放的端口 firewal-cmd --list-ports # 開(kāi)放3306端口 firewall-cmd --permanent --add-port=3306/tcp # 刷新防火墻 firewall-cmd --reload
定期備份數(shù)據(jù)庫(kù)shell腳本
數(shù)據(jù)庫(kù)備份sh腳本
#!/bin/bash
# 數(shù)據(jù)庫(kù)訪問(wèn)主機(jī)
HOST=localhost
# 數(shù)據(jù)庫(kù)用戶名
DB_USER=root
# 數(shù)據(jù)庫(kù)密碼
DB_PASSWORD=12345678
# 要?jiǎng)h除距離當(dāng)前時(shí)間指定天數(shù)
DL_NUM=10
# 備份目錄
BACKUP=/data/backup/db
# 獲取當(dāng)前的日期時(shí)間
DATETIME=$(date +%Y-%m-%d_%H:%M:%S)
# 測(cè)試時(shí)間是否獲取到
# echo $DATETIME
# 創(chuàng)建備份目錄專門存放,如果存在就使用,如果不存在就創(chuàng)建目錄
# 如果不是一個(gè)目錄,就創(chuàng)建(!取反,-d表示文件存在且是一個(gè)目錄)
[ ! -d "${BACKUP}/${DATETIME}" ] && mkdir -p "${BACKUP}/${DATETIME}"
# 所有數(shù)據(jù)庫(kù)備份,并壓縮為gz格式
mysqldump -u${DB_USER} -p${DB_PASSWORD} --host=${HOST} --all-databases | gzip > ${BACKUP}/${DATETIME}/$DATETIME.sql.gz
# 進(jìn)入備份目錄
cd ${BACKUP}
# 打包,${DATETIME}的文件以及子目錄下的打包為$DATETIME.tar.gz格式
tar -zcvf $DATETIME.tar.gz ${DATETIME}
# 打包后刪除,打包前的文件${DATETIME},該目錄以及該目錄下的子目錄
rm -rf ${BACKUP}/${DATETIME}
# 刪除指天數(shù)前的備份文件
find ${BACKUP} atime +${DL_NUM} -name "*.tar.gz" -exec rm -rf {} \;
# 提示信息
echo "備份數(shù)據(jù)庫(kù)所有數(shù)據(jù)庫(kù)成功"
指定時(shí)間備份
-
編輯計(jì)時(shí)器設(shè)置
# 編輯 crontab -e # 查看 crontab -l # 刪除 crontab -r
-
編寫調(diào)度任務(wù)crontab -e
# 寫定時(shí)調(diào)度任務(wù),指定兩點(diǎn)半備份數(shù)據(jù)庫(kù) # 分鐘 時(shí) 日 月 周 命令 # 每天兩點(diǎn)半執(zhí)行一次腳本 30 2 * * * /opt/sqlBck/mysql_db_backup.sh
Shell編程
Shell基本介紹
Shell概述
shell是一個(gè)命令行解釋器,為用戶提供一個(gè)向Linux內(nèi)核發(fā)送請(qǐng)求以便運(yùn)行程序的界面系統(tǒng)級(jí)程序,用戶可以用Shell來(lái)啟動(dòng)、掛起、停止或編寫一些程序
Shell腳本格式要求
- 腳本必須以**#!/bin/bash**開(kāi)頭
- 腳本需要有可執(zhí)行的權(quán)限(即是是root用戶創(chuàng)建的sh腳本也需要手動(dòng)添加可執(zhí)行權(quán)限)
Shell腳本常用執(zhí)行方式
-
輸入腳本的絕對(duì)路徑或相對(duì)路徑(一定要有執(zhí)行權(quán)限?。?!)
# 例如/opt/shcode下有一個(gè)hello.sh腳本 # 使用絕對(duì)路徑執(zhí)行sh腳本 /opt/shcode/hello.sh # 使用相對(duì)路徑執(zhí)行sh腳本,假定目前已經(jīng)在/opt/shcode/目錄下 ./hello.sh
-
sh命令執(zhí)行(無(wú)需執(zhí)行權(quán)限也能執(zhí)行)
# 絕對(duì)路徑執(zhí)行 sh /opt/shcode/hello.sh # 相對(duì)路徑執(zhí)行,假定在/opt/shcode/下 sh hello.sh
Shell語(yǔ)法
shell注釋
-
單行注釋
# 注釋內(nèi)容
-
多行注釋(“:<<!” 和 “!” 獨(dú)自占一行)
:<<! 注釋內(nèi)容 !
shell變量
shell變量分類
變量分為兩種,分別為系統(tǒng)變量和用戶自定義變量
- 系統(tǒng)變量:
$HOME
$PWD
$SHELL
$USER
- 顯示當(dāng)前shell中所有變量:set
shell變量的定義
-
定義變量:變量名=值
- 注意!等號(hào)之間不能有空格!不遵守就報(bào)錯(cuò)
-
撤銷變量:uset 變量名
-
聲明靜態(tài)變量:readonly 變量
- 注意,不能使用unset撤銷,會(huì)報(bào)錯(cuò)
-
將命令的返回值賦值給變量
-
使用反引號(hào)
A=`date`
-
使用$()
A=$(date)
-
設(shè)置環(huán)境變量
# 將shell變量輸出為環(huán)境變量/全局變量
export 變量名=變量值
# 更新配置文件
source 配置文件
# 環(huán)境變量的配置文件通常在/etc/profile,所以更新環(huán)境配置文件為
source /etc/profile
# 查詢變量名
echo $變量名
# 環(huán)境變量名為HOME,所以查看環(huán)境變量的值就可以為
echo $HOME
位置參數(shù)變量
# n為大于0的整數(shù),
# $0代表命令的本身
# $1-$9代表傳入第1到第9個(gè)參數(shù)
# 10以上需要用大括號(hào)包含,例如第10個(gè)使用${10},第11個(gè)使用${11}
$n
# 這個(gè)變量代表命令行中所有的參數(shù)
# $*把所有參數(shù)當(dāng)作一個(gè)整體
$*
# 這個(gè)變量代表命令行中所有的參數(shù)
# $@把每個(gè)參數(shù)分別對(duì)待
$@
# 代表命令行中所有參數(shù)的個(gè)數(shù)
$#
實(shí)例腳本
#!/bin/bash
# 打印命令行的參數(shù),體會(huì)$*和$@的區(qū)別
for i in "$*"
do
echo "$i"
done
ehco "-------"
for j in "$@"
do
echo "$j"
done
預(yù)定義變量
基本介紹:shell設(shè)計(jì)者提前定義好的變量,可以直接在shell腳本中使用
# 當(dāng)前進(jìn)程的進(jìn)程號(hào),即是PID
$$
# 后臺(tái)運(yùn)行的最后一個(gè)進(jìn)程的進(jìn)程號(hào)
$!
# 最后一次執(zhí)行命令返回的狀態(tài)
# 如果這個(gè)變量的值為0,證明命令正確執(zhí)行
# 如果不為0(具體的數(shù)字,由命令自己決定),那么證明上一個(gè)命令執(zhí)行不正確
$?
執(zhí)行腳本
#!/bin/bash
echo "當(dāng)前執(zhí)行的線程id=$$"
# 以后臺(tái)的方式運(yùn)行一個(gè)腳本,并獲取他的進(jìn)程號(hào)
# 該腳本存在才行
/opt/shcode/hello.sh &
echo "最后一個(gè)執(zhí)行的線程id=$!"
echo "執(zhí)行的結(jié)果=$?"
運(yùn)算符
# $(("運(yùn)算式"))
# $[運(yùn)算式]
# expr 運(yùn)算式
注意事項(xiàng)
1 expr運(yùn)算符間要有空格,如果希望將expr的結(jié)果賦值給某個(gè)變量,就是用反引號(hào)``
例如:expr 1 + 2
A=`expr 1 + 3`
2 expr后邊的乘、除、取余 分別為 \* / %
條件判斷
條件判斷和if-elif判斷
if [ 條件判斷式 ]
then
代碼
elif [條件判斷式]
then
代碼
fi
注意事項(xiàng)
- 條件和中括號(hào)必須要有空格
- fi作為判斷條件的結(jié)尾
- 判斷后必須得銜接then
- 非空返回true 空返回false,這里的空指字符串的空串
- 例如:[ 1 ] 返回true [ “” ] 返回false
- 0返回true 1返回false
- &&且 ||或 !取反同樣適用
常用判斷條件匯總
- = 字符串比較
- 兩個(gè)整數(shù)比較
- -lt 小于
- -le 小于等于
- -eq 等于
- -gt 大于
- -ge 大于等于
- -ne 不等于
- 按文件權(quán)限進(jìn)行判斷
- -r 有讀權(quán)限
- -w 有寫權(quán)限
- -x 有執(zhí)行權(quán)限
- 按照文件類型進(jìn)行判斷
- -f 文件存在并且是一個(gè)常規(guī)的文件
- -e 文件存在
- -d 文件存并且是一個(gè)目錄
實(shí)例shell腳本
#!/bin/bash
# 判斷/opt/shcode/hello.txt目錄中是否存在該文件
if [ -f /opt/shcode/hello.txt ]
then
ehco "存在該文件"
fi
# 根據(jù)輸入的參數(shù),判斷大于等于60輸出“及格了”,小于60輸出“不及格”
if [ $1 -ge 60 ]
then
echo "及格了"
elif [ $1 -lt 60 ]
then
echo "不及格"
fi
case語(yǔ)句
case $變量名 in
"值1")
如果變量的值等于值1,就執(zhí)行
;;
"值2")
如果變量的值等于值2,就執(zhí)行
;;
# 其他分支
*)
如果都不匹配,就執(zhí)行這段代碼
;;
esac
注意事項(xiàng)
- “值1”)單獨(dú)起一行
- 每種情況必須以兩個(gè)英文分號(hào)收尾
- case語(yǔ)句結(jié)尾必須使用esac
實(shí)例腳本
#!/bin/bash
case $1 in
"1")
echo "周一"
;;
"2")
echo "周二"
;;
*)
echo "其他"
;;
esac
for循環(huán)
# 基本語(yǔ)法1
for 變量 in 值1 值2 值3...
do
程序/代碼
done
# 基本語(yǔ)法2
for (( 初始值; 循環(huán)控制條件; 變量變化 ))
do
程序/代碼
done
注意事項(xiàng)
- for和雙括號(hào)之間有空格
- 雙括號(hào)和值也有空格
實(shí)例代碼
#!/bin/bash
# 打印命令行的參數(shù),體會(huì)$*和$@的區(qū)別
echo "in語(yǔ)法"
for i in "$*"
do
echo "$i"
done
ehco "-------"
echo "雙括號(hào)語(yǔ)法"
for j in "$*"
do
echo "$j"
done
ehco "-------"
ehco "輸入的值為$1,"
# 根據(jù)輸入的值n,從1到n累加
SUM=0
for ((i=1; i<=$1; i++))
do
# 將運(yùn)算后的結(jié)果作為一個(gè)變量賦值給SUN
SUM=$[$SUM+$i]
done
echo "1累加到$1的的總和為$SUM"
whil循環(huán)
while [ 條件判斷式 ]
do
代碼
done
注意事項(xiàng)
- while和中括號(hào)之間有空格
- 條件判斷式和中括號(hào)之間也有空格
實(shí)例腳本
#!/bin/bash
# 根據(jù)輸入的值n,從1到n累加
SUM=0
i=0
while [ $i -le $1 ]
do
SUM=$[$SUM+$i]
# i自增
i=$[$i+1]
done
echo "1累加到$1的總和為$SUM"
read讀取控制臺(tái)輸入
read (選項(xiàng))(參數(shù))
選項(xiàng)
-p 指定讀取值的提示信息
-t 指定讀取值的等待時(shí)間,單位秒,超時(shí)就不等待
參數(shù)
變量 指定讀取值的變量名
實(shí)例腳本
#!/bin/bash
#讀取控制臺(tái)輸入的NUM1值
read -p "請(qǐng)輸入一個(gè)數(shù)NUM1=" NUM1
ehco "輸入的值為NUM1=$NUM1"
#讀取控制臺(tái)輸入的NUM2值,10秒無(wú)輸入就跳過(guò)
read -t 10 -p "請(qǐng)輸入一個(gè)數(shù)NUM1=" NUM2
ehco "輸入的值為NUM2=$NUM2"
函數(shù)
函數(shù)分類
主要分為系統(tǒng)函數(shù)和自定義函數(shù)
系統(tǒng)函數(shù)
basename 基本語(yǔ)法
# 功能:返回完整路徑最后/的部分,常用于獲取文件名
basename [pathname] [suffix]
# 功能:刪除所有的前綴,包括最后一個(gè)字符/,然后將字符串顯示出來(lái)
basename [string] [suffix]
# suffix為后綴,如果suffix被指定了,basename會(huì)將pathname或string中的suffix去掉
# 例如 返回/opt/shcode/aaa.txt的“aaa”部分,即是文件名
basename /opt/shcode/aaa.txt .txt
實(shí)例腳本
#!/bin/bash
# 返回/opt/shcode/aaa.txt的“aaa.txt”部分
basename /opt/shcode/aaa.txt
# 返回/opt/shcode/aaa.txt的“aaa”部分,即是文件名
basename /opt/shcode/aaa.txt .txt
dirname 基本語(yǔ)法
# 功能:返回完整路徑最后/的前面的部分,常用于返回路徑部分
# 即是將給定絕對(duì)路徑中的非目錄部分去除,然后返回目錄部分
driname [pathname]
實(shí)例腳本
#!/bin/bash
# 返回/opt/shcode/aaa.txt的“/opt/shcode”部分,即是目錄部分
driname /opt/shcode/aaa.txt
自定義函數(shù)
# 定義函數(shù)語(yǔ)法
[ funciton ] 函數(shù)名[()]
{
Action;
[return int;]
}
# 調(diào)用語(yǔ)法
函數(shù)名 [值]
實(shí)例腳本
#!/bin/bash
# 計(jì)算輸入兩個(gè)參數(shù)的和
function getSum() {
SUM=$[$1+$2]
echo "和是=$SUM"
}
# 輸入兩個(gè)值
read -p "請(qǐng)輸入第一個(gè)參數(shù)n1=" n1
read -p "請(qǐng)輸入第二個(gè)參數(shù)n2=" n2
# 調(diào)用自定義的函數(shù)
getSum $n1 $n2
日志管理
/var/log目錄就是系統(tǒng)日志文件的保存位置
系統(tǒng)常用日志
重中之重
日志文件 | 說(shuō)明 |
---|---|
/var/log/message | 記錄系統(tǒng)中重要消息的日志。這個(gè)日志文件會(huì)記錄Linux系統(tǒng)的絕大數(shù)重要消息。如果系統(tǒng)出問(wèn)題,首要就檢查的就是該日志 |
/var/log/boot.log | 記錄系統(tǒng)啟動(dòng)日志 |
/var/log/cron | 記錄系統(tǒng)定時(shí)相關(guān)的日志 |
/var/log/lasllog | 記錄系統(tǒng)中所有用戶最后一次登錄時(shí)間的日志。該文件為二進(jìn)制文件,要使用lastlog命令查看 |
/var/log/mailog | 記錄郵件信息的日志 |
/var/log/secure | 記錄驗(yàn)證和授權(quán)方面的信息。只要涉及賬戶和密碼的程序都會(huì)記錄,比如系統(tǒng)登錄、ssh的登錄、su切換用戶、sudo授權(quán)、添加用戶、修改用戶等會(huì)記錄到該文件 |
/var/log/ulmp | 記錄當(dāng)前已經(jīng)登錄的用戶的信息。這個(gè)文件會(huì)隨著用戶的登錄和注銷而不斷變化,只記錄當(dāng)前登錄用戶的信息。這個(gè)文件不能使用vi查看,而要使用w、who、users等命令查看 |
重中次重
日志文件 | 說(shuō)明 |
---|---|
/var/log/cups/ | 記錄打印信息的日志 |
/var/log/dmesg | 記錄系統(tǒng)在開(kāi)機(jī)時(shí)內(nèi)核自檢的信息匯總。也可以使用dmesg命令直接查看內(nèi)核自檢信息 |
/var/log/btmp | 記錄錯(cuò)誤登錄的日志。是一個(gè)二進(jìn)制文件,不能直接使用vi查看,要使用lastb命令查看 |
/var/log/wtmp | 永久記錄所有用戶的登錄、注銷信息,同時(shí)記錄系統(tǒng)的后臺(tái)啟動(dòng)、重啟、關(guān)機(jī)時(shí)間。是二進(jìn)制文件,使用last命令查看 |
日志管理服務(wù) rsyslogd
rsyslogd和syslogd的對(duì)比
CenOS7.6日志服務(wù)是rsyslogd,CenOS6.x日志服務(wù)是syslodd。rsyslogd功能更加強(qiáng)大。rsyslogd的使用、日志格式和syslogd服務(wù)兼容
命令
-
查看Linux中的rsyslogd服務(wù)是否啟動(dòng)
ps aux | grpe "rsyslogd" | grep -v "grep"
-
查詢r(jià)syslogd服務(wù)的自啟動(dòng)狀態(tài)
systemctl list-unit-files | grep rsyslog
配置文件:/etc/rsyslog.conf
編輯文件格式 *.* 存放日志文件
第一個(gè)*表示日志的類型
第二個(gè)*表示日志的級(jí)別
例如
# 日志管理服務(wù)示例,往/etc/rsyslog.conf中添加日志文件/var/log/test.log,
# 當(dāng)有事件發(fā)生時(shí),該文件按就會(huì)接受信息并保存
# 如果/var/log/test/log文件不存在會(huì)自動(dòng)創(chuàng)建
authpriv.info /var/log/test/log
-
日志類型
- auth:pam產(chǎn)生的日志
- authpriv:ssh、ftp等登錄信息的驗(yàn)證下信息
- corn:時(shí)間任務(wù)相關(guān)
- kern:內(nèi)核
- lpr:打印
- mail:郵件
- mark(syslog)-rsyslog:服務(wù)內(nèi)部的信息,時(shí)間 標(biāo)識(shí)
- news:新聞組
- user:用戶程序產(chǎn)生的相關(guān)信息
- uucp:unix to nuix copy 主機(jī)之間相關(guān)的通信
- local 1-7:自定義的日志設(shè)備
-
日志級(jí)別(從上到下,級(jí)別從低到高,記錄的信息越來(lái)越少)
- debug:有調(diào)試信息的,日志通信最多
- info:一般調(diào)試信息,最常用
- notice:最具有重要性的普通條件的信息
- warning:警告級(jí)別
- err:錯(cuò)誤級(jí)別,阻止某個(gè)功能或某個(gè)模塊不能正常工作的信息
- crit:嚴(yán)重級(jí)別,阻止整個(gè)系統(tǒng)或整個(gè)軟件不能正常工作的信息
- emerg:內(nèi)核奔潰等重要信息
- none:什么都不記錄
-
日志服務(wù)rsyslogd記錄日志文件的格式
-
事件產(chǎn)生的時(shí)間 產(chǎn)生事件的服務(wù)器的主機(jī)名 產(chǎn)生事件的服務(wù)名或程序名 事件的具體信息
-
日志輪替
日志輪替:把舊的日志文件移動(dòng)并改名,同時(shí)建立新的日志文件,當(dāng)舊的日志文件超出保存范圍之后,就會(huì)進(jìn)行刪除
日志輪替文件命名機(jī)制
- CentOS7使用logrotate進(jìn)行日志輪替管理,想要改變?nèi)罩据喬嫖募?,通過(guò)/etc/logrotate.conf配置文件種"dateext"
- 如果配置文件中有"dateext"參數(shù),那么日志會(huì)采用日期作為日志文件的后綴
- 例如:secure_20201010,這樣日志不會(huì)重疊覆蓋,也不需要修改日志文件的名稱,只需要指定日志保存的個(gè)數(shù)即可,超出個(gè)數(shù)自動(dòng)刪除
- 如果配置文件中沒(méi)有dateext參數(shù),日志文件就需要改名。
- 第一次進(jìn)行日志輪替時(shí),當(dāng)前的”secure“日志會(huì)自動(dòng)改名為”secure.1“,然后新建日志”secure“日志,用來(lái)保存新日志
- 第二次進(jìn)行日志輪替時(shí),”secure.1“自動(dòng)改名為”secure.2“,”secure“自動(dòng)改名為”secure.1“,然后新建日志”secure“保存新日志
- 依此類推
logrotate配置文件
/etc/logrotate.confg為logrotate日志服務(wù)的全局配置文件
# see "man logrotate" for details
# 通過(guò)man logrotate命令來(lái)查看更多使用細(xì)節(jié)
# rotate log files weekly
# 每周對(duì)日志文件進(jìn)行一次輪替
weekly
# keep 4 weeks worth of backlogs
# 一共保存4份日志文件備份(不包含最新的日志文件),當(dāng)創(chuàng)建新的日志文件時(shí),判斷日志備份個(gè)數(shù)是否大于4,大于就將最舊的日志刪除
rotate 4
# create new (empty) log files after rotating old ones
# 在日志輪替后,創(chuàng)建新的空的日志文件
create
# use date as a suffix of the rotated file
# 使用日志作為日志輪替文件的后綴
dateext
# uncomment this if you want your log files compressed
# 日志文件是否壓縮,如果取消注釋,則日志會(huì)在轉(zhuǎn)儲(chǔ)的同時(shí)進(jìn)行壓縮
#compress
# RPM packages drop log rotation information into this directory
# 包含 /etc/logrotate.d/ 目錄中所有的子配置文件。也就說(shuō)會(huì)把這個(gè)目錄中所有的子配置文件都讀取進(jìn)該文件(logrotate)
include /etc/logrotate.d
# 下面是單獨(dú)設(shè)置,優(yōu)先級(jí)更加高
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
# 每月輪替一次
monthly
# 創(chuàng)建新的日志文件,權(quán)限時(shí)0664 所有者是root,所屬組是utmp組
create 0664 root utmp
# 日志最小輪替大小是1MB。當(dāng)時(shí)間到達(dá)一個(gè)月時(shí),如果日志大小大于1MB,那么不進(jìn)行日志輪替,如果大于1MB就進(jìn)行日志輪替
minsize 1M
# 僅保留一份日志備份。也就是只有wtemp和wtmp.1
rotate 1
}
/var/log/btmp {
# 如果日志不存在,則忽略該日志的警告信息
missingok
# 每月對(duì)日志文件進(jìn)行一次輪替
monthly
# 創(chuàng)建新的日志文件,權(quán)限時(shí)0600 所有者是root,所屬組是utmp組
create 0600 root utmp
# 僅保留一份日志備份。也就是只有btemp和btmp.1
rotate 1
}
# system-specific logs may be also be configured here.
輪替策略配置的格式
日志文件的絕對(duì)路徑
{
參數(shù)
}
日志文件參數(shù)說(shuō)明
參數(shù) | 參數(shù)說(shuō)明 |
---|---|
daily | 日志輪替周期為每天 |
weekly | 日志輪替周期為每周 |
monthly | 日志輪替周期為每月 |
rotate 數(shù)字 | 保留備份日志文件的個(gè)數(shù)。0指不備份 |
compress | 日志輪替時(shí),舊的日志進(jìn)行壓縮 |
create 權(quán)限 所有者 所屬組 | 建立新日志,同時(shí)指定新日志的權(quán)限與所有者和所屬組 |
mail address | 當(dāng)日志輪替時(shí),輸出內(nèi)容通過(guò)郵件發(fā)送給到 指定的郵件地址 |
missingok | 如果日志不存在,則忽略該日志的警告信息 |
notifempty | 如果日志為空文件,則不進(jìn)行日志輪替 |
minsize 大小 | 日志輪替的最小值,只有大于等于這個(gè)值才進(jìn)行輪替,否則即是到時(shí)間也不進(jìn)行輪替操作 |
size 大小 | 按照大小進(jìn)行輪替,不按照時(shí)間輪替。日志只有大于指定大小才進(jìn)行日志輪替 |
dateext | 使用日期作為日志輪替文件的后綴 |
sharedscripts | 在此關(guān)鍵字之后執(zhí)行的腳本,只執(zhí)行一次 |
prerotate/startscript | 在日志輪替前執(zhí)行腳本命令 |
postrotate/endsrcipt | 在日志輪替之后執(zhí)行腳本命令 |
把自己的日志文件加入日志輪替中
有兩種方式
- 方式一:直接在全局日志輪替配置文件/etc/logrotate.conf配置文件中寫入該日志的輪替策略
- 方式二:在日志輪替子配置目錄/ect/logrotate.d目錄中新建立日志輪替文件,在該輪替文件中寫入正確的輪替策略,因?yàn)樵撃夸浀奈募炊急弧眎ncluede“到主配置文件中。
- 推薦使用第二種,因?yàn)橄到y(tǒng)需要輪替的日志非常多,如果全部都寫入主配置文件中,會(huì)導(dǎo)致可讀性變差,難以維護(hù)
案例:在/etc/logrotate.d目錄下配置test配置文件,配置/var/log/test.log的輪替策略
# 在/etc/logrotate.d目錄下創(chuàng)建配置文件
cd /etc/logrotate.d
vim test
# 編輯配置文件test
/var/log/test.log
{
# 沒(méi)有該日志文件,忽略警告
missingok
# 輪替周期為每天
daily
# 備份日志最大個(gè)數(shù)為7,超過(guò)就刪除舊的
rotate 7
# 如果日志為空,就不進(jìn)行輪替
notifempty
}
日志輪替機(jī)制原理
日志輪替:依賴系統(tǒng)定時(shí)任務(wù)。在/etc/cron.daily目錄下,可以發(fā)現(xiàn)這個(gè)目錄是有l(wèi)ogrotate文件(有可執(zhí)行權(quán)限),logrotae通過(guò)這個(gè)文件依賴定時(shí)任務(wù)執(zhí)行
查看內(nèi)存日志
注意事項(xiàng):journalctl 查看的是內(nèi)存日志,重啟清空
# 查看全部
journalctl
# 查看最新的3條
journalctl -n 3
# 查看起始時(shí)間到結(jié)束時(shí)間的日志
journalctl --since 19:00 --until 19:10:10
# 報(bào)錯(cuò)日志
journalctl -p err
# 日志詳細(xì)內(nèi)容
journalctl -o verbose
# 查看包含這些參數(shù)的日志
journalctl _PID=1245 _COMM=sshd
# 或
journalctl | grep sshd
備份和恢復(fù)
備份
-
方式一:將需要的文件或分區(qū)用tar命令打包即可,下次恢復(fù)的時(shí)候,再解壓打開(kāi)覆蓋即可
-
使用dump(備份)和restore(恢復(fù))命令,注意這兩個(gè)命令需要安裝
# 安裝dump命令 yum -y install dump # 安裝restore命令 yum -y install restore
dump
dump支持分卷和增量備份(所謂增量備份是指?jìng)浞萆洗蝹浞莺笮薷?增加過(guò)的文件,也稱為差異備份)
注意事項(xiàng):備份分區(qū)可以支持增量備份,如果備份文件或目錄,則不支持增量備份。即只能使用0完整備份
語(yǔ)法
dump [-cu] [-0123456789] [-f<備份后文件名>] [-T<日期>] [目錄或文件系統(tǒng)]
dump []-wW
-c 打包
-0123456789 備份的層級(jí)。0為最完整備份,會(huì)備份所有文件。若指定0以上的層級(jí),則備份備份修改或新增的文件,到9之后就需要從新輪替,就是必須從0開(kāi)始了
-f<備份后的文件名> 指定備份后文件名
-j 調(diào)用bzlib庫(kù)壓縮備份文件,即是將備份后的文件壓縮為bz2格式,讓文件更加小
-T<日期> 指定開(kāi)始備份的時(shí)間和日志
-u 備份完畢后,在/etc/dumpdares中記錄備份的文件按系統(tǒng),層級(jí),日期與時(shí)間等信息
-t 指定文件名,若該文件已經(jīng)在備份文件中,則列出名稱
-W 顯示需要備份的文件以及最后一次備份的層級(jí),時(shí)間,日期
-w 僅顯示需要備份的文件,不顯示額外的信息
示例
# 將/boot分區(qū)所有內(nèi)容備份到opt/boot.bak0.bz2文件中,備份層級(jí)為0
dump -0uj -f /opt/boot.bak0.bz2 /boot
# /boot目錄新增了文件,增量備份/boot
dump -1uj -f /opt/boot.bak1.bz2 /boot
# 顯示需要備份的文件以及最后一次備份的層級(jí),時(shí)間,日期
dump -W
# 查看備份時(shí)間文件
cat /etc/dumpdates
# dump增量備份目錄(錯(cuò)誤示范
# 會(huì)提示DUMP:Only level 0 dumps are allowed on a subdirectory 即只能允許使用級(jí)別0備份子目錄
dump -1j -f /opt/etc.bak.ba2 /etc
# dump命令備份目錄(正確使用)
dump -0j /opt/etc.bak.bz2 /etc/
restore
可以從dump生成的備份文件中恢復(fù)原文件
注意事項(xiàng):每次只能指定一個(gè)模式選項(xiàng),不能混用!
restore [模式選項(xiàng)] [選項(xiàng)]
模式選項(xiàng)
-C 對(duì)比模式,將備份的文件和已存在的文件互相對(duì)比,如果有不同的化,會(huì)給出提示
-i 交互模式,在進(jìn)行還原操作時(shí),restore指令將依序詢問(wèn)用戶
-r 還原模式,如果有增量備份,那么需要把增量備份業(yè)進(jìn)行恢復(fù),有幾個(gè)就恢復(fù)幾個(gè),按小到大的順序來(lái)執(zhí)行恢復(fù)
-t 查看模式,查看備份文件有哪些文件
選項(xiàng)
-f<備份設(shè)備> 從指定的文件中讀取備份數(shù)據(jù),進(jìn)行還原操作
示例
# 比較文件
restore -C -f /opt/boot.bak0.bz2
# 查看備份文件
restore -t -f /opt/boot/bak1.bz2
# 恢復(fù)備份文件,假定有兩個(gè),分別為bak0.bz2和bak1.bz2
restore -r -f /opt/boot/bak0.bz2
restore -r -f /opt/boot/bak1.bz2
安裝寶塔
-
如果未下載wget命令,就執(zhí)行該步驟,如果已下載就跳過(guò)該步驟
yum install -y wget
-
安裝寶塔,如果安裝過(guò)程有就yes或y執(zhí)行下一步
wget -O install.sh http:#download.bt.cn/install/install_6.0.sh && sh install.sh
-
安裝完后會(huì)提示成功,并提供兩個(gè)面板地址,以及用戶名和密碼(地址和密碼都是隨機(jī))
# 外網(wǎng)訪問(wèn),如果沒(méi)有配置防火墻無(wú)法使用 外網(wǎng)面板地址: http:#113.64.72.168:8888/3a118870 # 內(nèi)網(wǎng)地址 內(nèi)網(wǎng)面板地址: http:#192.168.132.98:8888/3a118870 # 用戶名 username: ev80vc0d # 密碼 password: 4f25730b
-
首次登錄需要綁定手機(jī)號(hào)
-
如果忘記開(kāi)始的密碼,那么可以使用以下命令查看
# 顯示的就是開(kāi)始的訪問(wèn)地址和初始用戶名以及密碼 # 如果后續(xù)修改過(guò)了,那么這個(gè)就無(wú)法作為參考 bt default
Linux面試題
常用的Nginx模塊,用來(lái)做什么
rewrite模塊:實(shí)現(xiàn)重寫功能
access模塊:來(lái)源控制
ssl:安全加密
ngx_http_gzip_module:網(wǎng)絡(luò)傳輸壓縮模塊
ngx_http_proxy_module:實(shí)現(xiàn)代理
ngx_http_upstream_module:實(shí)現(xiàn)定義后端服務(wù)列表文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-770871.html
ngx_cache_purge:實(shí)現(xiàn)緩存清除功能文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-770871.html
到了這里,關(guān)于Linux-CentOS7.6安裝和基本使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!