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