每 3 天在 Crontab 中运行一次脚本

Cat*_*lar 6 ubuntu cron

我有一些需要每 3 天运行一次的 Perl 脚本,以下是我输入的语法,你能告诉我,这是正确的还是错误的。

30 19    * * */3   root   /var/scripts/svn_backup.pl
Run Code Online (Sandbox Code Playgroud)

use*_*517 13

*/3 在您的规范应该是错误的列中

30 19 */3 * * root /var/scripts/svn_backup.pl 
Run Code Online (Sandbox Code Playgroud)

*/3 语法与 1,4,7 ... 25,28,31 相同。请注意,有些月份它将在 31运行,而下个月它将在 1运行,因为间隔规范不换行,它们总是从序列的开头开始。在这种情况下,您的脚本会在没有所需间隔的情况下运行。

如果您需要每 3 天运行一次,那么您必须每天运行您的脚本并让它确定 3 天是否已经过去并根据需要退出/继续。

在 perl 你可以做类似的事情

if ( int (time/86400)%3 != 0)  {exit 0};
Run Code Online (Sandbox Code Playgroud)

它将基于 UNIX 时代每 3 天运行一次脚本。


qua*_*nta 11

这是错的。最后一列是星期几。您可能想要移至*/3第三列(月份中的某天):

*     *     *     *     *      command to be executed
-     -     -     -     -
|     |     |     |     |
|     |     |     |     +----- day of week (0 - 6) (Sunday=0)
|     |     |     +------- month (1 - 12)
|     |     +--------- day of month (1 - 31)
|     +----------- hour (0 - 23)
+------------- min (0 - 59)
Run Code Online (Sandbox Code Playgroud)

  • 这不会在 30 日运行,然后在 3 日再次运行吗?那么中间会有4天吗? (2认同)