网站搜索

RHCSA 系列:Yum 包管理、使用 Cron 自动化任务和监控系统日志 - 第 10 部分


在本文中,我们将回顾如何在Red Hat Enterprise Linux 7中安装、更新和删除软件包。我们还将介绍如何使用 cron 自动执行任务,并将完成本指南,解释如何查找和解释系统日志文件,重点是教您为什么所有这些都是每个系统管理员的基本技能。

通过 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

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


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

另请阅读:用于管理 RHEL 7 软件包管理的 20 个 Yum 命令

好旧的普通转速

RPM(又名RPM Package Manager,或最初的RedHat Package Manager)也可用于安装或更新独立形式的软件包.rpm 软件包。

它通常与 -Uvh 标志一起使用,指示如果软件包尚不存在,则应安装该软件包;如果已安装,则应尝试更新它(-U),生成执行操作时,会显示详细输出 (-v) 和带有井号标记 (-h) 的进度条。例如,


rpm -Uvh package.rpm

rpm 的另一个典型用途是使用代码>rpm -qa(query all 的缩写)生成当前安装的软件包列表:


rpm -qa

另请阅读:在 RHEL 7 中安装软件包的 20 个 RPM 命令

使用 Cron 安排任务

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

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

Crontab 文件(通过输入 crontab -e 并按 Enter 创建)具有以下格式:

因此,如果我们想要每月第二天的2:15 am更新本地文件数据库(locate 使用它来按名称或模式查找文件),我们需要添加以下内容crontab条目:


15 02 2 * * /bin/updatedb

上面的 crontab 条目显示为“在一年中每个月的第二天凌晨 2:15 运行 /bin/updatedb,无论星期几”。我相信您已经猜到了,星号用作通配符。

添加 cron 作业后,您可以看到在 /var/spool/cron 中添加了一个名为 root 的文件,正如我们前面提到的。该文件列出了 crond 守护进程应运行的所有任务:


ls -l /var/spool/cron

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


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 am 运行 /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

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

日志非常重要,因为它们可以让您了解系统中一直在发生的情况以及过去发生的情况。它们是对 Linux 服务器进行故障排除和监控的无价工具,因此通常与 tail -f 命令 一起使用来实时显示事件发生并记录在日志中。

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


tail -f /var/log/dmesg

如果您想查看对网络服务器的访问权限,则相同:


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

概括

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

如果您有任何问题或意见,请随时使用下面的联系表给我们留言。