文章目錄
- 詳解Linux-進階
- 1. 定時任務調度
- 1.1 crond 任務調度
- 1.2 at 定時任務
- 2. 磁盤磁區
- 2.1 Linux磁區
- 2.2 增加硬碟
- 2.3 磁盤情況查詢
- 2.4 實用指令
- 3. 網路配置
- 3.1 網路概述
- 3.2 網路配置
- 3.3 host 映射
- 4. 行程管理
- 4.1 行程概述
- 4.2 查看Linux行程
- 4.3 終止行程
- 4.4 服務管理
- 4.5 chkconfig 指令
- 4.6 systemctl 指令
- 4.7 動態監控行程
- 4.8 監控網路狀態
- 5. RPM 與 YUM
- 5.1 軟體包管理概述
- 5.2 RPM包管理--RPM命令
- 5.3 RPM包管理--YUM
- 5.4 原始碼包管理
詳解Linux-進階
本篇博客是上一篇 詳解Linux(基礎篇) 的進階篇,還沒有看過上篇博客的同學建議先花上20多分鐘瀏覽一下上篇的基礎,有了上篇博客的基礎,再看本文,就會事半功倍,不然就會覺得本文的內容有點突兀,
本文主要介紹了Linux中的定時任務調度、磁盤磁區、網路配置、行程管理以及RPM軟體包的安裝,其中每一個難點都有詳細的文字說明和案例以及截圖證明,適合新手村的同學快速掌握Linux的知識,也適合高手用來復習和查看指令,畢竟那么多的指令,不可能一下子都記住,
這是2021年的第一篇博客,是在過年這幾天忙里偷閑寫的🤦?♂?,整理不易,如果您覺得本文不錯,望一鍵三連加分享,🤞🤞
關注??博主
學習資料:
鏈接:https://pan.baidu.com/s/1Mp3nZJOxINhD6s_SqKJ14Q
提取碼:0pcu
1. 定時任務調度
1.1 crond 任務調度
(1)概述
Linux中有一個后臺程式,crond,它可以定時的去調度我們設定的任務,
crond的定時任務是反復執行的,
任務調度:是指系統在某個時間執行的特定的命令或程式,
任務調度分類:
- 系統作業:有些重要的作業必須周而復始地執行,如病毒掃描等
- 個別用戶作業:個別用戶可能希望執行某些程式,比如對mysql 資料庫的備份
crontab 進行定時任務的設定
# 基本語法
crontab [選項]
# 編輯Linux后臺程式crond去執行某一腳本或程式,編輯調度檔案
crontab -e
# 接著輸入任務到調度檔案
# 執行的腳本,每隔一分鐘執行一次 ls -l /etc > /tmp/test.txt
*/1 * * * * ls -l /etc > /tmp/test.txt
| 選項 | 功能 |
|---|---|
| -e | 編輯crontab定時任務 |
| -l | 查詢crontab定時任務 |
| -r | 洗掉當前用戶的所有crontab定時任務 |
引數說明:
(1)5個占位符的說明
| 引數 | 含義 | 范圍 |
|---|---|---|
第一個 * | 一小時中的第幾分鐘 | 0-59 |
第二個 * | 一天中的第幾個小時 | 0-23 |
第三個 * | 一月中的第幾天 | 1-31 |
第四個 * | 一年中的第幾個月 | 1-12 |
第五個 * | 一周中的周幾 | 0-7(0和7都表示周末) |
(2)特殊符號的說明:
| 符號 | 含義 |
|---|---|
* | 表示任何時間,例:第一個*就表示每小時中的每分鐘都執行一次 |
, | 表示不連續的時間,例:0 8,12,16 * * * 表示在每天的8點0分、12點0分,16點0分都執行一次 |
- | 表示連續的時間,例:0 5 * * 1-6 表示在周一到周六的每一天的5點0分都執行一次, |
*/n | 表示每隔多久執行一次,例:*/10 * * * * 表示每天每隔10分鐘就執行一次 |
(3)特定時間案例
| 時間 | 含義 |
|---|---|
30 8 * * * | 每天的8點30分執行一次 |
20 9 * * 3 | 每周三的9點20執行一次 |
0 10 1,15 * * | 每月的1號和15號的10點0分執行一次 |
*/10 5 * * * | 每天的5點,每隔10分鐘執行一次 |
10 9 * * 4-6 | 每周的周四到周六的9點10分執行一次 |
(2)應用案例
# 案例一:每隔一分鐘,就將當前的日期資訊追加到到檔案 /tmp/mydate.txt
crontab -e
*/1 * * * * date >> /tmp/mydate.txt
# 案例二:使用腳本完成每隔一分鐘,將當前日期和日歷都追加到 /home/mycal.txt 檔案中
cd /home
# 撰寫腳本
vim my.sh
date >> /home/mycal.txt
cal >> /home/mycal.txt
現在這個 my.sh 檔案是沒有執行權限的,要給他賦予執行權限,
# 給我們寫的腳本賦予執行權限
chmod u+x my.sh
寫好腳本之后,可以直接使用命令執行,命令如下:
# 執行當前目錄下的 my.sh 腳本
./my.sh
但是我們不可能每分鐘都手動執行一下這個命令,因此我們可以將其寫入調度檔案中,讓crond去定時調度執行它,
crontab -e
*/1 * * * * /home/my.sh
# 案例三:每天凌晨一點,備份mysql資料庫mytest到檔案 /home/db.bak檔案中
crontab -e
0 1 * * * mysqldump -u root -p 密碼 mytest > /home/db.bak
crond 相關指令
# 終止任務調度
crontab -r
# 查看當前用戶的所有任務調度
crontab -l
# 重啟任務調度
service crond restart
1.2 at 定時任務
1、原理概述
- at 命令是一次性定時計劃任務(只執行一次),at 的守護行程 atd 會以后臺模式運行,檢查作業佇列來運行,
- 默認情況下,atd 守護行程每 60 秒檢查作業佇列,有作業時,會檢查作業運行時間,如果時間與當前時間匹配,則運行此作業,
- at 命令是一次性定時計劃任務,執行完一個任務后不再執行此任務了
- 在使用 at 命令的時候,一定要保證 atd 行程的啟動 , 可以使用相關指令來查看,
# ps -ef 檢測當前正在運行的所有行程
ps -ef
# 使用過濾查詢,只查看 atd 行程,
ps -ef | grep atd
出現如下內容,則表明 atd 行程正在運行中,
2、at 命令格式
# at 命令,Ctrl+D 結束at命令的輸入(輸入兩次才有效)
at [選項] [時間]
選項如下:
| 選項 | 含義 |
|---|---|
| -m | 當指定的任務完成后,給用戶發送郵件,即使沒有標準輸出 |
| -I | at q 查詢的別名 |
| -d | at rm 洗掉的別名 |
| -v | 顯示任務將被執行的時間 |
| -c | 列印任務的內容到標準輸出 |
| -V | 顯示版本資訊 |
| -q <佇列> | 使用指定的佇列 |
| -f <檔案> | 從指定檔案中讀取任務而不是從標準輸入中讀取 |
| -t <時間引數> | 以時間引數的形式提交要運行的任務 |
3、at 時間定義
at 指定時間的方法:
- 接受在當天的
hh:mm(小時:分鐘)式的時間指定,假如該時間已過去,那么就放在第二天執行, 例如:04:00,表示在當天的 4點整執行一次, - 使用 midnight(深夜),noon(中午),teatime(飲茶時間,一般是下午 4 點)等比較模糊的詞語來指定時間,
- 采用 12 小時計時制,即在時間后面加上AM(上午)或 PM(下午)來說明是上午還是下午, 例如:12pm,表示凌晨12點,
- 指定命令執行的具體日期,指定格式為month day(月 日)或 mm/dd/yy(月/日/年)或 dd.mm.yy(日.月.年),指定的日期必須跟在指定時間的后面, 例如:04:00 2021-03-1
- 使用相對計時法,指定格式為:
now + count time-units,now就是當前時間,time-units 是時間單位,這里能夠是minutes (分鐘)、hours(小時)、days(天)、weeks(星期),count 是時間的數量,幾天,幾小時, 例如:now + 5 minutes,表示5分鐘后執行一次, - 直接使用 today(今天)、tomorrow(明天)來指定完成命令的時間,
4、應用實體
# 查詢系統中沒有執行的任務(以下兩條命令等價)
atq
at -l
# 案例一:設定三天后的下午5點執行命令, ls /home
# 注意,如果在這里輸入錯誤,想要洗掉的話,按住Ctrl+洗掉鍵,
at 5pm + 2 days
at> /bin/ls /home
# 案例二:設定明天 凌晨3點鐘,輸出時間到指定檔案內
at 3am tomorrow
at> date > /home/mydate.txt
# 案例三:設定2分鐘后,輸出時間到指定檔案內
at now + 2 minutes
at> date > /home/mytime.txt
# 案例四:使用腳本執行定時任務,輸出日歷到指定檔案中
# 編輯腳本
vim test.sh
cal > mytest.txt
# 給腳本賦予執行的權限
chmod u+x test.sh
# 設定定時任務
at now + 1 minutes
at> /home/test.sh
# 洗掉定時任務(一下兩條指令等價)
atrm 任務編號
at -d 任務編號
2. 磁盤磁區
2.1 Linux磁區
(1)Linux中磁區的概念
- Linux 來說無論有幾個磁區,分給哪一目錄使用,它歸根結底就只有一個根目錄,一個獨立且唯一的檔案結構 , Linux 中每個磁區都是用來組成整個檔案系統的一部分,
- Linux 采用了一種叫 “載入” 的處理方法,它的整個檔案系統中包含了一整套的檔案和目錄,且將一個磁區和一個目錄 聯系起來,這時要載入的一個磁區將使它的存盤空間在一個目錄下獲得,
# 查看當前系統的磁區情況(怎么記這個命令?老sb嘮嗑)
lsblk
(2)Linux硬碟型別
Linux 硬碟分 IDE 硬碟和 SCSI 硬碟,目前基本上是 SCSI 硬碟,
- IDE硬碟:驅動器識別符號為 hdx~ ,
hd:表明磁區所在設備的型別,這里是指 IDE 硬碟,x:為盤號- a 為 基本盤
- b 為基本從屬盤
- c 為輔助主盤,
- d 為輔助從屬盤)
~:代表磁區,- 前四個磁區用數字 1 到 4 表示,它們是主磁區或擴展磁區
- 從 5 開始就是邏輯磁區,
- 例:
hda3表示為第一個 IDE 硬碟上的第三個主磁區或擴展磁區,hdb2表示為第二個 IDE 硬碟上的第二個主磁區或擴展磁區,
- SCSI 硬碟:標識為 sdx~ ,
sd:表示磁區所在設備的型別的,這里是指 SCSI 硬碟,- 其余則和 IDE 硬碟的表示方法一樣
# 查看設備的掛載詳細情況
lsblk -f
2.2 增加硬碟
(1)步驟:
- 虛擬機添加硬碟
- 磁區
- 格式化
- 掛載
- 設定可以自動掛載
(2)具體添加硬碟的步驟如下:
1、點擊設定
2、選中硬碟,點擊添加,
3、選中硬碟,點擊下一步,
4、選擇磁盤型別為 SCSI,下一步,
5、創建新的虛擬磁盤
6、設定磁盤容量,
7、指定磁盤檔案(默認即可)
8、可以看到這里多了個新硬碟,點擊確定,
9、然后重啟系統即可識別到新硬碟,
- 我們可以看到新增的磁盤的編號是
sdb,因為我們的第一塊磁盤編號是sda, - 現在還沒有磁區,所以只能看到是一塊單獨的磁盤,
(3)給新增的磁盤磁區
# 磁區命令
fdisk /dev/磁盤編號
例:fdisk /dev/sdb
輸入磁區命令,顯示如下,
常用操作:
| 操作 | 含義 |
|---|---|
| m | 顯示幫助資訊 |
| d | 洗掉磁區 |
| q | 直接退出,不保存修改 |
| n | 添加一塊新的磁區 |
| w | 保存退出 |
| p | 顯示磁盤磁區,等同于 fdisk –l |
說明:
- 開始磁區后輸入 n,新增磁區,然后選擇 p ,磁區型別為主磁區,兩次回車默認剩余全部空間,最后輸入w 寫入磁區并退出,若不保存退出輸入 q,
現在有了磁區之后,還不能直接掛載,需要進行格式化,格式化的原因是要給這個磁區指定它的檔案型別,
(4)格式化磁區
# 磁區命令,檔案型別一般為 ext4,磁區編號就是上面執行磁區時生成的編號,
mkfs -t 檔案型別 /dev/磁區編號
# 例
mkfs -t ext4 /dev/sdb1
格式化完成之后,系統就會生成一個UUID,來唯一標識這塊磁區,
(5)掛載
我們在根目錄下創建一個目錄,/mydisk,來掛載這塊磁區,因為Linux中將一個磁區和一個目錄聯系起來,打開一個目錄,就相當于進入一塊磁區,
掛載:就是將一個目錄和磁區聯系起來,
# 先切換到根磁區(這里不一定分要掛載到根磁區下,也可以掛載到/home或/root下)
cd /
# 創建一個目錄
mkdir mydisk
# 掛載磁區
mount /dev/sdb1 /mydisk
掛載完畢之后,我們在查看系統磁區情況,可以發現新的磁區已經有了掛載點,
卸載磁區,磁區中的內容不會被洗掉,
# 卸載命令
umount 設備名稱或掛載目錄
# 例
umount /dev/sdb1
umount /mydisk
注意:用命令列掛載的方式,Linux系統重啟之后就會失效,
(6)設定為永久掛載
編輯 /etc/fstab 檔案實作永久掛載,
# 編輯 /etc/fatab 檔案,實作永久掛載
vim /etc/fstab
這里可以寫磁區的UUID,也可以寫磁區編號(例:/dev/sdb1 ),
# 添加完成后 執行以下命令,使掛載即刻生效
mount –a
2.3 磁盤情況查詢
在Linux的使用程序中,隨著我們不斷的給Linux系統中添加上傳檔案,它的磁盤空間肯定是越來越少的,因此,我們應該實時掌握磁盤的使用情況,以做出相應操作,如:增加磁盤、增加磁區等,
查詢系統整體磁盤使用情況:
# 查看的命令如下
df -h
查看指定目錄的磁盤使用情況
# 如果不指定目錄,則默認查看當前目錄的磁盤使用情況
du [選項]
# 指定目錄
du -h /home
常用選項:
| 選項 | 含義 |
|---|---|
| -h | 顯示時加上單位,k |
| -s | 指定目錄占用大小匯總 |
| -a | 含檔案 |
| -c | 列出明細的同時,顯示匯總值 |
| –max-depth=num | 指定子目錄深度為num |
# 查詢 /home 目錄的磁盤占用情況,深度為 1
du -hac --max-depth=1 /home
2.4 實用指令
# 統計資料
wc
1、統計目錄下檔案的個數
# Linux的命令是支持正則運算式的,因此可以使用其模糊匹配,
# 顯示 /root 目錄下檔案的個數,使用 wc 指令統計數量,
# 因為檔案是以 - 開頭的
ls -l /root | grep "^-" | wc -l
2、統計目錄下目錄的個數
# 統計 /root 目錄下目錄的個數
ls -l /root | grep "^d" | wc -l
3、統計目錄包括子目錄中檔案的個數
# R 表示遞回的意思
ls -lR /root | grep "^-" | wc -l
4、以樹狀顯示目錄下的檔案及目錄結構
tree 目錄
例:tree /root
注意,Linux中默認是沒有 tree 指令的,我們需要手動安裝一下,安裝指令如下:
# 安裝的前提是Linux系統需連通外網,可以是 ping 命令檢測一下,
yum install tree
# ping 百度
ping www.baidu.com
出現以下內容則表示網路暢通,
3. 網路配置
3.1 網路概述
1、Linux下查看IP地址
ifconfig
2、Windows下查看IP地址,
NAT網路連接模式下,Linux和Windows母機的通信是通過VMNet 8 完成的,
ipconfig
(1)NAT網路配置原理圖
注意:如果你的Windows母機和Linux虛擬機是在同一網段下,但是出現互相 ping 不通的情況,可以嘗試將Windows的防火墻關閉,
Linux的IP地址的網段是可以指定的,
(2)查看虛擬網路編輯器
(3)測驗網路連通性
# 測驗當前主機是否可用連通目的主機
ping 目的主機的IP
# 測驗當前主機是否可以連通互聯網
ping www.baidu.com
3.2 網路配置
(1)第一種配置方法—自動獲取
- 優點:可以自動規避IP沖突,
- 缺點:Linux每次重啟后自動獲取的IP地址可能會不同,這樣就無法做服務器使用,
1、打開Linux的網路設定
2、修改網路設定
3、修改網路連接方式為自動獲取
(2)第二種配置方法—指定IP
ifcfg-ens33 檔案引數說明
# 網路型別,通常是 Ethernet,一般還有bond,bridge
TYPE="Ethernet"
# 是否允許非root用戶控制該設備
USERCTL=no
PROXY_METHOD="none"
BROWSER_ONLY="no"
# IP的配置方法(none/static/bootp/dhcp)
# none 引導時不使用協議
# static 靜態IP
# bootp BOOTP協議
# dhcp 動態分配
BOOTPROTO="dhcp"
# 是否設定默認路由
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
# IPV6 是否有效,(yes/no)
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
# 這個引數對應的值是網卡名,是給用戶看的
NAME="ens33"
# 隨機id
UUID="7415a862-a57f-44c7-8946-6a5ee37621ee"
# 介面名(設備、網卡)
DEVICE="ens33"
# 系統啟動的時候網路介面是否有效(yes/no)
ONBOOT="yes"
# IP地址(static時使用)
IPADDR=192.168.100.140
#網關 (static時使用)
GATEWAY=192.168.100.2
#域名決議器 (static時使用)
DNS1=192.168.100.2
ens33 就類似于網卡
第一步:修改Linux的IP地址,
- 通過編輯修改
/etc/sysconfig/network-scripts/ifcfg-ens33該檔案實作
# 修改 ifcfg-ens33 檔案
vim /etc/sysconfig/network-scripts/ifcfg-ens33
-
在
ifcfg-ens33檔案中做如下修改 -
將
BOOTPROTO="dhcp"由 dhcp 改為 static , -
再在檔案中添加一下內容:
# IP地址,這里指定為 192.168.200.130
IPADDR=192.168.200.130
#網關,這里指定為 192.168.200.2
GATEWAY=192.168.200.2
#域名決議器,這里指定為 192.168.200.2
DNS1=192.168.200.2
第二步:修改 VMNet 8 的網路IP
- 打開 VMware的 虛擬網路編輯器進行修改,
- 將子網IP 修改為和剛才指定的Linux的IP地址在同一網段下,
- 修改VMNet 8 的網關,
- 將網關也修改為剛才
ifcfg-ens33檔案中的網關,
- 將網關也修改為剛才
- 重啟網路服務 或 重啟Linux系統,使配置生效,
# 重啟網路服務
service network restart
重啟之后,查看Linux的IP地址,
- 可以驗證我們剛才的配置生效了
再查看 VMNet 8 的IP地址,配置同樣生效,
使用 ping 命令檢測 Linux和 Windows以及互聯網的連通性,
- Windows是可以 ping 通Linux虛擬機的
- Linux也是可以 ping 通Windows的
- Linux也是可以 ping 通互聯網的,這里以百度為例,
3.3 host 映射
(1)設定主機名
疑問一:IP地址就可以標識一臺主機,為什么要設定主機名呢?
- 原因很簡單:因為懶,不想記那么長的IP地址,因此可以給主機設定主機名,方便記憶,
# 查看主機名
hostname
疑問二:如何設定或修改主機名呢?
- 通過修改檔案
/etc/hostname,在該檔案中指定,
# 先查看一下 /etc/hostname 檔案,也是顯示當前主機名
cat /etc/hostname
# 編輯修改 /etc/hostname 檔案
vim /etc/hostname
上圖中,可以看到主機名已修改完成,但是還沒有生效,需要重啟系統才能生效,
reboot
(2)設定 host 映射
疑問三:設定完主機名之后,就能使用主機名來標識一臺主機嗎?我們可以使用 ping 命令測驗一下
可以看到,現在是不能 ping 通的,原因很簡單,現在還沒有做 host 映射,Windows母機還不知道 Yang_CentOS76 代表的是哪個主機,因為它只是一個名字,這個名字是可以重復的,
因此我們需要明確的告訴系統,這個名字是指向哪個主機的,
- 在 Windows 中指定host映射:指定我們剛才設定的Linux主機名
- 在檔案:C:\Windows\System32\drivers\etc\hosts 中指定,
- 指定之后,如果執行
ping Yang_CentOS76,系統就會先在host檔案中找 Yang_CentOS76 對應的是哪個主機,
設定完成之后,在 Windows中就可以ping 通 Linux主機了
- 在 Linux中 指定Windows主機名:
- 在
/etc/hosts檔案中指定, - 這里指定的Windows主機名可以任意,它只是和Windows的VMNet 8 的IP地址系結,
- 比如:我這里指定 Windows的主機名為:Yang,以后我們在Linux中
ping Yang就相當于ping 192.168.100.1
- 比如:我這里指定 Windows的主機名為:Yang,以后我們在Linux中
- 在
(3)主機名決議
- Hosts:Linux中的一個文本檔案,用來記錄 IP 和 Hostname(主機名)的映射關系,
- DNS:就是Domain Name System的縮寫,翻譯過來就是域名系統,是互聯網上作為域名和 IP 地址相互映射的一個分布式資料庫,
例:用戶在瀏覽器訪問百度(www.baidu.com),就會經歷以下程序:
- 瀏覽器先檢查瀏覽器快取中有沒有該域名對應的 IP 地址,
- 如果有,就直接使用 IP 完成決議,
- 如果沒有,就轉到第二步,
- 檢查DNS 決議器快取,
- 如果有直接回傳 IP 完成決議,
- 如果沒有,就轉第三步,
- 檢查系統中 hosts 檔案中有沒有配置對應的域名 IP 映射,
- 如果有,則回傳IP,完成決議,
- 如果沒有,則執行第四步,
- 到域名服務DNS 進行域名決議,
- 如果有,就回傳該IP,完成決議,
- 如果沒有,則回傳域名不存在,
圖解如下:
瀏覽器快取和DNS決議器快取,,可以理解為本地決議器快取,
一般來說,當電腦第一次成功訪問某一網站后,在一定時間內,瀏覽器或作業系統會快取他的 IP 地址(DNS 決議記 錄)
可以在 cmd 視窗中使用命令查詢:
# 查看DNS域名決議快取
ipconfig /displaydns
# 清除電腦的域名快取
ipconfig /flushdns
(4)域名劫持
如果非法修改了Hosts檔案,就形成了域名劫持,
如下:
# 在 hosts 檔案中加一行
192.168.100.140 www.baidu.com
我們 ping 的明明是 www.baidu.com,但實際上是ping 向我們剛才配置的IP,
試想一下,如果黑客入侵我們電腦,修改了hosts檔案,將我們訪問的網站換成了他的釣魚網站……
不過不用擔心,黑客入侵也沒那么容易
4. 行程管理
4.1 行程概述
(1)行程與程式:
- 行程是程式的一次運行程序,是系統資源分配和系統調度的基本單位,
- 行程是動態的,程式是靜態的,(行程是暫時的,程式是永久的),
- 將程式裝入記憶體執行就形成了行程,
- 行程由三部分組成:
- 程式段:因為一個程式可能會很大,不可能全部裝入記憶體,
- 資料:程式運行所需要的資料,
- PCB(行程控制塊):包含行程執行所需要的控制資訊,
(2)Linux行程
-
在Linux中,每個執行的程式都稱為一個行程,每一個行程都分配一個 ID號(pid,行程號),
-
每個行程都可能以兩種方式存在的,
-
前臺:所謂前臺行程就是用戶目前的螢屏上可以進行操作的,
-
后臺:后臺行程則是實際在運行,但螢屏上無法看到的行程,通常使用后臺方式執行,
-
一般系統的服務都是以后臺行程的方式存在,而且都會常駐在系統中,直到關機才才結束,
-
Windows中的行程:
- Linux中的行程:
4.2 查看Linux行程
(1)ps相關指令
ps 指令是用來查看目前系統中,有哪些行程,以及他們的執行情況,
# 顯示當前終端的所有行程資訊
ps -a
# 以用戶的格式顯示行程資訊
ps -u
# 顯示后臺行程
ps -x
# 一般情況下,都進行組合使用,如下:
ps -axu
說明:
USER:行程執行用戶PID:行程號%CPU:當前行程占用CPU的百分比%MEM:當前行程占用記憶體的百分比VSZ:行程占用的虛擬記憶體大小(單位:KB)RSS:行程占用的物理記憶體大小(單位:KB)TTY:終端資訊STAT:當前行程運行情況- S:睡眠狀態,表示正在休眠
- s:表示該行程是會話的先導行程
- N:表示行程擁有比普通優先級更低的優先級
- R:表示正在運行
- Z:表示僵死行程,行程死掉了,但是它占用的記憶體沒有被釋放,
- T:表示被跟蹤或停止的行程
START:當前行程開始執行的時間TIME:當前行程占用CPU的時間COMMAND:啟動行程所用的命令和引數,如果過長會被截斷顯示
# 以全格式顯示當前所有的行程 -e 顯示所有行程,-f 全格式
ps -ef
Linux中,一個行程可以生成或創建別的行程,因此就有父行程的概念,
# 查詢 sshd 行程的詳細資訊
ps -ef | grep sshd
說明:
- PPID:父行程ID,為0表示它沒有父行程,它本身就是一個根行程,
- C:CPU用于計算執行優先級的因子,數值越大,表明行程是 CPU密集型運算,執行優先級會降低;數值越小,表明行程是 I/O密集型運算,執行優先級會提高,
- CMD:等同于上面的COMMAND,
(2)查看行程樹
# 以樹狀圖顯示行程關系
pstree [選項]
常用選項:
-p:顯示進行的PID,-u:顯示行程所屬用戶,
pstree -p
4.3 終止行程
若是某個行程執行一半需要停止時,或是已消了很大的系統資源時,此時可以考慮停止該行程,使用 kill 命令來完成此項任務,
# 通過行程號終止行程
kill [選項] 行程號
# 通過行程名終止行程,同時終止該行程的子行程,也支持通配符的使用,
killall 行程名稱
常用選項:
-9:強制終止一個行程,
sshd服務就是支持遠程登錄的一個服務,
# 案例一:踢掉某個非法用戶
# 先使用 ps 指令查詢到該用戶登錄使用的 sshd 的行程號
ps -ef | grep sshd
# 再使用 kill 指令終止該行程
kill 行程號
# 案例二:終止遠程登錄服務 sshd, 在適當時候再次重啟 sshd 服務
# 先使用 ps 指令查詢 sshd 的行程號
ps -ef | grep sshd
# 再使用 kill 指令終止該行程
kill 行程號
# 重啟 sshd 服務
/bin/systemctl restart sshd.service
# 案例三:終止多個 gedit 行程,該行程是Linux下的文本編輯器的行程
killall gedit
# 強制終止一個行程,我們在虛擬機中打開兩個終端,然后使用一個終端去關閉另外一個終端的行程,終端的行程名是 bash
kill -9 行程號
4.4 服務管理
(1)服務的概念
服務(service) 本質就是行程,它一般是運行在后臺的,通常都會監聽某個埠,等待其它程式的請求,比如:mysql監聽3306埠,sshd監聽22埠,因此我們又將這些行程稱為守護行程,
監聽埠,就可以理解為打開一個耳朵,時刻探測有沒有人發起請求,
(2)service管理指令
# 服務的 啟動、停止、重啟、重新加載、查看狀態
service 服務名 [start | stop | restart | reload | status]
注意:在 CentOS7.0 后 很多服務不再使用 service ,而是systemctl ,
查看哪些服務還可以被 service 指令管理,使用如下命令進行查看:
# 在 /etc/init.d/ 目錄下
ls -l /etc/init.d/
可以看到有如下幾條服務可以使用 service 指令管理:
比如,查看 network 的狀態:
service network status
# 重啟 network 服務
service network restart
# 停止 network 服務
service network stop
# 啟動 network 服務
service network start
(3)查看服務名
方式一:使用 setup 指令,查看所有服務
setup
前面顯示 * 星號的,表示在Linux系統啟動的時候,會自動啟動,
停止服務:
- 將游標停在某個服務的上,按下空格鍵,
- 再按下確定鍵,就停止了該服務,
方式二:查看 service 管理的指令
ls -l /etc/init.d/
開機流程:
4.5 chkconfig 指令
(1)復習 Linux中的運行級別:
由前面的學習可知,Linux中有7個運行級別:
- 運行級別 0:系統停機狀態,系統默認運行級別不能設為 0,否則不能正常啟動 ,
- 運行級別 1:單用戶作業狀態,root 權限,用于系統維護,禁止遠程登陸,
- 運行級別 2:多用戶狀態(沒有NFS),不支持網路 ,
- 運行級別 3:完全的多用戶狀態(有NFS),無界面,登陸后進入控制臺命令列模式 ,
- 運行級別 4:系統未使用,保留 ,
- 運行級別 5:X11 控制臺,登陸后進入圖形GUI 模式 ,
- 運行級別 6:系統正常關閉并重啟,默認運行級別不能設為 6,否則不能正常啟動,
# 查看當前系統運行級別
systemctl get-default
# 這是默認運行級別
# multi-user.target 表示運行級別 3
# graphical.target 表示運行級別 5
systemctl set-dafault xxx.target
(2)chkconfig 指令
作用:通過 chkconfig 命令可以給服務的各個運行級別設定 自啟動/關閉,即:指定某個服務在哪個運行級別是自啟動的,在哪個級別是關閉的,
chkconfig 指令和 service 指令一樣,可以在 /etc/init.d/ 目錄下查看它所能管理的指令,因為在 CentOS 7 之后,更多的指令是通過 systemctl 指令管理的,
# 查看 chkconfig 指令管理的服務在7個級別中的狀態
chkconifg --list
# 指定某個服務在某個運行級別是否自啟動
chkconfig --level 運行級別對應的數字 服務名 on/off
# 案例: 把 network在 3 運行級別,關閉自啟動,重啟系統生效,
chkconfig --level 3 network off
# network在 3 運行級別,自啟動
chkconfig --level 3 network on
4.6 systemctl 指令
(1)systemctl 指令
# 基本語法,設定服務的 啟動、停止、重啟、重新加載、查看狀態
systemctl [start | stop | restart | status] 服務名
systemctl 指令管理的服務在 /usr/lib/systemd/system 查看
ll /usr/lib/systemd/system
# 查看當前各個服務的啟動狀態
systemctl list-unit-files [ | grep 服務名]
說明:
- enable:開機自啟動,
- disable:開機不自啟,
- static:靜態,
# 設定服務開機啟動,表示同時設定 3 和 5 兩個級別,
systemctl enable 服務名
# 關閉服務開機啟動
systemctl disable 服務名
# 查詢某個服務是否是自啟動的
systemctl is-enabled 服務名
# 案例:查看當前防火墻的狀況,
# 先得查詢到Linux中防火墻服務的名稱,
# 使用如下指令,查詢知,防火墻的服務為:firewalld.service
ll /usr/lib/systemd/system | grep fire
# 查看防火墻狀態
systemctl status firewalld
# 關閉防火墻
systemctl stop firewalld
# 重啟防火墻
systemctl restart firewalld
注意:
- 關倍訓啟動防火墻之后,它是立即生效的,
- 這種方式只是臨時生效,當重啟系統后,還是回歸以前對服務的設定,
- 如果希望設定某個服務自啟動或關閉永久生效,要使用以下指令關倍訓開啟服務,
systemctl [enable|disable] 服務名
(2)防火墻原理:
請求先到防火墻,如果它將要訪問的埠是服務器允許通過的,則該請求可以訪問到指定服務,如果它請求的服務的埠是不允許通過的,則該請求不能訪問到指定服務,
因此防火墻可以防止我們的系統被惡意的訪問,
驗證防火墻的作用:
# 查看網路狀態
netstat -anp
我們可以在 Windows的cmd視窗,嘗試訪問上圖中的一個處于監聽狀態的埠:
(如果 telnet 指令無法使用,請往下看,后面有解決方案)
# telnet 指令語法
telnet IP地址 埠號
# 例 訪問 192.168.100.140 的 111 埠
telnet 192.168.100.140 111
顯示連接失敗,表示Linux的防火墻是打開的,并且該埠不允許通過,
我們現在關閉Linux的防火墻,再次連接該埠,發現可以連接成功,
# 關閉防火墻
systemctl stop firewalld
至此,我們就理解了防火墻的基本作用,就是可以防止程式惡意訪問我們的系統,
因此在真正的生產環境,往往需要將防火墻打開,
(3)firewall 指令
因此在生產環境下,需要防火墻打開,在這種情況下,如果我們想要訪問Linux的某個埠,肯定是不能直接訪問的,而我們又不能直接關閉防火墻,
因此可以使用 firewall 指令,
# 打開埠(該命令需要 root 用戶才能執行)
firewall-cmd --permanent --add-port=埠號和協議
# 關閉埠
firewall-cmd --permanent --remove-port=埠號和協議
# 不論是打開埠還是關閉埠,都需要重新載入一下才能生效,
firewall-cmd --reload
# 查詢埠是否開放
firewall-cmd --query-port=埠/協議
# 查看埠對應的協議
netstat -anp | more
# 案例:打開111埠
firewall-cmd --permanent --add-port=111/tcp
# 重新載入,使命令生效,
firewall-cmd --reload
# 查詢埠狀態,顯示為 yes
firewall-cmd --query-port=111/tcp
埠打開之后,再次使用Windows的cmd視窗連接該埠,是可以成功的,
# 關閉111埠
firewall-cmd --permanent --remove-port=111/tcp
# 重新載入,使命令生效,
firewall-cmd --reload
# 查詢埠狀態,顯示為 no
firewall-cmd --query-port=111/tcp
telnet 指令無法使用的解決方案:
如果在使用 telnet 指令的時候,出現以下錯誤,是因為Windows中的Telnet客戶端服務沒有打開,
使用以下方法打開即可:
1、打開 “應用和功能”
2、打開 ”程式和功能“,
在最下面,
3、啟用或關閉Windows功能,
4、打開服務
5、重啟電腦,即可使用 telnet 指令,
4.7 動態監控行程
top 與 ps 命令很相似,它們都用來顯示正在執行的行程,
Top 與 ps 指令又有不同之處,就是 top 指令在可以動態更新正在運行的的行程,
# 語法
top [選項]
| 選項 | 含義 |
|---|---|
| -d | 指定top指令的重繪間隔,默認是 3 秒 |
| -i | 不顯示閑置或僵死行程 |
| -p | 通過指定監控行程id來僅監控某個行程的狀態 |
說明:
-
load average:負載值,三個值加起來除以3,如果大于0.7,則表示系統負載教大,
-
Tasks:任務數
- total:任務總數
- running:正在運行的任務,
- sleeping:正在休眠的任務,
- zombie:僵死行程,如果這個值很大,就要清除一下,因為它會占用記憶體,
-
%CPU:CPU的利用率,
- us:用戶占用CPU的百分比,
- sy:系統占用CPU的百分比,
- id:可用CPU,
-
Men:物理記憶體
- total:總數,
- free:空閑記憶體大小,
- used:已用的記憶體大小,
- buff/cache:快取占用的記憶體大小,
-
Swap:交換磁區
- total:總數,
- free:空閑的交換磁區大小,
- used:已用大小,
- avail Men:可獲取的大小,
動態監控時的互動操作:
| 操作 | 功能 |
|---|---|
| P | 以CPU使用率排序,默認,降序 |
| M | 以記憶體使用率排序,降序 |
| N | 以PID排序,降序 |
| q | 退出程式, |
# 不顯示閑置行程或僵死行程
top -i
# 監控指定行程
top -p 行程的PID
# 監控指定用戶
top u 用戶名
# 案例:監控 lu 用戶,并踢他下線
top u lu
在此界面,按下 k,然后輸入 lu 用戶的 bash 的行程PID,
輸入 9,強制殺死行程,
用戶 lu 下線,
4.8 監控網路狀態
服務連接的基本原理:
# 查看系統網路情況
netstat [選項]
| 選項 | 含義 |
|---|---|
| -an | 按一定順序排序輸出 |
| -p | 顯示哪個行程在呼叫 |
顯示資訊如圖:
說明:
- Proto:連接使用的協議,
- Recv-Q:接收到的資料,
- Send-Q:發送的資料,
- Local Address:Linux虛擬機的本地地址,
- Foreign Address:相對Linux虛擬機的外部地址,
- State:連接狀態
- Listen:監聽狀態,時刻準備連接,
- ESTABLISHED:連接成功,
- TIME WITE:超時等待,一個連接并不會立即斷開,它會等待一段時間后再斷開,
- PID:該連接發起的行程,
5. RPM 與 YUM
5.1 軟體包管理概述
CentOS中主要有兩種軟體包管理方式,分別是YUM和RPM,
- YUM使用簡單,但需要聯網,YUM會去YUM包源獲取需要的軟體包,
- RPM不需要聯網使用,但需要較高的操作水平和繁瑣的依賴處理,
軟體的安裝和卸載應該是一件稀松平常的事,例如我們平常使用的Windows一樣,想要安裝一個軟體,直接去官網下載安裝包,然后雙擊開始安裝即可,但是在Linux中,安裝一個軟體卻不是這么簡單,
因為Linux有一個理念就是一個程式只做好一件小事,一個大的程式就需要幾個小的程式組合起來完成,這就導致了各個小的程式之間有復雜的依賴關系,比如:要完成某件任務,就需要安裝程式A,而程式A的安裝需要程式B的支持,程式B的安裝又需要程式C的支持……,這便是依賴,
為了很好的組織管理這種復雜的依賴,就有了RPM軟體包管理,Redhat Package Manager,類似windows 的 setup.exe,RPM是以一種資料庫記錄的方式來將需要的軟體及其依賴關系安裝到Linux主機的一套軟體管理程式,也就是說,Linux中有一個關于RPM的資料庫,它記錄了安裝軟體的包與包之間的依賴關系,
RPM包時預先在Linux主機上編譯并打包好的檔案,安裝起來非常便捷,
Linux中軟體包的分類:
- 原始碼包:
- 腳本安裝包:是基于原始碼包的再開發,Windows中是setup.exe,Linux中是install.sh,只需執行該程式即可通過點擊下一步完成安裝,
- 優點:
- 開源,可修改定制源代碼,
- 自由,可以
- 原始碼包方式安裝的軟體要比RPM包安裝的軟體穩定高效,據統計,一般高5%,
- 卸載方便,可以直接洗掉對應的安裝目錄,
- 缺點:
- 安裝步驟過多,
- 編譯時間較長,比二進制安裝時間長好多,
- 容易出錯,
- 二進制包:如:RPM包
- 定義:RPM是經過編譯之后的檔案,例如:Windows中編譯完之后是 .exe 可執行檔案,Linux中編譯完之后是 .rpm 檔案,
- CentOS 中是RPM包,
- Ubuntu 中是DEB
- 優點:
- 包管理系統簡單,只通過幾個命令就可以實作包的安裝,升級,查詢和卸載,
- 安裝速度比原始碼包安裝快得多
- 缺點:
- 經過編譯,原始碼不可見,
- 功能選擇不如原始碼包靈活,
- 有依賴性:
- 依賴性是指是要想安裝A包就得先安裝B包,要想安裝B包又得先安裝C包,所以只能以CBA的順序安裝RPM包,洗掉的時候得按ABC順序洗掉安裝包,基本上所有的RPM包全有依賴性,
- 定義:RPM是經過編譯之后的檔案,例如:Windows中編譯完之后是 .exe 可執行檔案,Linux中編譯完之后是 .rpm 檔案,
5.2 RPM包管理–RPM命令
(1)RPM包命名規則
例:httpd-2.2.15.el6.centos.1.i686.rpm
說明:
- httpd 軟體包包名
- 2.2.15 軟體版本
- 15 軟體發布的次數
- el6.centos 適合的Linux平臺
- i686 適合的硬體平臺
- noarch:表示任何硬體平臺都可以安裝,
- i686、i386:表示 32 位系統,
- x86_64:表示 64 為系統,
- .rpm:rpm包擴展名
注意:區分包名和包全名:
- 包名:類似上面的 httpd,如果操作的是已經安裝的軟體包時,使用包名即可,系統會去搜索 /var/lib/rpm/ 中的資料庫,
- 包全名:包名+版本+發布次數+適用平臺+擴展名,如果操作的是沒有安裝的軟體包時,要使用包全名,而且要注意路徑(所有的RPM包都在Linux的光碟檔案的package目錄下),
/run/media/root/CentOS 7 x86_64/Packages在該目錄下,
(2)RPM包依賴性
- 環形依賴:
- 樹形依賴:
- 模塊依賴
說明:
- 出現環形依賴時的解決方案,使用一條命令將a,b,c,d三個同時安裝即可,
- 如果安裝時遇到問題,出現依賴性錯誤,被依賴檔案以.so.[數字] 結尾的為庫依賴,需要直接安裝這個軟體,錯誤會自動解決,查詢被依賴檔案在哪個包中:在該網站查詢網站 www.rpmfind.net.
yum主要就是為了解決RPM的依賴性,
(3)RPM包的安裝、升級、卸載
1、安裝
如果沒有在RPM包所在目錄,就需要使用絕對路徑,
# RPM安裝
rpm [選項] 包全名
# 一般組合使用
rpm -ivh 包全名
| 選項 | 含義 |
|---|---|
| -i | install,安裝 |
| -v | verbose,顯示詳細資訊, |
| -h | hash,顯示進度 |
| –nodeps | 不檢測依賴性(不使用) |
2、升級
# RPM升級
rpm [選項] 包全名
# 一般組合使用
rpm -Uvh 包全名
| 選項 | 含義 |
|---|---|
| -U | update,升級更新 |
| -v | verbose,顯示詳細資訊, |
| -h | hash,顯示進度 |
| –nodeps | 不檢測依賴性(不使用) |
3、卸載
卸載不需要路徑,
# rpm 卸載
rpm -e 包名
# 卸載firefox
rpm -e firefox
如果其它軟體包依賴于您要卸載的軟體包,卸載時則會產生錯誤資訊,
removing these packages would break dependencies:foo is needed by bar-1.0-1
意思是說:要洗掉的 foo 會被 bar-1.0-1 使用到,
(4)RPM查詢
#查詢指定包是否安裝
rpm -q 包名
# 查詢所有已安裝的包
rpm -qa
# 查詢指定包的詳細資訊,i information,包資訊是在組件這個包時就寫好的,
rpm -qi 包名
# 查詢未安裝的軟體包的資訊,p package
rpm -qip 包全名
# 查詢軟體包中檔案安裝位置
rpm -ql 包名
# 查詢系統檔案屬于哪個RPM包
rpm -qf 系統檔案名
# 查詢軟體包的依賴性
rpm -qR 包名
# 查詢是否安裝firefox
rpm -q firefox
rpm -qa | grep firefox
# 查詢安裝的 Python 的詳細資訊
rpm -qi python
# 查詢 Python 軟體包的檔案具體的安裝路徑
rpm -ql python
(5)校驗
校驗我們安裝的軟體有沒有被修改過,
# RPM包校驗
rpm -V 已安裝的包名
如果沒有任何修改,則不顯示任何內容,
如果做了修改,則會顯示如下內容:
S.5……T. c /etc/httpd/conf/httpd.conf
說明:
顯示內容中的8個資訊的具體內容: 如果某項沒有變化,就用點表示,
- S:檔案的大小是否改變,
- M:檔案的型別或檔案的權限(rwx)是否被改變
- 5:檔案MD5校驗和是否改變
- D:設備的中,從代碼是否改變
- L:檔案路徑是否改變
- U:檔案的屬主(所有者)是否改變
- G:檔案的屬組是否改變
- T:檔案的修改時間是否改變
檔案型別:
- c:組態檔,config file
- d:普通檔案,documentation
- g:“鬼”檔案,ghost file,很少見,就是該檔案不應該被這個RPM包包含,
- l:授權檔案,license file
- r:描述檔案,read me
(6)檔案提取
當我們誤刪了某個系統檔案或軟體的組態檔時,就可以使用該指令,提取對應RPM軟體包中的對應檔案,而不需將整個系統或軟體重裝,
即:檔案提取最大的作用就是修復,
# rpm2cpio 意思是將rpm格式檔案轉為cpio格式檔案,
# 從cpio中提取指定的檔案
rpm2cpio 包全名 | cpio -idv .檔案絕對路徑
-
rpm2cpio:將 rpm 包轉換為 cpio 格式的命令,2 等于 to,
-
cpio:是一個標準工具,它用于創建軟體檔案檔案和從檔案檔案中提取檔案,
# < 輸入重定向,從檔案或指定設備中輸入,而非標準輸入
cpio [選項] < [檔案|設備]
| 選項 | 含義 |
|---|---|
| -i | copy-in 模式,從檔案中提取資料 |
| -d | 還原時自動新建目錄 |
| -v | 顯示還原程序 |
# 案例:我們誤洗掉了 ls 指令
# 查詢 ls 指令屬于哪個軟體包
rpm -qf /bin/ls
# 制造洗掉了 ls 指令的假象,這里只是將它移動到別的目錄下,
mv /bin/ls /tmp/
# 提取 RPM 軟體包中的ls命令到當前目錄下,執行完指令后,當前目錄下就會多一個 bin 目錄,bin目錄下有ls目錄
rpm2cpio /run/media/root/CentOS\ 7\ x86_64/Packages/coreutils-8.22-23.el7.x86_64 | cpio -idv ./bin/ls
# 將 當前目錄下的ls到根目錄的 /bin/ls
cp /home/bin/ls /bin/
5.3 RPM包管理–YUM
(1)YUM概述
Yum 是一個 Shell 前端軟體包管理器,基于RPM包管理,能夠從指定的服務器自動 下載RPM包并且安裝,可以自動處理依賴性關系,并且一次安裝所有依賴的軟體包,
RPM命令和YUM在線管理都是管理RPM包,區別在于RPM命令是手動安裝,YUM是自動安裝,
YUM并不是非得上網才能使用,可以配置本地光碟作為YUM的源
(2)網路yum源
YUM 源保存在 /etc/yum.repos.d/ 目錄下,后綴為 .repo 的都是合法的YUM源,默認是 Base 這個源生效,CentOS-Media.repo 是本地光碟YUM源,
打開看一下配置好的yum源,
vim /etc/yum.repos.d/CentOS-Base.repo
如上圖,一共默認是由四個軟體池,默認是第一個軟體池生效,
說明:
- [base] 容器名稱,一定要放在 [] 中 ,
- name 容器說明,可以自己隨便寫 ,
- mirrorlist:是地址鏡像,
- baseurl:yum源服務器的地址,默認是CentOS官方的yum源服務器,
- enabled:值為1,表示容器生效,值為0,表示容器不生效,不寫enabled也默認是1,
- gpgcheck:我們的RPM包是否進行數字證書驗證,如果是1是指RPM的數字證書生效,如果是0則不生效,
- gpgkey:數字證書的公鑰檔案保存位置,不用修改
(3)YUM命令
# 查詢服務器上所有的軟體
yum list
# 查詢是否有需要安裝的軟體
yum list | grep 軟體
# 搜索服務器上所有和關鍵字相關的包
yum search 包名
# 安裝軟體
yum install 軟體包
# -y 自動回答yes
yum -y install 軟體包
# 升級軟體包(注意:如果不加包名,則全部升級,包括Linux內核)
yum -y update 包名
# 卸載軟體(如果不加包名,則全部卸載)
yum -y remove 包名
注意:一般不要輕易卸載軟體,因為它會同時卸載該軟體依賴的軟體包,而這些軟體包有可能被其他軟體依賴,如果一旦卸載,會導致其他軟體也不能使用,
(4)光碟YUM源搭建
當無法連接網路或網速較慢時,可以考慮搭建光碟YUM源來代替網路YUM源,缺點是軟體不一定是最新的,
Linux一般是有兩張光碟的,如果一個軟體沒有在當前光碟中,有較大可能是在另外一張光碟中,
搭建步驟:
- 第一步:掛載光碟,
- 第二步:修改YUM源組態檔,只讓光碟源組態檔生效,這里有三種方法,
- 第一種:在其他源組態檔的每個軟體池中加
enabled=0,使其失效, - 第二種:洗掉或移動其他組態檔,
- 第三種:改后綴,將其他組態檔的后綴改掉,不是reop即可,
- 第一種:在其他源組態檔的每個軟體池中加
- 第三步:編輯修改光碟源組態檔,
- 改光碟掛載點,
- enabled=1,使其生效,
# 掛載光碟
mount /dev/cdrom /mnt/cdrom
# 這里采用第三種方法
mv CentOS-Vault.repo CentOS-Vault.repo.A
mv CentOS-Base.repo CentOS-Base.repo.A
mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.A
# 修改光碟YUM源檔案
vim /etc/yum.repos.d/CentOS-Media.repo
掛載光碟:
1、第一步:在 /mnt/ 目錄下創建掛載點,
cd /mnt
mkdir cdrom
2、第二步:查看光碟完整路徑名,
ls -l /dev | grep cdrom
3、第三步:掛載
# 將 /dev/cdrom 掛載到 /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
4、查看光碟中的資料
cd /mnt/cdrom
ls -l
5、卸載光碟
不能在掛載點目錄下解除掛載,必須先切換到其他目錄,
# 卸載 /mnt/cdrom 掛載的目錄
umount /mnt/cdrom
5.4 原始碼包管理
(1)原始碼包和RPM包的區別
上面我們已經了解了原始碼包和RPM包的區別,這里說的主要是它們安裝位置的區別,
- RPM包是安裝在默認位置中,不建議更改,如下:
| 路徑 | 內容 |
|---|---|
| /etc/ | 組態檔安裝目錄 |
| /usr/bin/ | 可執行命令安裝目錄 |
| /usr/lib/ | 程式所使用的函式庫保存位置 |
| /usr/share/doc/ | 基本的軟體使用手冊保存位置 |
| /usr/share/man/ | 幫助檔案保存位置 |
| /var | 保存日志檔案等可變檔案 |
- 原始碼包安裝位置:
- 安裝在指定位置當中,一般是 /usr/local/軟體名/
安裝位置不同帶來的影響
-
RPM包安裝的服務可以使用系統服務管理命令(service、systemctl)來管理,network 的啟動方法是:
- 完整路徑加命令的格式:/etc/rc.d/init.d/network start
- 簡化:service network start
-
原始碼包安裝的服務則不能被服務管理命令管理,因為沒有安裝到默認路徑中,所以只能用絕對路徑進行服務的管理,如:
- /usr/local/apache/bin/apachectl start
(2)原始碼包安裝程序
第一步:安裝前的準備
- 安裝C語言編譯器,gcc
- 下載軟體對應的原始碼包, http://mirror.bit.edu.cn
第二步:安裝注意事項
- 源代碼,即原始碼包保存位置
/usr/local/src - 軟體安裝位置:
/usr/local/
第三步:原始碼包的具體安裝程序
- 下載原始碼包,
- 將原始碼包上傳到Linux中,
- 解壓原始碼包,
tar -zxvf httpd-2.4.46.tar.gz - 進入解壓之后的原始碼包目錄,繼續后續操作,
- INSTALL:該檔案是安裝說明,
- README:該檔案是使用說明,
- 執行
./configure命令,軟體配置與檢查,- 定義需要的功能選項,例如:指定安裝位置,
- 檢測系統環境是否符合安裝要求,
- 將定義好的功能選項和檢測系統環境的資訊都寫入 MakeFile 檔案,后續的安裝都基于此檔案,
- 執行命令,進行編譯,
make- 如果這一步驟報錯或上一步驟報錯,可以使用指令
make clean進行清空,
- 如果這一步驟報錯或上一步驟報錯,可以使用指令
- 執行命令,進行安裝,
make install
# 指定安裝路徑
./configure --prefix=/usr/local/軟體名
注意:如果執行完上一條命令之后,報錯如下:
configure: error: APR not found . Please read the documentation
- 這是因為缺少相關包,
解決:
- 下載相關包(三個),下載鏈接如下:
http://archive.apache.org/dist/apr/apr-1.4.5.tar.gz
http://archive.apache.org/dist/apr/apr-util-1.3.12.tar.gz
http://jaist.dl.sourceforge.net/project/pcre/pcre/8.10/pcre-8.10.zip
- 下載完成之后,上傳到Linux,進行安裝
- 解決apr not found問題
# 解壓
tar -zxf apr-1.4.5.tar.gz
# 進入目錄
cd apr-1.4.5
# 軟體配置與檢查
./configure --prefix=/usr/local/apr
# 安裝
make
make install
- 解決APR-util not found問題
tar -zxf apr-util-1.3.12.tar.gz
cd apr-util-1.3.12
./configure --prefix=/usr/local/apr-util -with-apr=/usr/local/apr/bin/apr-1-config
make
make install
- 解決pcre問題
unzip -o pcre-8.10.zip
cd pcre-8.10
./configure --prefix=/usr/local/pcre
make
make install
至此,Apache可以正常安裝
./configure --prefix=/usr/local/apache2 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --with-pcre=/usr/local/pcre
make
make install
安裝完之后,可以使用命令啟動 Apache 服務,然后在瀏覽器訪問虛擬機地址即可訪問Apache,
如果訪問不了,就請查看Linux防火墻狀態,關閉防火墻或開放80埠之后,就可以訪問,
# 使用絕對路徑的方法啟動 Apache
/usr/local/apache2/bin/apachectl start
訪問成功之后顯示:
# 查看防火墻狀態
systemctl status firewalld
# 查看80埠狀態
firewall-cmd --query-port=80/tcp
# 開放80埠
firewall-cmd --permanent --add-port=80/tcp
# 重新載入防火墻
firewall-cmd --reload
(3)原始碼包的卸載
-
不需要卸載命令,直接洗掉安裝目錄即可,
-
不會遺留任何垃圾檔案,
rm -rf /usr/local/apache2
【系列文章】
1. Git&GitHub(基礎)
2. Git&GitHub(進階)
3. 詳解Linux(基礎篇)
4. java多執行緒
5. JavaScript 總結
6. SpringMVC(一)
7. SpringMVC(二)
……
關注博主🤞🤞
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/260343.html
標籤:其他
上一篇:Jenkins如何部署
