服務(wù)是一些特定的進(jìn)程,自有服務(wù)就是系統(tǒng)開機(jī)后就自動運(yùn)行的一些進(jìn)程,一旦客戶發(fā)出請求,這些進(jìn)程就自動為他們提供服務(wù),windows系統(tǒng)中,把這些自動運(yùn)行的進(jìn)程,稱為"服務(wù)"
舉例:當(dāng)我們使用SSH客戶端軟件連接linux的時候,我們的服務(wù)器為什么會對連接做出響應(yīng)?是因?yàn)镾SH服務(wù)開機(jī)就自動運(yùn)行了。
所謂自有服務(wù),簡單來說,可以理解為Linux系統(tǒng)開機(jī)自動運(yùn)行的服務(wù)(程序)。
一、systemctl管理系統(tǒng)服務(wù)
1、systemctl概述
CentOS6版本:
service命令(管理服務(wù)開啟、停止以及重啟)+ chkconfig(定義開機(jī)啟動項(xiàng))
# service network start|stop|restart
CentOS7版本:
systemctl命令 = system系統(tǒng) + control控制(服務(wù)管理+開啟啟動項(xiàng)管理)
# systemctl start|stop|restart network
2、顯示系統(tǒng)服務(wù)
基本語法:
# systemctl [選項(xiàng)]
選項(xiàng)說明:
list-units --type service --all:列出所有服務(wù)(包含啟動的和沒啟動的)
list-units --type service:列出所有啟動的服務(wù)
案例:列出Linux系統(tǒng)中所有的服務(wù)(包含啟動的和沒啟動的)
# systemctl list-units --type service --all
案例:只列出已經(jīng)啟動的Linux系統(tǒng)服務(wù)
# systemctl list-units --type service
案例:把systemctl顯示系統(tǒng)服務(wù)與管道命令相結(jié)合,篩選我們想要的服務(wù)信息
# systemctl list-units --type service | grep sshd
3、Linux系統(tǒng)服務(wù)管理
☆ status查看狀態(tài)
查看系統(tǒng)服務(wù)的狀態(tài)
# systemctl status 系統(tǒng)服務(wù)的名稱
案例:查詢系統(tǒng)中網(wǎng)絡(luò)服務(wù)的狀態(tài)信息
# systemctl status network
案例:查詢系統(tǒng)中sshd服務(wù)的狀態(tài)信息
# systemctl status sshd
☆ stop停止服務(wù)
# systemctl stop 系統(tǒng)服務(wù)的名稱
案例:使用systemctl命令停止network網(wǎng)絡(luò)服務(wù)
# systemctl stop network
☆ start啟動服務(wù)
# systemctl start 系統(tǒng)服務(wù)的名稱
案例:使用systemctl命令啟動network網(wǎng)絡(luò)服務(wù)
# systemctl start network
☆ restart重啟服務(wù)
# systemctl restart 系統(tǒng)服務(wù)的名稱
等價于
# systemctl stop 系統(tǒng)服務(wù)的名稱
# systemctl start 系統(tǒng)服務(wù)的名稱
案例:使用systemctl命令重啟crond計劃任務(wù)的服務(wù)信息
# systemctl restart crond
☆ reload熱重載技術(shù)
# systemctl reload 系統(tǒng)服務(wù)名稱
reload:重新加載指定服務(wù)的配置文件(并非所有服務(wù)都支持reload,通常使用restart)
有些服務(wù),如Nginx,更改了配置文件,但是不能重啟Nginx服務(wù),只是想立即讓我們配置文件的更改生效,則就可以使用熱重載技術(shù)了。
案例:使用熱重載技術(shù)重新加載crond服務(wù)
# systemctl reload crond
4、服務(wù)持久化(開機(jī)自啟與開機(jī)不自啟)
所謂服務(wù)持久化,就是服務(wù)在開機(jī)的時候,是否自動啟動。
☆ 開機(jī)自啟
# systemctl enable 系統(tǒng)服務(wù)的名稱
案例:把network網(wǎng)絡(luò)服務(wù)設(shè)置為開機(jī)自啟動
# systemctl enable network
network.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig network on
?
以上提示代表network.service不是一個本地的系統(tǒng)服務(wù),所以想設(shè)置開機(jī)自啟需要使用/sbin/chkconfig進(jìn)行操作
# /sbin/chkconfig network on
案例:把crond計劃任務(wù)的服務(wù)信息添加到開機(jī)自啟動中
# systemctl enable crond
☆ 開機(jī)不自啟
# systemctl disable 系統(tǒng)服務(wù)的名稱
案例:把crond計劃任務(wù)的服務(wù)信息從開機(jī)自啟動中移除
# systemctl disable crond
二、擴(kuò)展:系統(tǒng)運(yùn)行級別
1、什么是運(yùn)行級別
運(yùn)行級別全稱(Running Level),代表Linux系統(tǒng)的不同運(yùn)行模式
2、CentOS6的運(yùn)行級別
# vim /etc/inittab
0 ? 系統(tǒng)關(guān)機(jī)狀態(tài) ? halt (Do NOT set initdefault to this)
1 ? 單用戶工作狀態(tài) ? Single user mode (類似Windows的安全模式,Linux忘記密碼)
2 ? 多用戶狀態(tài)(沒有NFS) Multiuser, without NFS (The same as 3, if you do not have networking)
3 ? 多用戶狀態(tài)(有NFS) ? Full multiuser mode (字符模式,服務(wù)基本都是此模式)
4 ? 系統(tǒng)未使用,留給用戶 ? unused
5 ? 圖形界面 ? ?X11 (圖形模式,個人計算機(jī)都是此模式)
6 ? 系統(tǒng)正常關(guān)閉并重新啟動 ? reboot (Do NOT set initdefault to this)
3、CentOS7的運(yùn)行級別
0 ? shutdown.target
1 ? emergency.target
2 ? rescure.target
3 ? multi-user.target ? 字符模式
4 ? 無
5 ? graphical.target ? 圖形模式
6 ? 無
4、init命令(臨時更改運(yùn)行模式)
# init 模式編號
案例:立即關(guān)機(jī)
# shutdown -h 0或now
或
# halt -p
或
# init 0
案例:立即重啟
# reboot
或
# init 6
案例:把計算機(jī)切換到字符模式(黑窗口)
# init 3
案例:把計算機(jī)切換到圖形模式(圖形界面)
# init 5
5、CentOS6中的chkconfig
問題:在CentOS7中,設(shè)置network開機(jī)啟動時,系統(tǒng)要求使用chkconfig命令
# chkconfig network on
設(shè)置完成后,怎么查看network有沒有隨開機(jī)自動啟動呢?
# chkconfig --list |grep network
network ? ? ? 0:off 1:off 2:on 3:on 4:on 5:on 6:off
?
0 關(guān)機(jī)模式
1 單用戶模式
2 多用戶模式(無NFS)
3 字符模式
4 自定義模式
5 圖形模式
6 重啟模式
三、NTP時間同步服務(wù)
1、什么是NTP服務(wù)
NTP是網(wǎng)絡(luò)時間協(xié)議(Network Time Protocol),它是用來同步網(wǎng)絡(luò)中各個計算機(jī)的時間的協(xié)議。
工作場景:
公司開發(fā)了一個電商網(wǎng)站,由于訪問量很大,網(wǎng)站后端由100臺服務(wù)器組成集群。50臺負(fù)責(zé)接收訂單,50臺負(fù)責(zé)安排發(fā)貨,接收訂單的服務(wù)器需要記錄用戶下訂單的具體時間,把數(shù)據(jù)傳給負(fù)責(zé)發(fā)貨的服務(wù)器,由于100臺服務(wù)器時間各不相同,記錄的時間經(jīng)常不一致,甚至?xí)霈F(xiàn)下單時間是明天,發(fā)貨時間是昨天的情況。
2、NTP時間同步的原理
問題:標(biāo)準(zhǔn)時間是哪里來的?
現(xiàn)在的標(biāo)準(zhǔn)時間是由原子鐘報時的國際標(biāo)準(zhǔn)時間UTC(Universal Time Coordinated,世界協(xié)調(diào)時),所以NTP獲得UTC的時間來源可以是原子鐘、天文臺、衛(wèi)星,也可以從Internet上獲取。
在NTP中,定義了時間按照服務(wù)器的等級傳播,Stratum層的總數(shù)限制在15以內(nèi)
工作中,==通常我們會直接使用各個組織提供的,現(xiàn)成的NTP服務(wù)器==
備注:千萬不要改Windows系統(tǒng)時間!
3、從哪里找合適的NTP服務(wù)器呢?
NTP授時網(wǎng)站:http://www.ntp.org.cn/pool.php
4、NTP時間同步操作
☆ 手工同步
基本語法:
# ntpdate NTP服務(wù)器的IP地址或域名
案例:查看Linux系統(tǒng)時間
# date
案例:從NTP服務(wù)器中同步系統(tǒng)時間
# ntpdate cn.ntp.org.cn
☆ 自動同步
基本語法:
① 啟動ntpd服務(wù)
# systemctl start ntpd
② 把ntpd服務(wù)追加到系統(tǒng)開機(jī)啟動項(xiàng)中
# systemctl enable ntpd
問題1:啟動ntpd服務(wù)后,是不是時間就自動同步了?
啟動后就自動同步了
問題2:需不需要讓ntpd服務(wù),開機(jī)自動運(yùn)行?
需要
ntpd服務(wù)配置文件位置 /etc/ntp.conf
四、Linux下的軟件包管理
1、什么是軟件包
這是什么?
由以上圖解可知,這個PCQQ2019.exe是Windows中的軟件安裝包。
所謂的Linux軟件包就是Linux下軟件的安裝程序
2、Linux下軟件的安裝方式
① RPM軟件包安裝 => 軟件名稱.rpm
② YUM包管理工具 => yum install 軟件名稱 -y
③ 源碼安裝 => 下載軟件的源代碼 => 編譯 => 安裝(最麻煩的,但是也最穩(wěn)定)
3、二進(jìn)制軟件包
二進(jìn)制包,也就是源碼包經(jīng)過成功編譯之后產(chǎn)生的包。
二進(jìn)制包是 Linux 下默認(rèn)的軟件安裝包,目前主要有以下 2 大主流的二進(jìn)制包管理系統(tǒng):
-
==RPM 包==管理系統(tǒng):功能強(qiáng)大,安裝、升級、査詢和卸載非常簡單方便,因此很多 Linux 發(fā)行版都默認(rèn)使用此機(jī)制作為軟件安裝的管理方式,例如 Fedora、==CentOS==、SuSE 等。
-
DPKG 包管理系統(tǒng):由 Debian Linux 所開發(fā)的包管理機(jī)制,通過 DPKG 包,Debian Linux 就可以進(jìn)行軟件包管理,主要應(yīng)用在 Debian 和 Ubuntu 中。
RPM是RedHat Package Manager(RedHat軟件包管理工具)的縮寫
作用:rpm 的作用類似于豌豆莢,華為應(yīng)用市場,App Store,主要作用是對linux 服務(wù)器上的軟件包進(jìn)行對應(yīng)管理操作,管理分為:查詢、卸載、安裝/更新。
4、獲取*.rpm軟件包
a. 去官網(wǎng)去下載(RPM Search);
b. 不介意老版本的話,可以從光盤(或者鏡像文件)中讀??;CentOS7.6*.iso
5、查詢系統(tǒng)中已安裝的rpm軟件
# rpm -qa |grep 要搜索的軟件名稱
選項(xiàng)說明:
-q :query,查詢操作
-a :all,代表所有
案例1:查詢計算機(jī)中已安裝的rpm軟件包
# rpm -qa
案例2:搜索計算機(jī)中已安裝的firefox軟件包
# rpm -qa |grep firefox
6、卸載CentOS系統(tǒng)中的rpm軟件包
# rpm -e 軟件名稱 [選項(xiàng)]
選項(xiàng)說明:
--nodeps :強(qiáng)制卸載
案例:把系統(tǒng)中的firefox瀏覽器進(jìn)行卸載操作
# rpm -qa |grep firefox
firefox-60.2.2-1.el7.centos.x86_64
?
# rpm -e firefox-60.2.2-1.el7.centos.x86_64
7、rpm軟件包的安裝
基本語法:
# rpm -ivh 軟件包的名稱.rpm
選項(xiàng)說明:
-i:install,安裝
-v:顯示進(jìn)度條
-h:表示以"#"形式顯示進(jìn)度條
8、rpm軟件包的獲?。ü獗P)
第一步:在VMware虛擬機(jī)中加載CentOS7.6的安裝光盤
第二步:使用 # lsblk(list block devices)或者df -T 查看塊狀設(shè)備的信息
# lsblk
[root@yunwei ~]# lsblk
NAME ? ? ? ? ? ?MAJ:MIN RM ?SIZE RO TYPE MOUNTPOINT
sda ? ? ? ? ? ? ? 8:0 ? ?0 ? 20G ?0 disk
├─sda1 ? ? ? ? ? ?8:1 ? ?0 ? ?1G ?0 part /boot
└─sda2 ? ? ? ? ? ?8:2 ? ?0 ? 19G ?0 part
?├─centos-root 253:0 ? ?0 ? 17G ?0 lvm ?/
?└─centos-swap 253:1 ? ?0 ? ?2G ?0 lvm ?[SWAP]
sr0 ? ? ? ? ? ? ?11:0 ? ?1 ?4.3G ?0 rom ?/run/media/itheima/CentOS 7 x86_64
由以上圖解可知,/dev/sr0代表光驅(qū)設(shè)備 => 掛載點(diǎn) => /run/media/itheima/CentOS 7 x86_64文件夾
或
# df -T
Linux操作系統(tǒng)的中所有存儲設(shè)備必須先掛載后使用
第三步:使用cd命令,切換到掛載目錄
# cd /run/media/itheima/CentOS\ 7\ x86_64
第四步:使用cd命令,切換到Packages軟件包中
# cd Packages
第五步:查詢我們要安裝的軟件包
# ls |grep firefox
firefox-60.2.2-1.el7.centos.x86_64.rpm
第六步:使用rpm -ivh命令安裝軟件
# rpm -ivh firefox-60.2.2-1.el7.centos.x86_64.rpm
輸入firefox + Tab,讓其自動補(bǔ)全
9、rpm軟件包的升級
基本語法:
# rpm -Uvh 升級后的軟件包名稱.rpm
選項(xiàng)說明:
-U :Update,更新操作
案例:使用rpm -Uvh對firefox-60.2.2版本進(jìn)行升級
# rpm -Uvh firefox-68.4.1-1.el7.centos.x86_64.rpm
10、rpm擴(kuò)展
☆ 依賴關(guān)系
一個軟件必須先有其他軟件才能運(yùn)行,例如之前xmind啟動過程中提示的缺少DLL,稱之為依賴
WAMP(Windows + Apache + MySQL + PHP)安裝前必須先安裝VC++ 2014 x86_64,這種情況就稱之為有依賴關(guān)系。
60.8.0的firefox可以更新成功
下面我們嘗試更新到68.4.1的版本
用法:rpm -Uvh 軟件包名稱
?
# rpm -Uvh firefox-68.4.1-1.el7.centos.x86_64.rpm
使用rpm命令,安裝68.4.1版本的軟件包
錯誤提示:
error:Failed dependencies:
提示安裝68版本的firefox需要依賴nspr4.21的版本,nss的3.44的版本,這就是我們說的==依賴關(guān)系==。
為了解決依賴關(guān)系的問題,有另外一個管理工具叫做==yum==,后面我們會講到。
A軟件
A軟件 => 需要依賴B軟件
B軟件 => 需要依賴C軟件
C軟件
依賴關(guān)系的解決:使用YUM軟件包管理工具對其進(jìn)行安裝(自動解決依賴關(guān)系)
# yum install firefox -y
☆ 查看文件所屬的包名
基本語法:f = file
# rpm -qf 文件名稱
主要功能:判斷某個文件所屬的包名稱
案例:查詢/etc/ntp.conf 屬于哪個軟件包
# rpm -qf /etc/ntp.conf
ntp-4.2.6p5-28.el7.centos.x86_64
☆ 查詢軟件安裝完成后,生成了哪些文件
基本語法:l = list,顯示這個軟件安裝后生成了哪些文件
# rpm -ql 軟件名稱
案例1:查詢firefox軟件生成了哪些文件
# rpm -ql firefox
? 特別說明:軟件安裝完成后,一共生成了以下幾類文件 配置文件類:/etc目錄 程序文件本身,二進(jìn)制文件命令:/usr/bin或/usr/sbin目錄 文檔手冊:/usr/share/doc或man目錄
案例2:查詢openssh軟件生成了哪些文件
# rpm -ql openssh
11、光盤的掛載與解掛
在Linux操作系統(tǒng)中,所有的存儲設(shè)備都必須先掛載然后才能使用。
問題:為什么當(dāng)我們直接訪問/run/media/itheima/CentOS 7 x86_64就相當(dāng)于訪問光盤
答:主要原因就是因?yàn)镃entOS7的操作系統(tǒng)自動把光驅(qū)設(shè)備掛載到此目錄了,訪問這個目錄就相當(dāng)于訪問光盤。
☆ 解掛
# cd ~
# umount /run/media/itheima/CentOS\ 7\ x86_64
常見問題:當(dāng)我們執(zhí)行以上命令時,系統(tǒng)提示target is busy!
出現(xiàn)以上問題的主要原因在于我們當(dāng)前所在的目錄為掛載目錄。
☆ 掛載
# mount 設(shè)備文件 掛載目錄
提示:光驅(qū)的設(shè)備文件為/dev/sr0
案例:把光驅(qū)掛載到/mnt/cdrom目錄文章來源:http://www.zghlxwxcb.cn/news/detail-720861.html
# mkdir /mnt/cdrom
# mount /dev/sr0 /mnt/cdrom
mount: /dev/sr0 is write-protected, mounting read-only
案例:把/mnt/cdrom進(jìn)行解掛操作文章來源地址http://www.zghlxwxcb.cn/news/detail-720861.html
# cd ~
# umount /mnt/cdrom
到了這里,關(guān)于Linux自有服務(wù)與軟件包管理的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!