crontab 在第一个参数之后未运行第二个参数

crontab 在第一个参数之后未运行第二个参数

所以我得到了以下 crontab 规则(它们被称为规则,对吧?)但是在 a.out 完成后,b.out 没有启动。

00 15 * * * /home/jesse/test/a.out && /home/jesse/test/b.out

这两个都是我自己用 c++ 创建的一些软件。a.out 大约需要 1.5 小时才能完成,b.out 则不到一分钟。

如果我交换它们,先交换 b,然后交换 a,它们都会运行。我检查过 a.out 在完成时是否返回 false 或 0,但 a/b 都返回 1。当我在终端中直接运行相同的命令时,两者都运行良好。这让我相信这是一个 crontab 问题。

这是怎么回事?是我的规则不正确还是运行时间太长?

答案1

Cron 应该可以毫无问题地执行此操作。但是,这&&意味着“只有当第一个命令成功退出时才执行第二个命令”。因此,如果第二个命令被忽略,则很可能第一个命令失败,或者在任何情况下都以退出状态 != 0 退出。

因此,要么修复导致第一个命令失败的原因,要么更改 crontab,以便它无论是否有效都依次运行一个命令:

00 15 * * * /home/jesse/test/a.out; /home/jesse/test/b.out

答案2

如果您有多个命令需要从一个 crontab 条目运行(尽管我建议运行 2 个 crontab 条目),您可以从 shell 脚本调用命令,然后从 crontab 调用脚本(使用脚本的完整路径)。

相关内容