首页 > 解决方案 > 如何以编程方式在 crontab 中设置 MAILTO?

问题描述

我目前正在以编程方式创建我的 crontab,如下所示:

echo "* * * * * run_some_job" | crontab -

另外,我想以编程方式设置MAILTO地址,这可能吗?也就是说,没有交互式编辑器crontab -e

标签: unixcron

解决方案


crontab 可以接受多行输入。所以,给出两行,例如这样:

> (echo "MAILTO=xxx@yyy.org"; echo "* * * * * run_some_job") | crontab -

> crontab -l
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (- installed on Fri Jan 24 16:26:20 2020)
# (Cronie version 4.2)
MAILTO=xxx@yyy.org
* * * * * run_some_job

并以编程方式(由于 unix-tag,C 示例):

#include <stdio.h>

void main()
{
    FILE* file = popen("/usr/bin/crontab -", "w");
    if (file)
    {
       fprintf(file, "MAILTO=xxx@yyy.org\n");
       fprintf(file, "10 11 * * * run_some_job\n");
       pclose(file);
    }
}

结果:

> gcc main.c
> ./a.out 
> crontab -l
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (- installed on Fri Jan 24 16:35:03 2020)
# (Cronie version 4.2)
MAILTO=xxx@yyy.org
10 11 * * * run_some_job

推荐阅读