RHCSA 系列(十): Yum 包管理、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 選項派上了用場:
# yum info 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 -Uvh package.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 條目:
15 02 2 * * /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 條目:
01 00 1 * * /myscript > /dev/null 2>&1
01 00 15 * * /my/script > /dev/null 2>&1
不過為了簡單,你可以將他們合併:
01 00 1,15 * * /my/script > /dev/null 2>&1
跟著前面的例子,我們可以在每三個月的第一天的凌晨1:30運行 /my/other/script。
30 01 1 1,4,7,10 * /my/other/script > /dev/null 2>&1
但是當你必須每隔某分鐘、小時、天或月來重複某個任務時,你可以通過所需的頻率來劃分正確的時間。以下與前一個 crontab 條目具有相同的意義:
30 01 1 */3 * /my/other/script > /dev/null 2>&1
或者也許你需要在一個固定的頻率或系統啟動後運行某個固定的工作,你可以使用下列五個字元串中的一個字元串來指示你想讓你的任務計劃工作的確切時間:
@reboot 僅系統啟動時運行
@yearly 一年一次, 類似與 00 00 1 1 *
@monthly 一月一次, 類似與 00 00 1 * *
@weekly 一周一次, 類似與 00 00 * * 0
@daily 一天一次, 類似與 00 00 * * *
@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
總結
如果你知道如何有效的管理包、調度任務、以及知道在哪尋找系統當前和過去操作的信息,你可以放鬆工作而不會總被嚇到。我希望這篇文章能夠幫你學習或回顧這些基礎知識。
如果你有任何問題或意見,請使用下面的表單反饋給我們。
via: http://www.tecmint.com/yum-package-management-cron-job-scheduling-monitoring-linux-logs/
作者:Gabriel Cánepa 譯者:xiqingongzi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive