如何从 cron 连续运行两个命令?

如何从 cron 连续运行两个命令?

我有 2 个命令需要每小时运行一次,所以我将它们放入 /etc/cron.hourly/hrcron 文件中,格式如下

command1; command2

在我看来它应该有效,但是有人知道是什么阻止了它运行吗?

我运行的是 CentOS 6.8。

答案1

文件放置在/etc/cron.hourly,中cron.daily并且cron.monthly需要是可执行文件。如果您将问题中所示的单行文本文件放入该目录中,则该文件根本无法运行,其原因与您无法从命令行将此类文件作为 shell 脚本运行的原因相同。

你想说的是:

#!/bin/sh
command1
command2

您可以用分号连接第二行和第三行,但这里根本没有必要。它是一个完整的 shell 脚本,因此您不需要以这种方式“堆叠”命令。

另外,请务必将脚本标记为可执行,否则它仍然无法运行。

如果根据您的了解,这一切对您来说似乎很奇怪crontab条目,意识到这些目录中的可执行文件通常由anacron或者run-parts,不是由cron.因此,来自的信息man 5 crontab并不真正适用于此。

答案2

最简洁的方法是创建两个文件

  • /etc/cron.hourly/file1含有command1
  • /etc/cron.hourly/file2含有command2

我不建议运行单个 cronjob,command1 && command2因为如果第一个命令失败,第二个命令将永远不会按照设计执行。

编辑:如果您需要在 command2 之前运行 command1,请使用标准/etc/crontab文件并按如下方式填写:

0 * * * *  root  command1
5 * * * *  root  command2

这将在每小时 00 分钟运行 command1,并在每小时 05 分钟运行 command2。

相关内容