包括应用程序 cron

包括应用程序 cron

我有 5 个 Web 应用程序。目录结构类似于以下内容:

/var
   `-  /www
            `- /domains
                      `-  /domain1
                                 `- /public_html
                                               `- /crontabs
                                                        `- /crons
                      `-  /domain2
                                 `- /public_html
                                               `- /crontabs
                                                        `- /crons
                      `-  /domain3
                                 `- /public_html
                                               `- /crontabs
                                                        `- /crons
                               .
                               .
                               .
                               .
                               .

每个应用程序都有自己的 cron 列表 [并且这些文件包含有效的语法,例如 crontab -e]。目前,由于这是一个测试和隔离的服务器,因此所有应用程序都在同一用户下运行。我知道 cron、/etc/cron.d、/etc/cron.interval(间隔 = hourly|daily|weekly)、/var/spool/crontabs/。

我的问题是:有没有 /etc/cron.d 的替代方案,但具体到用户,我只需符号链接这些 cron,它们就会被执行?我更喜欢这样的解决方案,因为这些 cron 有时会由开发人员更新。

在 #ubuntu ikonia 上,我向 google 建议如何包含 cron,我试了但找不到这样的解决方案。如果有地方可以做的话:

include /var/www/domains/*/public_html/crontabs/crons

那真是太棒了。

[编辑] 我愿意稍微改变一下 crons 文件。

答案1

根级crontabs 可以符号链接到 /etc/cron.d/ 。该文件夹中的所有内容都以 root 身份执行。root 级别的 crontab 条目可以以用户级别执行,但这是一种解决方法,超出了问题的范围。此类符号链接的示例:

# ln -s /path/to/crontab /etc/cron.d/

用户级crontab 不能通过符号链接或任何类型的直接文件管理来创建 - crontab 管理专门设计用于防止用户这样做。所有用户级 crontab必须使用“crontab”命令创建,以便所有用户级 crontab 都进行语法检查,并在同一位置进行后台处理。

幸福地,‘crontab’ 的作用不仅仅是打开编辑器。该命令将接受整个文件。例如,对于拥有 $DomainName 的用户,

$ crontab /var/www/$DomainName/public_html

因此,将用户级 crontab 添加到 webapp 启动脚本应该非常容易。

在 Ubuntu 16.04 及更新版本中,cron 作业正在慢慢被 systemd 计时器取代,但这也超出了问题的范围。

答案2

在我的 Web 服务器上,我为每个虚拟服务器指定一个 Linux 用户。每个 Linux 用户都有自己的 crontab。

相关内容