Porcupine Asked: 2019-03-11 03:31:03 +0800 CST2019-03-11 03:31:03 +0800 CST 2019-03-11 03:31:03 +0800 CST 为什么 cron 需要 MTA 进行日志记录? 772 为什么 cron 需要 MTA 进行日志记录?这有什么特别的好处吗?为什么它不能像大多数其他实用程序一样创建日志文件? networking cron 2 个回答 Voted Best Answer ilkkachu 2019-03-11T04:02:45+08:002019-03-11T04:02:45+08:00 考虑到记录数据的传统“标准”方式是syslog,其中消息中包含的元数据是“设施代码”和优先级。设施代码可用于将来自不同服务的日志流分开,以便将它们拆分为不同的日志文件等(尽管设施代码在一定程度上受到限制,因为它们具有固定的传统含义。) syslog 所没有的是一种为不同用户或来自不同用户的消息分离的方法,而这正是cron传统多用户系统所需要的。将所有用户的 cron 作业中的消息收集到一个只有系统管理员才能看到的公共日志文件中是没有用的。另一方面,电子邮件自然提供了向不同用户发送消息的功能,因此在这里它是一个合乎逻辑的选择。另一种选择是让 cron 手动完成工作,并为每个用户的主目录创建日志文件,但假设传统的多用户 Unix 系统具有工作 MTA,因此在 cron 中实现它主要是徒劳的运动。 当然,在现代系统上,可能会有其他选择。 Kusalananda 2019-03-11T03:55:00+08:002019-03-11T03:55:00+08:00 我假设“记录”是指存储作业的实际输出。作业的运行已经记录在 cron 登录中/var/cron/log(路径可能因系统而异)。此日志不需要 MTA。 cron 作业作为作业所属的 crontab 的用户运行。 在一般情况下,不能保证此用户能够在系统上创建文件(用户可能不是交互式用户),尤其是在/var通常创建日志的层次结构下。因此,通知用户错误和其他作业输出的最安全方法是收集这些并通过电子邮件将它们发送给用户。这也将允许用户为帐户设置电子邮件重定向,以便能够在他们的首选位置看到例如错误。 如果用户想要将作业的输出保存到文件中,他们可以通过 crontab 中的简单重定向来实现: 0 */2 * * * "$HOME/scripts/myscript" >"$HOME/logs/myscript.log" 2>&1 这将"$HOME/scripts/myscript"每隔一小时运行一次,每小时运行一次,并将所有输出保存到"$HOME/logs/myscript.log". 运行此作业不会创建任何电子邮件,因为所有输出都被重定向。如果没有2>&1,错误消息仍将通过电子邮件发送。 这允许用户选择输出的去向。
考虑到记录数据的传统“标准”方式是syslog,其中消息中包含的元数据是“设施代码”和优先级。设施代码可用于将来自不同服务的日志流分开,以便将它们拆分为不同的日志文件等(尽管设施代码在一定程度上受到限制,因为它们具有固定的传统含义。)
syslog 所没有的是一种为不同用户或来自不同用户的消息分离的方法,而这正是
cron
传统多用户系统所需要的。将所有用户的 cron 作业中的消息收集到一个只有系统管理员才能看到的公共日志文件中是没有用的。另一方面,电子邮件自然提供了向不同用户发送消息的功能,因此在这里它是一个合乎逻辑的选择。另一种选择是让 cron 手动完成工作,并为每个用户的主目录创建日志文件,但假设传统的多用户 Unix 系统具有工作 MTA,因此在 cron 中实现它主要是徒劳的运动。当然,在现代系统上,可能会有其他选择。
我假设“记录”是指存储作业的实际输出。作业的运行已经记录在 cron 登录中
/var/cron/log
(路径可能因系统而异)。此日志不需要 MTA。cron 作业作为作业所属的 crontab 的用户运行。
在一般情况下,不能保证此用户能够在系统上创建文件(用户可能不是交互式用户),尤其是在
/var
通常创建日志的层次结构下。因此,通知用户错误和其他作业输出的最安全方法是收集这些并通过电子邮件将它们发送给用户。这也将允许用户为帐户设置电子邮件重定向,以便能够在他们的首选位置看到例如错误。如果用户想要将作业的输出保存到文件中,他们可以通过 crontab 中的简单重定向来实现:
这将
"$HOME/scripts/myscript"
每隔一小时运行一次,每小时运行一次,并将所有输出保存到"$HOME/logs/myscript.log"
. 运行此作业不会创建任何电子邮件,因为所有输出都被重定向。如果没有2>&1
,错误消息仍将通过电子邮件发送。这允许用户选择输出的去向。