Por*_*ine 11 networking cron logs email
为什么 cron 需要 MTA 进行日志记录?这有什么特别的好处吗?为什么它不能像大多数其他实用程序一样创建日志文件?
ilk*_*chu 19
考虑到记录数据的传统“标准”方式是syslog,其中消息中包含的元数据是“设施代码”和优先级。设施代码可用于将来自不同服务的日志流分开,以便将它们拆分为不同的日志文件等(尽管设施代码在某种程度上受到限制,因为它们具有固定的传统含义。)
syslog 没有的是一种为不同用户或从不同用户分离消息的方法,这cron
是传统多用户系统所需要的。将所有用户的 cron 作业的消息收集到一个只有系统管理员才能看到的公共日志文件中是没有用的。另一方面,电子邮件自然地提供了向不同用户发送消息的功能,因此这里是一个合乎逻辑的选择。另一种方法是让 cron 手动完成工作,并为每个用户的主目录创建日志文件,但是传统的多用户 Unix 系统会被假定有一个有效的 MTA,因此在 cron 中实现它主要是一个徒劳的运动。
当然,在现代系统上,可能还有其他选择。
Kus*_*nda 13
我认为“记录”是指存储作业的实际输出。作业的运行已经记录在 cron 登录中/var/cron/log
(路径可能因系统而异)。此日志不需要 MTA。
cron 作业以该作业所属的 crontab 的用户身份运行。
在一般情况下,无法保证该用户能够在系统上创建文件(用户可能不是交互式用户),尤其是在/var
通常创建日志的层次结构下。因此,将错误和作业的其他输出通知用户的最安全方法是收集这些信息并通过电子邮件将其发送给用户。这也将允许用户为帐户设置电子邮件重定向,以便能够查看例如他们首选位置中的错误。
如果用户想将作业的输出保存到文件中,他们可以通过 crontab 中的简单重定向来实现:
0 */2 * * * "$HOME/scripts/myscript" >"$HOME/logs/myscript.log" 2>&1
Run Code Online (Sandbox Code Playgroud)
这将"$HOME/scripts/myscript"
每隔一小时运行一次,并将所有输出保存到"$HOME/logs/myscript.log"
. 由于所有输出都被重定向,因此运行此作业不会创建电子邮件。如果没有2>&1
,错误消息仍会通过电子邮件发送。
这允许用户选择输出的位置。
归档时间: |
|
查看次数: |
1231 次 |
最近记录: |