自有服務(wù),即不需要用戶獨立去安裝的軟件的服務(wù),而是當(dāng)系統(tǒng)安裝好之后就可以直接使用的服務(wù)(內(nèi)置)
學(xué)習(xí)目標(biāo)
1、了解systemctl命令用途
2、掌握使用systemctl開啟,關(guān)閉,重啟服務(wù)
3、了解常見自有服務(wù)ntpd,firewalld,crond的作用
4、掌握ntpdate時間同步原理與實現(xiàn)
5、掌握防火墻的相關(guān)操作(添加和刪除簡單規(guī)則,開啟,關(guān)閉防火墻)
6、了解源碼包和二進(jìn)制包的區(qū)別
7、掌握rpm包的卸載、安裝以及更新操作
8、了解計劃任務(wù)的作用
9、掌握計劃任務(wù)的編輯
服務(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)?是因為SSH服務(wù)開機(jī)就自動運(yùn)行了。
所謂自有服務(wù),簡單來說,可以理解為Linux系統(tǒng)開機(jī)自動運(yùn)行的服務(wù)(程序)。
在Centos7之前,通過service 和 chkconfig兩個命令來管理服務(wù)
service: 負(fù)責(zé)啟動,停止服務(wù),顯示服務(wù)狀態(tài)
chkconfig: 指定服務(wù)是否開機(jī)啟動
從Centos7開始,統(tǒng)一使用systemctl來管理服務(wù), systemctl同時具有service和chkconfig命令的功能。
命令:systemctl
作用:管理服務(wù)
語法:#systemctl [選項]
選項:
list-units --type service --all:列出所有服務(wù)(包含啟動的和沒啟動的)
list-units --type service:列出所有啟動的服務(wù)
用法一:systemctl list-units --type service --all 不加具體服務(wù)名
示例代碼:
#systemctl list-units --type service --all
含義:列出所有服務(wù),包括已運(yùn)行的和沒有運(yùn)行的空格可以翻頁,q退出
用法二:systemctl list-units --type service 不加具體服務(wù)名
示例代碼:
#systemctl list-units --type service
含義:列出已運(yùn)行的服務(wù)空格可以翻頁,q退出
命令:systemctl
作用:管理服務(wù)
語法:#systemctl [選項] 服務(wù)名
選項:
status:檢查指定服務(wù)的運(yùn)行狀況
start:啟動指定服務(wù)
stop:停止指定服務(wù)
restart:重啟指定服務(wù)
reload:重新加載指定服務(wù)的配置文件(并非所有服務(wù)都支持reload,通常使用restart)
用法三:systemctl 選項 服務(wù)名
示例代碼:
#systemctl status crond
含義:查看crond服務(wù)的狀態(tài)
Active:active(running) 表示當(dāng)前crond服務(wù)是運(yùn)行狀態(tài)。
用法四:systemctl 選項 服務(wù)名
示例代碼:
#systemctl stop crond
含義:停止crond服務(wù)
Inactive,表示crond服務(wù)當(dāng)前是停止?fàn)顟B(tài)
用法五:systemctl 選項 服務(wù)名
示例代碼:
#systemctl start crond
含義:啟動crond服務(wù)
用法六:systemctl 選項 服務(wù)名
示例代碼:
#systemctl restart crond
含義:重啟crond服務(wù)
#systemctl reload crond
含義:重新加載crond服務(wù)配置文件
所謂服務(wù)持久化,就是服務(wù)在開機(jī)的時候,是否自動啟動。
命令:systemctl
作用:管理服務(wù)
語法:#systemctl [選項] 服務(wù)名
選項: enable:指定服務(wù)開機(jī)自動啟動
disable:取消服務(wù)開機(jī)自動啟動
用法七:systemctl 選項 服務(wù)名
示例代碼:
#systemctl disable crond
含義:取消crond服務(wù)開機(jī)啟動
用法八:systemctl 選項 服務(wù)名
示例代碼:
#systemctl disable crond
含義:指定crond服務(wù)開機(jī)啟動
systemctl參數(shù)總結(jié)
三、常用自有服務(wù)(ntp,firewalld,crond)
ntpd:用于同步計算機(jī)的系統(tǒng)時間的服務(wù)
firewalld:防火墻服務(wù)
|crond:計劃任務(wù)服務(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ā)貨時間是昨天的情況。
1)NTP同步服務(wù)器原理
標(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ù)器。
2)到哪里去找NPT服務(wù)器
NTP授時網(wǎng)站:http://www.ntp.org.cn/pool.php
3)時間同步操作
同步服務(wù)器時間方式有2 個:一次性同步手動同步、通過服務(wù)自動同步。
手動同步
用法一:ntpdate 時間服務(wù)器IP
示例代碼:
#ntpdate 120.25.108.11
含義:從服務(wù)器120.25.108.11同步標(biāo)準(zhǔn)網(wǎng)絡(luò)時間到服務(wù)器(120.25.108.11服務(wù)器由阿里云提供,可以從http://www.ntp.org.cn/pool.php網(wǎng)站獲取)
注意:從網(wǎng)絡(luò)同步時間,要確保自己的服務(wù)器可以訪問互聯(lián)網(wǎng)
錯誤信息:no servers can be used
含義:服務(wù)器不可用,這里的服務(wù)器是指網(wǎng)絡(luò)上的時間服務(wù)器,不可用,不代表是對方服務(wù)器有問題,也有可能是你自己的服務(wù)器網(wǎng)絡(luò)不通,無法連接到網(wǎng)絡(luò)上的時間服務(wù)器。
自動同步
用法二:啟動ntpd服務(wù),并配置為開機(jī)啟動
示例代碼:
#systemctl start ntpd
#systemctl enable ntpd
含義:啟動ntpd服務(wù),并配置為開機(jī)啟動,服務(wù)啟動后,系統(tǒng)會自動同步網(wǎng)絡(luò)時間
注意:從網(wǎng)絡(luò)同步時間,要確保自己的服務(wù)器可以訪問互聯(lián)網(wǎng)
問題1:啟動ntpd服務(wù)后,是不是時間就自動同步了?
啟動后就自動同步了
問題2:需不需要讓ntpd服務(wù),開機(jī)自動運(yùn)行?
需要
ntpd服務(wù)配置文件位置 /etc/ntp.conf
防火墻:防范一些網(wǎng)絡(luò)攻擊。有軟件防火墻、硬件防火墻之分。
防火墻選擇讓正常請求通過,從而保證網(wǎng)絡(luò)安全性。
Windows防火墻:
CentOS6x中防火墻叫做iptables
CentOS7.x 中默認(rèn)使用的防火墻是firewalld
firewalld增加了區(qū)域的概念,所謂區(qū)域是指,firewalld**預(yù)先準(zhǔn)備了幾套防火墻策略的集合**,類似于**策略的模板**,用戶可以根據(jù)需求選擇區(qū)域。
常見區(qū)域及相應(yīng)策略規(guī)則
區(qū)域 默認(rèn)策略
trusted 允許所有數(shù)據(jù)包
home 拒絕流入的流量,除非與流出的流量相關(guān),允許ssh,mdns,ippclient,amba-client,dhcpv6-client服務(wù)通過
internal 等同于home
work 拒絕流入的流量,除非與流出的流量相關(guān),允許ssh,ipp-client,dhcpv6-client服務(wù)通過
public 拒絕流入的流量,除非與流出的流量相關(guān),允許ssh,dhcpv6-client服務(wù)通過
external 拒絕流入的流量,除非與流出的流量相關(guān),允許ssh服務(wù)通過
dmz 拒絕流入的流量,除非與流出的流量相關(guān),允許ssh服務(wù)通過
block 拒絕流入的流量,除非與流出的流量相關(guān),非法流量采取拒絕操作
drop 拒絕流入的流量,除非與流出的流量相關(guān),非法流量采取丟棄操作
運(yùn)行模式:此模式下,配置的防火墻策略立即生效,但是不寫入配置文件
永久模式:此模式下,配置的防火墻策略寫入配置文件,但是需要reload重新加載才能生效。
firewall默認(rèn)采用運(yùn)行模式
1)查看,開啟和停止firewalld服務(wù)
命令:systemctl
作用:管理服務(wù)
語法:#systemctl [選項] firewalld
選項:
status:檢查指定服務(wù)的運(yùn)行狀況
start:啟動指定服務(wù)
stop:停止指定服務(wù)
restart:重啟指定服務(wù)
reload:重新加載指定服務(wù)的配置文件(并非所有服務(wù)都支持reload,通常使用restart)
使用systemctl來管理firewalld的服務(wù),具體命令前面已經(jīng)講過,只是服務(wù)名換成了firewalld,這里不再贅述。
命令:firewall-cmd
作用:管理firewall具體配置
語法:#firewall-cmd [參數(shù)選項1] ....[參數(shù)選項n]
常用選項:
①查看默認(rèn)使用的區(qū)域
用法一:firewall-cmd 選項
示例代碼:
#firewall-cmd --get-default-zone
含義:查看默認(rèn)使用區(qū)域,當(dāng)前默認(rèn)使用區(qū)域為public
②查看所有可用區(qū)域
用法二:firewall-cmd 選項
示例代碼:
#firewall-cmd --get-zones
含義:查看所有可用區(qū)域
③列出當(dāng)前使用區(qū)域配置
用法三:firewall-cmd 選項
示例代碼:
#firewall-cmd --list-all
含義:查看所有可用區(qū)域
④列出所有區(qū)域的配置
用法四:firewall-cmd 選項
示例代碼:
#firewall-cmd --list-all-zones
含義:查看所有可用區(qū)域
⑤添加允許通過的服務(wù)或端口
用法五:firewall-cmd 選項
示例代碼:
#firewall-cmd --zone=public --add-port=1024/tcp
含義:在public區(qū)域,添加允許tcp協(xié)議的1024端口通過的規(guī)則
#firewall-cmd --zone=public --add-service=ftp
含義:在public區(qū)域,添加允許ftp服務(wù)通過的規(guī)則
⑥去掉允許通過的服務(wù)或端口
用法五:firewall-cmd 選項
示例代碼:
#firewall-cmd --zone=public --remove-port=1024/tcp
含義:在public區(qū)域,去掉允許tcp協(xié)議的1024端口通過的規(guī)則
#firewall-cmd --zone=public --remove-service=ftp
含義:在public區(qū)域,去掉允許ftp服務(wù)通過的規(guī)則
⑦永久模式參數(shù)permaent
用法七:firewall-cmd 選項
示例代碼:
#firewall-cmd --permanent --zone=public --add-port=1024/tcp
含義:在public區(qū)域,使用permanent參數(shù),永久添加允許1024端口通過的規(guī)則
⑧重新加載配置reload
用法七:firewall-cmd 選項
示例代碼:
#firewall-cmd --reload
含義:重新加載配置
作用:操作系統(tǒng)不可能24 小時都有人在操作,有些時候想在指定的時間點去執(zhí)行任務(wù)(例如:每天凌晨 2 點去重新啟動Apache),此時不可能真有人每天夜里 2 點去執(zhí)行命令,這就可以交給計劃任務(wù)程序去執(zhí)行操作了。
語法:# crontab 選項
常用選項:
-l:list,列出指定用戶的計劃任務(wù)列表==
-e:edit,編輯指定用戶的計劃任務(wù)列表,簡單來說,計劃任務(wù)就是一個文件==
-u:user,指定的用戶名,如果不指定,則表示當(dāng)前用戶
-r:remove,刪除指定用戶的計劃任務(wù)列表
示例代碼:列出當(dāng)前用戶的計劃任務(wù)列表
上述的提示,代表 root 用戶沒有計劃任務(wù)需要去做。
進(jìn)入計劃任務(wù)編輯文件
打開計劃任務(wù)編輯文件后,可以在此文件中編寫我們自定義的計劃任務(wù):
計劃任務(wù)的規(guī)則語法格式,以行為單位,一行則為一個計劃:
分 時 日 月 周 需要執(zhí)行的命令
例如:0 0 * * * reboot,代表每天0時0分執(zhí)行reboot指令。
取值范圍(常識):
分:0~59
時:0~23
日:1~31
月:1~12
周:0~7,0 和 7 表示星期天
四個符號:
*:表示取值范圍中的每一個數(shù)字
-:做連續(xù)區(qū)間表達(dá)式的,要想表示1~7,則可以寫成:1-7
/:表示每多少個,例如:想每 10 分鐘一次,則可以在分的位置寫:*/10
,:表示多個取值,比如想在 1 點,2 點 6 點執(zhí)行,則可以在時的位置寫:1,2,6
特別補(bǔ)充:在Linux系統(tǒng)中,有些命令不能直接在計劃任務(wù)中使用,使用后,其也不會生效。如useradd命令。如果想讓其生效必須使用完整路徑。
問題:如何查詢一個命令的真實路徑在哪個位置?
答:使用whereis命令名稱
問題1:每月1、10、22 日的4:45 重啟network 服務(wù)
問題2:每周六、周日的1:10 重啟network 服務(wù)
問題3:每天18:00 至23:00 之間每隔30 分鐘重啟network 服務(wù)
問題4:每隔兩天的上午8 點到11 點的第3 和第15 分鐘執(zhí)行一次重啟
分時日月周 命令或服務(wù)
問題1:45 4 1,10,22 * * service network restart
問題2:10 1 * * 6,7 service network restart
問題3:*/30 18-23 * * * service network restart
問題4:3,15 8-11 */2 * * reboot
案例:每1 分鐘往 root 家目錄中的 readme.txt 中輸一個1,為了看到效果使用追加輸出【輸出使用echo 命令,語法:# echo 輸出的內(nèi)容】
在末行模式下輸入:wq保存并退出,使用tail -f查看readme.txt動態(tài)變化
注意:在計劃任務(wù)中,默認(rèn)最小單位就是分,不能再小了。如果需要做到秒級別則需要配合研發(fā)相關(guān)代碼。
① crontab 權(quán)限問題
crontab是任何用戶都可以創(chuàng)建的計劃任務(wù),但是超級管理員可以通過配置來設(shè)置某些用戶不允許設(shè)置計劃任務(wù) 。
黑名單配置文件位于:/etc/cron.deny里面寫用戶名,一行只能寫一個
保存退出,切換到cndws普通用戶,執(zhí)行crontab命令,如下圖所示:
白名單還有一個配置文件
/etc/cron.allow (本身不存在,自己創(chuàng)建)
注意:白名單優(yōu)先級高于黑名單,如果一個用戶同時存在兩個名單文件中,則會被默認(rèn)允許創(chuàng)建計劃任務(wù)。
② 查看計劃任務(wù)文件保存路徑
問題:計劃任務(wù)文件具體保存在哪里呢?
答:/var/spool/cron/用戶名文件中,如果使用root用戶編輯計劃任務(wù),則用戶文件名為root
③ 查看計劃任務(wù)日志信息
問題:在實際應(yīng)用中,我們?nèi)绾尾榭炊〞r任務(wù)運(yùn)行情況?
答:通過計劃任務(wù)日志,日志文件位于/var/log/cron
這是什么?
Linux下也有很多可以安裝的軟件,而這些軟件的安裝包可細(xì)分為兩種,分別是源碼包和二進(jìn)制包。
1)源碼包
源碼包就是一大堆源代碼程序,是由程序員按照特定的格式和語法編寫出來的。計算機(jī)只能識別機(jī)器語言,也就是二進(jìn)制語言,所以源碼包安裝之前需要編譯。
·編譯過程耗時較長
·大多數(shù)用戶不懂開發(fā),編譯過程中可能會有各種錯誤,用戶無力解決。
為了解決使用源碼包安裝的問題,Linux 軟件包的安裝出現(xiàn)了使用二進(jìn)制包的安裝方式。
2)二進(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)管理操作,管理分為:查詢、卸載、安裝/更新。
要想裝軟件,和windows 下一樣,先得找到安裝包:xxx.rpm軟件包的獲得方式:
a. 去官網(wǎng)去下載(http://rpm.pbone.net);
b. 不介意老版本的話,可以從光盤(或者鏡像文件)中讀取;
3.2 使用 # lsblk(list block devices)或者df -T 查看塊狀設(shè)備的信息
Name:名稱
Size:設(shè)備大小
Type:類型
MountPoint:掛載點
此界面類似于Windows 下的磁盤管理界面:
3.3 進(jìn)入/run/media/root/CentOS 7 x86_64/Packages目錄
#/run/media/root/CentOS 7 x86_64/Packages
#ls
語法:# rpm -qa | grep 軟件名稱
選項:
-q:查詢,query
-a:全部,all
示例代碼:查詢firefox瀏覽器的安裝情況,已安裝
#rpm -qa |grep firefox
示例代碼:查詢qq軟件的安裝情況,未安裝
#rpm -qa |grep qq
卸載某個軟件
語法:# rpm -e 軟件的名稱(建議寫完整的名稱,通過-qa 查詢)
案例:卸載火狐瀏覽器
#rpm -qa |grep firefox 首先查詢firefox軟件的完整名稱
firefox-45.7.0-2.el6.centos.x86_64
#rpm -e firefox-45.7.0-2.el6.centos.x86_64
卸載完成后,單擊firefox瀏覽器圖標(biāo),運(yùn)行結(jié)果如下圖所示:
命令:rpm
作用:管理rpm軟件包
語法:# rpm -ivh 軟件包完整路徑名稱
選項:
-i:install,安裝
-v:顯示進(jìn)度條
-h:表示以"#"形式顯示進(jìn)度條
示例代碼:將剛剛卸載的firefox火狐瀏覽器重新安裝(在DVD光盤1中)
用法:rpm -ivh 軟件包名稱
示例代碼:
#cd /run/media/root/CentOS\ 7\ x86_64/Packages/
進(jìn)入光盤Packages目錄,里面存放了很多rpm的安裝包
#ll |grep firefox
查看Packages目錄下,包含firefox的安裝包
#rpm -ivh firefox-60.2.2-1.el7.centos.x86_64.rpm
使用rpm命令,安裝firefox軟件包
#rpm -qa |grep firefox
查詢是否安裝完成
安裝完成后,打開firefox瀏覽器
語法:# rpm -Uvh 完整的安裝包路徑
選項:
-U:upgrade,升級
-v:表示顯示進(jìn)度條
-h:表示以#形式顯示進(jìn)度條
這里我會提供給大家firefox的高版本的安裝包
firefox-60.8.0-1.el7.centos.x86_64.rpm 這個包是用來升級的
firefox-68.4.1-1.el7.centos.x86_64.rpm
用法:rpm -Uvh 軟件包名稱
示例代碼:
#rpm -qa |grep firefox
查詢當(dāng)前firefox的版本
#ll
查看root目錄下,我們剛剛拷到虛機(jī)上的RPM安裝包的名稱
#rpm -Uvh firefox-60.8.0-1.el7.centos.x86_64.rpm
使用rpm命令,安裝60.8.0版本的軟件包
#rpm -qa |grep firefox
查詢升級后的firefox版本
一個軟件必須先有其他軟件才能運(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版本的軟件包
用法: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,后面我們會講到。
語法:# rpm -qf 需要查詢的文件路徑
選項:
-f:查詢文件所屬包
示例代碼:查詢/etc/ntp.conf 屬于哪個軟件包?
語法:# rpm -ql 需要查詢的軟件包名稱
#rpm -ql firefox
#rpm -ql openssh
特別說明:軟件安裝完成后,一共生成了以下幾類文件
配置文件類:/etc目錄
程序文件本身,二進(jìn)制文件命令:/usr/sbin目錄
文檔手冊:/usr/share/doc或man目錄
① 解掛操作
命令:umount
語法:# umount 當(dāng)前設(shè)備的掛載點(路徑)
例如:
#umount /run/media/root/CentOS\ 7\ x86_64/
② 掛載光盤
首先新建一個掛載點,然后使用mount命令進(jìn)行掛在,掛載點可以理解為就是一個空目錄
命令:mount
語法:# mount 設(shè)備文件原始地址(/dev目錄) 要掛載的位置路徑(盤符)
設(shè)備原始地址:地址統(tǒng)一都在/dev 下,然后根據(jù)大小確定具體name 值,拼湊在一起組成原
始地址,例如當(dāng)前:"/dev/sr0"
用法:mount 設(shè)備 掛載點
示例代碼:
#mkdir /mnt/dvd
新建一個目錄作為掛載點
#mount /dev/sr0 /mnt/dvd
將光驅(qū)設(shè)備/dev/sr0 掛載到 /mnt/dvd這個掛載點
#df -T
可以看到已經(jīng)成功掛載