我是否可以执行以下操作来更改 root 的 crontab 中某个特定 crontab 作业的邮件发送位置(不要发送到 root 执行 Do something 作业,只需发送到 piglover):
# Make a hambone appear
* * * * * /scripts/hambone.pl
# Eat Ham
* * * * * /scripts/manga_ham.py
OLDMAILTO=$MAILTO
MAILTO=porklover.cramble.edu
#Do something
* * * * * /scripts/chown_abrahams_niece.sh
MAILTO=$OLDMAILTO
Run Code Online (Sandbox Code Playgroud)
在传统的 cron 实现中,你不能这样做。crontab 中的变量定义是全局的,并且 cron 对所有命令使用相同的电子邮件地址。
一种解决方法是使用本地地址并根据输入重定向。
将作业的输出发送到不同地址的另一种方法是手动发送。请参阅如何将输出从一个进程传送到另一个进程,但仅在第一个进程有输出时才执行?对于各种方法。
一些现代 cron 实现,至少在 systemd 中,以不同的方式解析 crontab(感谢geedoubleya,jarauh):只有工作线以上的分配适用于该工作。因此,如果您使用的是现代 Linux 系统,则有可能做到这一点。检查系统上的文档 ( man 5 crontab
)。
您仍然无法执行您在问题中提出的建议,因为 cron 不会扩展变量赋值的右侧。MAILTO=$OLDMAILTO
设置MAILTO
为以美元符号开头的值。您需要重复旧地址。
# Make a hambone appear. Email sent to the user running the crontab.
* * * * * /scripts/hambone.pl
MAILTO=abrahams@example.com
#Do something. Email sent to abrahams@example.com
* * * * * /scripts/chown_abrahams_niece.sh
MAILTO=
# Hunt rabbits. Doesn't send email.
* * * * * /scripts/hunt.pl --rabbits
MAILTO=bob
# Eat Ham. Email sent to bob on the local machine.
* * * * * /scripts/manga_ham.py
Run Code Online (Sandbox Code Playgroud)
还要注意,MAILTO=porklover.cramble.edu
将邮件发送到porklover.cramble.edu
本地机器上的帐户。这可能不是你想要的。
归档时间: |
|
查看次数: |
13128 次 |
最近记录: |