RHCSA 系列:Yum 包管理、使用 Cron 自动执行任务以及监控系统日志 - 第 10 部分
在本文中,我们将回顾如何在Red Hat Enterprise Linux 7中安装、更新和删除软件包。我们还将介绍如何使用cron自动执行任务,并在本指南的最后解释如何查找和解释系统日志文件,重点是教您为什么这些都是每个系统管理员必备的技能。
通过 Yum 管理软件包
要安装软件包及其所有尚未安装的依赖项,您将使用:
# yum -y install package_name(s)
其中package_name(s)代表至少一个真实的包名称。
例如,要安装httpd和mlocate(按顺序),请输入。
# 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
另请阅读: 20 个 Yum 命令来管理 RHEL 7 包管理
经典普通 RPM
RPM(又名RPM 软件包管理器,或最初为RedHat 软件包管理器)也可用于安装或更新以独立.rpm
软件包形式出现的软件包。
它通常与标志一起使用,-Uvh
以指示如果包尚不存在则应安装该包,如果包已安装则尝试更新它,并在执行操作时(-U)
生成详细输出(-v)
和带有井号的进度条。例如,(-h)
# rpm -Uvh package.rpm
rpm的另一个典型用途是使用 code>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更新本地文件数据库(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运行/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 文件系统层次结构标准,此目录包含各种日志文件,这些文件由相应的守护进程在系统运行期间写入此目录或适当的子目录(例如下图中的audit、httpd或samba ):
# ls /var/log
其他有趣的日志是dmesg(包含来自内核环缓冲区的所有消息)、secure(记录需要用户身份验证的连接尝试)、messages(系统范围的消息)和 wtmp(所有用户登录和注销的记录)。
日志非常重要,因为它们可以让您随时了解系统中正在发生的事情以及过去发生的事情。它们是排除故障和监控 Linux 服务器的宝贵工具,因此经常与日志一起使用,以tail -f command
实时显示事件发生并记录在日志中。
例如,如果您想显示与内核相关的事件,请输入以下命令:
# tail -f /var/log/dmesg
如果您想查看对 Web 服务器的访问,方法也是一样:
# tail -f /var/log/httpd/access.log
概括
如果您知道如何有效地管理软件包、安排任务以及在哪里查找有关系统当前和过去操作的信息,那么您可以放心,您不会经常遇到意外。我希望本文能帮助您学习或更新这些基本技能的知识。
如果您有任何问题或意见,请随时通过下面的联系表给我们留言。