6

我想实现两个具有不同执行时间的 cronjobs。一项 cron 作业用于发送电子邮件,第二项 cron 作业用于验证我的应用程序订阅。

我写一个 crontab 文件并写入两个 cronjob,如下所示:

2 * * * * path to mailCronjob mail.php
20 * * * * path to check my application's subscriptions sub.php

问题是第一个 cronjob 工作正常。邮件可以正常发送,但第二个 cronjob 无法正常工作。我尝试手动运行第二份工作,它也工作正常。

我正在使用命令将 cronjob 设置为:

crontab crontab_file

当我发出命令时crontab -l ,它还会在命令行中显示两个 cronjob。

我想问一下,我是否在这里遗漏了什么,或者我应该怎么做才能运行这些 cronjobs。

4

5 回答 5

10

事实:您可以根据需要从单个 crontab 文件中运行任意数量的 cron 作业。

事实:您还可以作为不同的用户运行不同的作业,每个用户都有自己的 crontab 文件。

建议:

1)只需调试您的第二份工作有什么问题。

2)可以是路径,也可以是权限;它很可能是环境(“cron”的环境可能与命令行中同一用户的环境不同)。

PS:

也试试这个:

于 2012-11-07T20:28:02.833 回答
2

检查拥有用户的电子邮件并查看是否已向其发送错误报告。

如果您需要成为某个用户并让该用户的环境将您的调用更改为

su - -c "/path/to/sub.php" SubScriptUser

如果您的脚本仅适用于某个目录,请使用

cd /path/to/ && ./sub.php
于 2012-11-07T20:31:45.157 回答
1

您需要在配置文件的末尾添加一个空行

于 2021-07-03T11:03:53.273 回答
1

我记得同样的问题。出于某种原因,我不得不在我的第二个 cron 作业之后按enter 。即使在第一个 cron 作业中,如果它是唯一的作业,也需要 CR/LF ( enter )。光标需要在第二行(如果有一个 cron 作业)...光标需要在第三行,如果有两个 cron 作业。我想,需要完全读取文件来解释 cron 作业命令。我只是分享这个,因为如果你不这样做,只会执行第一个作业,并且完全跳过第二个作业,除非在第二个作业结束时按下 enter。最好的问候和欢呼……测试一下,让我们知道。

于 2018-12-23T05:31:27.693 回答
0

我从来没有在一个 cron-tab 文件中执行 2 个实际的 cronjob,而是让一个 cronjob 每 15 分钟执行一次并查询数据库或查看配置文件有哪些任务要执行,也许这个概念对你有帮助。

于 2012-11-07T20:23:18.577 回答