RHCSA系列:Yum软件包管理,使用Cron自动化任务和监视系统日志 – 第10部分

在本文中,我們將回顧如何者在Red Hat Enterprise Linux 7中安裝、更新和移除套件。我們還將介紹如何使用cron自動化任務,並將在本指南的結尾部分解釋如何尋找和解釋系統日誌文件,著重教導您這些技能對每個系統管理員來說都是必要的。

RHCSA: Yum Package Management, Cron Job Scheduling and Log Monitoring – Part 10

透過Yum管理套件

要以及相关依賴套件(若尚未安裝)來安裝套件,您可以使用:

# yum -y install package_name(s)

其中套件名稱(s)代表至少一個實際的套件名稱。

例如,要安裝httpdmlocate(順序不限),請打入。

# yum -y install httpd mlocate

注意:上例中的y字母會略過yum在執行要求的實例下載和安裝前的确认提示。如果您希望,可以省略它。

default,yum會根據OS架構來安裝與之相匹配的架构的套件,除非通過將套件架構添加到其名稱後來覆蓋。

例如,在64位系統上,yum install package會安裝套件的x86_64版本,而yum install package.x86(如果可用)將安裝32位的版本。

當你想安裝一個包裹但不知道它的确切名稱時,search allsearch選項可以分別在目前啟用的倉庫中尋找包裹名稱和/或描述中的一定關鍵詞。

例如,

# yum search log

將搜索已安裝的倉庫中包含log關鍵詞的包裹名稱和概要,而

# yum search all log

將也在包裹描述和url字段中尋找相同的關鍵詞。

一旦搜索返回包裹清單,您可能想在安裝之前顯示它們的更多信息。那時info選項將大有裨益:

# yum info logwatch
Search Package Information

您可以定期使用以下命令查找更新:

# yum check-update

上述命令將返回所有可用的更新 Installation Overview。在下面的圖像中展示的示例中,只有rhel-7-server-rpms有可用的更新:

Check For Package Updates

您可以使用

# yum update rhel-7-server-rpms

alone to update that package alone.yum update一次性更新所有可以更新的包裹。

那麼,當你知道一個可执行文件的名稱,比如ps2pdf,但不都知道哪个包裹提供它時該如何是好?您可以使用yum whatprovides “*/[executable]”來查找:

# yum whatprovides “*/ps2pdf”
Find Package Belongs to Which Package

當谈到移除包裹時,您可以使用yum remove package來這樣做。是不是很简单呢?這顯示了yum是一個完整而強大的包裹管理器。

# yum remove httpd

也閱讀: 20個管理RHEL 7套件管理的Yum命令

旧的单纯RPM

RPM(又名RPM套件管理器,或最初RedHat套件管理器)也可以用於安装或更新套件,當它們以独立的.rpm套件形式出现時。

它通常與-Uvh旗帜一起使用,以指示如果套件尚未存在,則應該安装它,如果已經安裝,則應該嘗試更新它(-U),在執行操作時会产生冗長的分不出文字(-v)以及带有井號的進度條(-h)。例如,

# rpm -Uvh package.rpm

Another typical use of rpm is to produce a list of currently installed packages with code>rpm -qa (short for query all):

# rpm -qa
Query All RPM Packages

也閱讀: 20個在RHEL 7中安装套件的RPM命令

使用Cron排程任務

Linux和其他類Unixlike作業系統中包含一個稱為cron的工具,它讓您能夠排程任務(即命令或shell腳本)定期執行。Cron每分鐘檢查/var/spool/cron資料夾中是否有以/etc/passwd中的帳號命名的文件。

當執行命令時,任何輸出都會以郵件發送給crontab的所有者(如果存在的話,也可以發送到/etc/crontab中的MAILTO環境變量指定的用戶)。

通過輸入crontab -e 並按下Enter鍵創建的crontab文件具有以下格式:

Crontab Entries

因此,如果我們想要在每個月的第二天的凌晨2:15更新本地文件數據庫(該數據庫由locate用於通過名稱或模式查找文件),我們需要添加以下crontab條目:

15 02 2 * * /bin/updatedb

上述crontab條目的含義是“在每個月的第二天的凌晨2:15運行/bin/updatedb”。正如你已經猜到的,星號符號被用作通配符。

在添加cron任務後,你可以看到一個名為root的文件被添加到/var/spool/cron中,正如我們之前提到的那樣。該文件列出了crond守護進程應該運行的所有任務:

# ls -l /var/spool/cron
Check All Cron Jobs

在上面的圖像中,可以使用cat /var/spool/cron/root命令或者

# crontab -l

命令來顯示當前用戶的crontab。如果你需要按更精細的時間間隔運行任務(例如,每天運行兩次或每月運行三次),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

但當您需要每隔“x”分鐘、小時、日子或月份重複某個任務時,您可以將右側的位置除以期望的頻率。以下的crontab條目與之前的完全相同:

30 01 1 */3 * /my/other/script > /dev/null 2>&1

或者,也許您需要在系統啟動後以固定的頻率運行某個任務,例如。您可以使用以下字符串來代替五個字段,以指示您希望任務運行的精確時間:

@reboot    	Run when the system boots.
@yearly    	Run once a year, same as 00 00 1 1 *.
@monthly   	Run once a month, same as 00 00 1 * *.
@weekly    	Run once a week, same as 00 00 * * 0.
@daily     	Run once a day, same as 00 00 * * *.
@hourly    	Run once an hour, same as 00 * * * *.

閱讀亦然: 在RHEL 7中排程cron任務的11個命令

尋找和查看記錄

系統記錄位於/var/log目錄內。根據Linux Filesystem Hierarchy Standard,這個目錄包含各種記錄文件,這些文件在系統運行時由相應的守候进程寫入或適宜的子目錄中(如audithttpdsamba在以下圖像中)):

# ls /var/log
Linux Log Files Location

其他有趣的日志包括dmesg(包含内核环形缓冲区中的所有消息)、secure(记录需要用户身份验证的连接尝试)、messages(系统范围的消息)和wtmp(记录所有用户登录和注销)。

日志非常重要,因为它们让您随时了解系统中正在发生的事情,以及过去发生的事情。它们代表了一个无价的工具,用于故障排除和监视Linux服务器,并且经常与tail -f command结合使用,以实时显示发生的事件并记录在日志中。

例如,如果您想显示与内核相关的事件,请键入以下命令:

# tail -f /var/log/dmesg

同样,如果您想查看对您的Web服务器的访问:

# tail -f /var/log/httpd/access.log

总结

如果您知道如何有效地管理软件包、安排任务,并且知道在哪里查找有关系统当前和过去操作的信息,那么您可以放心,不会经常遇到意外。希望本文能帮助您学习或复习这些基本技能。

如果您有任何问题或意见,请不要犹豫,使用下方的联系表格给我们留言。

Source:
https://www.tecmint.com/yum-package-management-cron-job-scheduling-monitoring-linux-logs/