2021-05-12 14:32:11
RHCSA 系列(十): Yum 包管理、Cron 自動任務計劃和監控系統紀錄檔
在這篇文章中,我們將回顧如何在 RHEL7 中安裝,更新和刪除軟體包。我們還將介紹如何使用 cron 進行任務自動化,並完成如何查詢和監控系統紀錄檔檔案,以及為什麼這些技能是系統管理員必備技能。
RHCSA: Yum包管理、任務計劃和系統監控 – Part 10
使用yum 管理包
要安裝一個包以及所有尚未安裝的依賴包,您可以使用:
#yum-y install package_name(s)
package_name(s) 需要是至少一個真實的軟體包名
例如,安裝 httpd 和 mlocate(按順序),輸入。
#yum-y install httpd mlocate
注意: 字元 y 表示繞過執行下載和安裝前的確認提示。如果需要提示,你可以不用它。
預設情況下,yum 將安裝與作業系統體系結構相匹配的包,除非通過在包名加入架構名。
例如,在 64 位系統上,yum install package
將安裝包的 x86_64 版本,而 yum install package.x86
(如果有的話)將安裝 32 位的。
有時,你想安裝一個包,但不知道它的確切名稱。search all
選項可以在當前啟用的軟體庫中的包名稱和包描述中搜尋它,或者search
選項可以在包名稱中搜尋。
比如,
#yum search log
將搜尋安裝的軟體庫中名字和摘要與該詞(log)類似的軟體,而
#yum search all log
也將在包描述和網址中尋找尋找相同的關鍵字。
一旦搜尋返回包列表,您可能希望在安裝前顯示一些資訊。這時 info 選項派上了用場:
#yuminfo logwatch
搜尋包資訊
您可以定期用以下命令檢查更新:
#yum check-update
上述命令將返回可以更新的所有已安裝的軟體包。在下圖所示的例子中,只有 rhel-7-server-rpms 有可用更新:
檢查包更新
然後,您可以更新該包,
#yum update rhel-7-server-rpms
如果有幾個包可以一同更新,可以使用 yum update
一次性更新所有的包。
當你知道一個可執行檔案的名稱,如 ps2pdf,但不知道那個包提供了它?你可以通過 yum whatprovides “*/[executable]”
找到:
#yum whatprovides “*/ps2pdf”
查詢檔案屬於哪個包
當刪除包時,你可以使用 yum remove Package
,很簡單吧?Yum 是一個完整而強大的包管理器。
#yum remove httpd
文字式 RPM 工具
RPM(又名 RPM 包管理器,原意是 RedHat 軟體包管理器)也可用於安裝或更新獨立的rpm
格式的軟體包。
往往使用 -Uvh
表明如果這個包沒有安裝就安裝它,如果已存在就嘗試更新。這裡-U
表示更新、-v
表示顯示詳細輸出,用-h
顯示進度條。例如
# rpm -Uvhpackage.rpm
rpm 的另一個典型的使用方法是列出所有安裝的軟體包,
# rpm -qa
查詢所有包
使用 Cron 排程任務
Linux 和 UNIX 類作業系統包括一個稱為 Cron 的工具,允許你週期性排程任務(即命令或 shell 指令碼)。cron 會每分鐘定時檢查 /var/spool/cron 目錄中有在 /etc/passwd 帳戶檔案中指定使用者名稱的檔案。
執行命令時,命令輸出是傳送到該 crontab 的所有者(或者可以在 /etc/crontab,通過 MAILTO 環境變數中指定使用者)。
crontab 檔案(可以通過鍵入 crontab -e
並按 Enter 鍵建立)的格式如下:
crontab條目
因此,如果我們想在每個月第二天上午2:15更新本地檔案資料庫(用於按名字或通配模式定位檔案),我們需要新增以下 crontab 條目:
15022**/bin/updatedb
以上的條目的意思是:”每年每月第二天的凌晨 2:15 執行 /bin/updatedb,無論是週幾”,我想你也猜到了。星號作為萬用字元。
正如我們前面所提到的,新增一個 cron 任務後,你可以看到一個名為 root 的檔案被新增在 /var/spool/cron。該檔案列出了所有的 crond 守護行程應該執行的任務:
#ls-l /var/spool/cron
檢查所有cron任務
在上圖中,顯示當前使用者的 crontab 可以使用 cat /var/spool/cron
或
# crontab -l
如果你需要在一個更精細的時間上執行的任務(例如,一天兩次或每月三次),cron 也可以做到。
例如,每個月1號和15號執行 /my/script 並將輸出匯出到 /dev/null (丟棄輸出),您可以新增如下兩個crontab 條目:
01001**/myscript > /dev/null2>&1
010015**/my/script>/dev/null2>&1
不過為了簡單,你可以將他們合併:
01001,15**/my/script>/dev/null2>&1
跟著前面的例子,我們可以在每三個月的第一天的凌晨1:30執行 /my/other/script。
300111,4,7,10*/my/other/script>/dev/null2>&1
但是當你必須每隔某分鐘、小時、天或月來重複某個任務時,你可以通過所需的頻率來劃分正確的時間。以下與前一個 crontab 條目具有相同的意義:
30011*/3 * /my/other/script>/dev/null2>&1
或者也許你需要在一個固定的頻率或系統啟動後執行某個固定的工作,你可以使用下列五個字串中的一個字串來指示你想讓你的任務計劃工作的確切時間:
@reboot僅系統啟動時執行
@yearly一年一次,類似與000011*
@monthly一月一次,類似與00001**
@weekly一週一次,類似與0000**0
@daily一天一次,類似與0000***
@hourly一小時一次,類似與00****
定位和檢視紀錄檔
系統紀錄檔存放(並輪轉)在 /var/log 目錄。根據 Linux 的檔案系統層次標準(Linux Filesystem Hierarchy Standard),這個目錄包括各種紀錄檔檔案,並包含一些必要的子目錄(如 audit、 httpd 或 samba ,如下圖),並由相應的系統守護行程操作:
#ls/var/log
Linux 紀錄檔的位置
其他感興趣的紀錄檔比如 dmesg(包括了所有核心層緩衝區的訊息),secure(記錄要求使用者認證的連線請求),messages(系統級資訊),和 wtmp(記錄了所有使用者的登入、登出)。
紀錄檔是非常重要的,它們讓你可以看到任何時刻發生在你的系統的事情,以及已經過去的事情。他們是無價的工具,可以排錯和監測一個 Linux 伺服器,通常使用 tail -f
命令來實時顯示正在發生和寫入紀錄檔的事件。
舉個例子,如果你想看你的核心相關的紀錄檔,你需要輸入如下命令:
#tail-f /var/log/dmesg
同樣的,如果你想檢視你的 Web 伺服器紀錄檔,你需要輸入如下命令:
#tail-f /var/log/httpd/access.log
總結
如果你知道如何有效的管理包、排程任務、以及知道在哪尋找系統當前和過去操作的資訊,你可以放鬆工作而不會總被嚇到。我希望這篇文章能夠幫你學習或回顧這些基礎知識。
如果你有任何問題或意見,請使用下面的表單反饋給我們。
更多YUM相關教學見以下內容:
RedHat 6.2 Linux修改yum源免費使用CentOS源 http://www.linuxidc.com/Linux/2013-07/87383.htm
設定EPEL YUM源 http://www.linuxidc.com/Linux/2012-10/71850.htm
Redhat 本地yum源設定 http://www.linuxidc.com/Linux/2012-11/75127.htm
yum的組態檔說明 http://www.linuxidc.com/Linux/2013-04/83298.htm
RedHat 6.1下安裝yum(圖文) http://www.linuxidc.com/Linux/2013-06/86535.htm
YUM 安裝及清理 http://www.linuxidc.com/Linux/2013-07/87163.htm
CentOS 6.4上搭建yum本地源 http://www.linuxidc.com/Linux/2014-07/104533.htm
via: http://www.tecmint.com/yum-package-management-cron-job-scheduling-monitoring-linux-logs/
作者:Gabriel Cánepa 譯者:xiqingongzi 校對:wxy
本文永久更新連結地址:http://www.linuxidc.com/Linux/2015-09/123569.htm
相關文章