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)

其中package_name(s)代表至少一个真实的软件包名称。

例如,要安装httpdmlocate(按顺序),请输入。

# yum -y install httpd mlocate

注意:上面示例中的字母y绕过了yum在执行实际下载和安装请求的程序之前呈现的确认提示。如果您愿意,可以省略它。

默认情况下,yum将安装与操作系统架构匹配的软件包,除非通过将软件包架构附加到其名称来覆盖。

例如,在64位系统上,yum install package将安装x86_64版本的软件包,而yum install package.x86(如果可用)将安装32位版本。

有时候,你想安装一个包,但不知道它的确切名称。 搜索全部搜索选项可以分别在已启用的存储库中搜索包名称和/或描述中的关键词。

例如,

# yum search log

将在已安装的存储库中搜索名称和摘要中包含“log”一词的包,而

# yum search all log

将在包描述和url字段中搜索相同的关键词。

一旦搜索返回一个包列表,您可能想在安装之前显示一些包的更多信息。这就是info选项派上用场的时候:

# yum info logwatch
Search Package Information

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

# yum check-update

上述命令将返回所有已安装包中可用更新的包。在下面的图像示例中,只有rhel-7-server-rpms有可用更新:

Check For Package Updates

然后,您可以使用以下命令更新该包:

# yum update rhel-7-server-rpms

如果有多个包可以更新,yum update将同时更新它们。

现在,当你知道一个可执行文件的名称,例如ps2pdf,但不知道哪个包提供它时,你可以使用yum whatprovides "*/[executable]"来找到:

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

现在,当涉及到删除一个包时,你可以使用yum remove package。很简单,对吧?这表明yum是一个完整而强大的软件包管理器。

# yum remove httpd

阅读还有: 20个Yum命令来管理RHEL 7的包管理

古老的纯RPM

RPM(又名RPM软件包管理器,或最初的RedHat软件包管理器)也可以用来安装或更新以独立的.rpm包形式出现的软件包。

通常用-Uvh标志一起使用,以指示如果软件包尚未安装,则应安装该软件包,或者如果已安装,则尝试更新该软件包(-U),并在执行操作时生成详细输出(-v)和带有散列标记的进度条(-h)。例如,

# rpm -Uvh package.rpm

rpm的另一个典型用途是生成当前安装的软件包列表,使用rpm -qa(缩写为查询全部):

# rpm -qa
Query All RPM Packages

阅读还有: 20个RPM命令在RHEL 7中安装软件包

使用Cron调度任务

Linux和其他类Unix操作系统包含一个名为cron的工具,它允许您按周期运行任务(即命令或shell脚本)。Cron每分钟检查/var/spool/cron目录,其中的文件名与/etc/passwd中的帐户名相同。

在执行命令时,任何输出都会发送邮件给crontab的所有者(或者发送给MAILTO环境变量中指定的用户,如果在/etc/crontab中存在的话)。

crontab -e命令创建的crontab文件具有以下格式:

Crontab Entries

因此,如果我们想要在每个月的第二天凌晨2点15分更新本地文件数据库(用于通过名称或模式查找文件),我们需要添加以下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

在上面的图像中,当前用户的crontab可以使用cat /var/spool/cron/root来显示,或者,

# crontab -l

如果你需要以更精细的方式运行任务(例如,每天两次或每月三次),cron也可以帮助你做到这一点。

例如,要在每个月的第115日运行/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文件系统层次结构标准,此目录包含杂项日志文件,这些文件由相应的守护程序在系统操作期间写入该目录或适当的子目录(如下图中的audithttpdsamba):

# ls /var/log
Linux Log Files Location

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

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

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

# 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/