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